diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index b8245ddda..ca1a25b72 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -17,6 +17,9 @@ jobs: python -m pip install --upgrade pip pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Install package + run: | + python -m pip install . - name: pycodestyle run: | python -m pycodestyle --ignore=E501,E701,E731 nexusparser tests diff --git a/.vscode/settings.json b/.vscode/settings.json index f345794a4..8e22afacb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { + "python.pythonPath": "/home/andrea/NOMAD/.pyenv/bin/python", "editor.rulers": [90], "editor.renderWhitespace": "all", "editor.tabSize": 4, @@ -7,22 +8,22 @@ }, "files.trimTrailingWhitespace": true, "python.linting.pylintArgs": [ - "--load-plugins=pylint_mongoengine", + "--load-plugins=pylint_mongoengine" ], "python.linting.pycodestylePath": "pycodestyle", "python.linting.pycodestyleEnabled": true, "python.linting.pycodestyleArgs": ["--ignore=E501,E701,E731"], - "python.linting.mypyEnabled": false, + "python.linting.mypyEnabled": true, "python.linting.mypyArgs": [ "--ignore-missing-imports", "--follow-imports=silent", "--no-strict-optional" ], - "python.linting.pylintEnabled": false, + "python.linting.pylintEnabled": true, "python.linting.enabled": true, "python.testing.pytestArgs": [ "tests" ], "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true -} \ No newline at end of file +} diff --git a/README.md b/README.md index 6b9f3e445..25f906366 100644 --- a/README.md +++ b/README.md @@ -7,16 +7,27 @@ the required nomad-lab pypi package requires many dependencies with specific ver that might conflict with other libraries that you have installed. This was tested with Python 3.7. +If you don't have Python 3.7 installed on your computer, follow these commands: ``` +sudo add-apt-repository ppa:deadsnakes/ppa +sudo apt install python3.7 python3-dev libpython3.7-dev python-numpy + +``` + +You can now install your virtual environment with python3.7 interpreter + +``` +mkdir +cd pip install virtualenv -virtualenv -p `which python3` .pyenv +virtualenv --python=python3.7 .pyenv source .pyenv/bin/activate ``` Simply install our pypi package with pip: ``` pip install --upgrade pip -pip install nomad-lab +pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple ``` Clone this project (or fork and then clone the fork). Go into the cloned directly and @@ -24,7 +35,9 @@ directly run the parser from there: ``` git clone https://github.com/nomad-coe/nomad-parser-nexus.git parser-nexus cd parser-nexus -python -m nexusparser tests/data/nexus.out +git submodule sync --recursive +git submodule update --init --recursive + ``` There are also a basic test framework written in [pytest](https://docs.pytest.org/en/stable/). @@ -55,14 +68,14 @@ This directory have several modules/files as following: ### **Tools** This module contains several tools that are necessary to read user-specific experimental data and parse them into NOMAD. -**1. Read_nexus** +**1. Read nexus** First go to the nexus tools directory: ``` cd nexusparser/tools ``` -The module `read_nexus.py` reads HDF5 data file (i.e it is a user-specific data file, which contains numerical and metadata about the experiment. And it is formatted in NEXUS style.) +The module `nexus.py` reads HDF5 data file (i.e it is a user-specific data file, which contains numerical and metadata about the experiment. And it is formatted in NEXUS style.) *The environmental variable called "NEXUS_DEF_PATH" should be set to the directory, which contains application definitions as XML files. If this environmental variable is not defined, then code will first clone a directory from GitHub, which contains application definitions.* @@ -71,13 +84,13 @@ To set environmental variable, you can do: export 'NEXUS_DEF_PATH'= ``` -***Testing read_nexus*** +***Testing nexus*** -Following example dataset can be used to test `read_nexus.py` module `tests/data/nexus_test_data/201805_WSe2_arpes.nxs`. This is angular resolved photoelectron spectroscopy (ARPES) dataset and it is formatted according to the [NXarpes application definition of NEXUS](https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes). Run the following command to test the `read_nexus.py` using example ARPES dataset: +Following example dataset can be used to test `nexus.py` module `tests/data/nexus_test_data/201805_WSe2_arpes.nxs`. This is angular resolved photoelectron spectroscopy (ARPES) dataset and it is formatted according to the [NXarpes application definition of NEXUS](https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes). Run the following command to test the `nexus.py` using example ARPES dataset: ``` python test_parser.py ``` -*You should get "Testing of read_nexus.py is SUCCESSFUL." message, if everything goes as expected!* +*You should get "Testing of nexus.py is SUCCESSFUL." message, if everything goes as expected!* diff --git a/nexusparser/__init__.py b/nexusparser/__init__.py index 416a61d52..c3740a8fb 100644 --- a/nexusparser/__init__.py +++ b/nexusparser/__init__.py @@ -1,3 +1,6 @@ +"""init file + +""" # # Copyright The NOMAD Authors. # @@ -15,5 +18,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # - from .parser import NexusParser diff --git a/nexusparser/__main__.py b/nexusparser/__main__.py index f380839cf..34ad47153 100644 --- a/nexusparser/__main__.py +++ b/nexusparser/__main__.py @@ -1,3 +1,6 @@ +"""main file of tools module + +""" # # Copyright The NOMAD Authors. # @@ -27,6 +30,6 @@ if __name__ == "__main__": configure_logging(console_log_level=logging.DEBUG) - archive = EntryArchive() - NexusParser().parse(sys.argv[1], archive, logging) - json.dump(archive.m_to_dict(), sys.stdout, indent=2) + ARCHIVE = EntryArchive() + NexusParser().parse(sys.argv[1], ARCHIVE, logging) + json.dump(ARCHIVE.m_to_dict(), sys.stdout, indent=2) diff --git a/nexusparser/definitions b/nexusparser/definitions index 40bd56755..2798f71ea 160000 --- a/nexusparser/definitions +++ b/nexusparser/definitions @@ -1 +1 @@ -Subproject commit 40bd56755e8e6d028e6a3b6be6489c44df81b240 +Subproject commit 2798f71ea3099c3c20a2f7dc11b05074cc8fa8e3 diff --git a/nexusparser/metainfo/__init__.py b/nexusparser/metainfo/__init__.py index a683ecdfd..83ea3639f 100644 --- a/nexusparser/metainfo/__init__.py +++ b/nexusparser/metainfo/__init__.py @@ -1,3 +1,6 @@ +"""init file + +""" # # Copyright The NOMAD Authors. # @@ -16,8 +19,3 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from nomad.metainfo import Environment - -from . import nexus - -m_env = Environment() diff --git a/nexusparser/metainfo/generate.py b/nexusparser/metainfo/generate.py deleted file mode 100644 index cb129edf3..000000000 --- a/nexusparser/metainfo/generate.py +++ /dev/null @@ -1,268 +0,0 @@ -# -# Copyright The NOMAD Authors. -# -# This file is part of NOMAD. See https://nomad-lab.eu for further info. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -''' -This module contains functionality to generate metainfo source-code from metainfo -definitions. -''' - -from re import sub -import numpy as np - -from nomad import utils -from nomad.metainfo import Definition, Package, Reference, MEnum - -logger = utils.get_logger(__name__) - - -def generate_metainfo_code(metainfo_pkg: Package, python_package_path: str): - ''' - Generates python code with metainfo definitions from the given :class:`Package`. - - Arguments: - metainfo_pkg: The metainfo package. - python_package_path: - The file path for the python module file that should be generated. - ''' - from jinja2 import Environment as JinjaEnvironment, PackageLoader, select_autoescape - import textwrap - - def format_description(description, indent=0, width=90): - paragraphs = [paragraph.strip() for paragraph in description.split('\n\n')] - - def format_paragraph(paragraph, first): - lines = textwrap.wrap(text=paragraph, width=width - indent * 4, break_on_hyphens=False, break_long_words=False) - lines = [line.replace('\\', '\\\\') for line in lines] - return textwrap.indent( - '\n'.join(lines), ' ' * 4 * indent, lambda x: not (first and x.startswith(lines[0]))) - - return '\n\n'.join([ - format_paragraph(p, i == 0) - for i, p in enumerate(paragraphs) if p != '']) - - def format_type(pkg, mi_type): - if isinstance(mi_type, np.dtype): - if mi_type == np.dtype('U'): - return 'np.dtype(\'U\')' - - return 'np.dtype(np.%s)' % mi_type - - if mi_type in [int, float, str, bool]: - return mi_type.__name__ - - if isinstance(mi_type, Reference): - if pkg == mi_type.target_section_def.m_parent: - return "Reference(SectionProxy('%s'))" % mi_type.target_section_def.name - - else: - python_module = mi_type.target_section_def.m_parent.a_legacy.python_module - return '%s.%s' % (python_module.split('.')[-1], mi_type.target_section_def.name) - - if isinstance(mi_type, MEnum): - return 'MEnum(%s)' % ', '.join(["'%s'" % item for item in mi_type]) - - return str(mi_type) - - def format_unit(unit): - return "'%s'" % unit - - def format_default(default): - if isinstance(default, bool): - return "%s" % str(default) - return "'%s'" % str(default) - - def format_definition_refs(pkg, definitions): - def format_definition_ref(definition: Definition): - return definition.name - if pkg == definition.m_parent: - return definition.name - else: - python_module = definition.m_parent.a_legacy.python_module - return '%s.%s' % (python_module.split('.')[-1], definition.name) - - return ', '.join([format_definition_ref(definition) for definition in definitions]) - - def format_package_import(pkg): - # python_module = pkg.a_legacy.python_module - # modules = python_module.split('.') - # return 'from %s import %s' % ('.'.join(modules[:-1]), modules[-1]) - return '' - - def format_aliases(pkg): - result = '' - for definition in pkg.category_definitions + pkg.section_definitions: - for alias in definition.aliases: - result += '%s = %s\n' % (alias, definition.name) - - if result != '': - return '\n\n\n%s' % result - - def sub_section_path(sub_section, level): - if level == 0: - return sub_section.name - return sub_section_path(sub_section.m_parent.nexus_parent, level - 1) + '.' + sub_section.name - - def format_quantity(pkg, quantity, indent=0, level=0): - result = '' - indent_str = indent * 4 * ' ' - inner_indent_str = (indent + 1) * 4 * ' ' - inner2_indent_str = (indent + 2) * 4 * ' ' - result += inner_indent_str + quantity.name + '= Quantity(\n' - result += inner2_indent_str + 'type=' + format_type(pkg, quantity.type) + ',\n' - result += inner2_indent_str + 'shape=' + str(quantity.shape) + ',\n' - if quantity.unit is not None: - result += inner2_indent_str + 'unit=' + format_unit(quantity.unit) + ',\n' - if quantity.description is not None: - result += inner2_indent_str + 'description=' + "'''" + '\n' + format_description(quantity.description, indent=indent + 3) + "\n" + inner2_indent_str + "''',\n" - if quantity.default is not None: - result += inner2_indent_str + 'default=' + format_default(quantity.default) + ',\n' - if len(quantity.categories) > 0: - result += inner2_indent_str + 'categories=[' + format_definition_refs(pkg, quantity.categories) + '],\n' - # if quantity.a_search == 'defined': - # result += 'a_search=Search()+\n' - result += inner_indent_str + ')\n' - return result - - def format_section(pkg, section, indent=0, level=0): - result = '' - indent_str = indent * 4 * ' ' - inner_indent_str = (indent + 1) * 4 * ' ' - inner2_indent_str = (indent + 2) * 4 * ' ' - result += indent_str + "class " + section.name + "(" + (format_definition_refs(pkg, section.base_sections) if section.extends_base_section else "MSection") + "):\n" - if section.description is not None: - result += inner_indent_str + "'''\n" - result += format_description(section.description, indent=1) + "\n" - result += inner_indent_str + "'''\n" - else: - doc = section.all_quantities["nxp_documentation"] - if doc is not None and doc.description is not None: - result += inner_indent_str + "'''\n" - result += format_description(doc.description, indent=2) + "\n" - result += inner_indent_str + "'''\n" - result += inner_indent_str + "m_def = Section(\n" - # if section.aliases | length > 0 %} - # aliases=['{{ section.aliases[0] }}'], - result += inner2_indent_str + "validate=False" - if section.extends_base_section: - result += ",\n" - result += inner2_indent_str + "extends_base_section=True,\n" - # add own nexus properties - for quantity in section.quantities: - if quantity.name.startswith("nxp_"): - if quantity.name == "nxp_deprecated": - result += inner2_indent_str + "deprecated=''' DEPRECATED:\n" - result += inner2_indent_str + quantity.default + "\n" - result += inner2_indent_str + "''',\n" - else: - if quantity.default is not None: - result += inner2_indent_str + quantity.name + "='" + str(quantity.default) + "',\n" - result += inner2_indent_str + ")\n" - # inherited case: - # result += inner_indent_str + "nxp_base = SubSection(sub_section="+sub_section.sub_section.name+".m_def,repeats=True)\n" - - # real Quantities (not nexus properties) - for quantity in section.quantities: - if not quantity.name.startswith("nxp_"): - result += format_quantity(pkg, quantity, indent, level) - - # SubSections (groups/fields/attributes) - for sub_section in section.sub_sections: - result += format_sub_section(pkg, sub_section, indent + 1, level + 1) - - return result - - def format_sub_section(pkg, sub_section, indent=0, level=0): - result = '' - indent_str = indent * 4 * ' ' - inner_indent_str = (indent + 1) * 4 * ' ' - inner2_indent_str = (indent + 2) * 4 * ' ' - # class - result += indent_str + "class " + sub_section.name + "(NXobject):\n" # "+sub_section.sub_section.name+"):\n" #NXobject):\n" - doc = sub_section.sub_section.all_quantities["nxp_documentation"] if "nxp_documentation" in sub_section.sub_section.all_quantities.keys() else None - if doc is not None and doc.description is not None: - result += inner_indent_str + "'''\n" - result += format_description(doc.description, indent=indent + 2) + "\n" - result += inner_indent_str + "'''\n" - # section definition - result += inner_indent_str + "m_def = Section(validate=False,\n" - result += inner2_indent_str + ")\n" # extends_base_section=True)\n" - # inherited section - result += inner_indent_str + "nxp_base = SubSection(sub_section=" + sub_section.sub_section.name + ".m_def,repeats=True)\n" - # real (non nexus property /nxp_/) quantities - for quantity in sub_section.sub_section.quantities: - if not quantity.name.startswith("nxp_"): - result += format_quantity(pkg, quantity, indent, level) - # additional sub_sections (nexus groups/fields/attributes) - for sub_sec in sub_section.sub_section.sub_sections: - result += format_sub_section(pkg, sub_sec, indent=indent + 1, level=level + 1) - pass - # if sub_section.sub_sections is not None: - # sub_section = sub_section.sub_sections - # format_sub_section(pkg, sub_section, indent=1) - # the actual sub_section (either a group/field/attribute) - result += indent_str + sub_section.name + ' = ' + 'SubSection(sub_section=' + sub_section.name + '.m_def,repeats=True,\n' - # also add its own nexus properties - for quantity in sub_section.sub_section.quantities: - if quantity.name.startswith("nxp_"): - if quantity.name == "nxp_enumeration": - if quantity.default is not None: - result += inner_indent_str + "enumeration=" + quantity.default + ",\n" - elif quantity.name == "nxp_deprecated": - result += inner_indent_str + "deprecated=''' DEPRECATED:\n" - result += inner_indent_str + quantity.default + "\n" - result += inner_indent_str + "''',\n" - else: - if quantity.default is not None: - result += inner_indent_str + quantity.name + "='" + str(quantity.default) + "',\n" - result += inner_indent_str + ")\n" # extends_base_section=True)\n" - - return result - - def order_categories(categories): - return sorted(categories, key=lambda c: len(c.categories)) - - import sys - sys.path.insert(0, '..') - sys.path.insert(0, '../..') - sys.path.insert(0, '.') - env = JinjaEnvironment( - loader=PackageLoader('metainfo', 'templates'), - autoescape=select_autoescape(['python'])) - env.globals.update( - order_categories=order_categories, - format_description=format_description, - format_type=format_type, - format_unit=format_unit, - format_definition_refs=format_definition_refs, - format_package_import=format_package_import, - format_aliases=format_aliases, - format_default=format_default, - format_section=format_section) - with open(python_package_path, 'wt') as f: - code = env.get_template('package.j2').render(pkg=metainfo_pkg) - code = '\n'.join([ - line.rstrip() if line.strip() != '' else '' - for line in code.split('\n')]) - f.write(code) - - -if __name__ == '__main__': - # Simple use case that re-generates the common_dft package - from nomad.datamodel.metainfo.common_dft import m_package - - generate_metainfo_code(m_package, 'nomad/datamodel/metainfo/common_dft.py') diff --git a/nexusparser/metainfo/generate_nexus.py b/nexusparser/metainfo/generate_nexus.py deleted file mode 100644 index e992b2891..000000000 --- a/nexusparser/metainfo/generate_nexus.py +++ /dev/null @@ -1,298 +0,0 @@ -# -# from nomad.metainfo.generate import generate_metainfo_code -from tools import read_nexus -import os -from lxml import etree, objectify -from nomad.metainfo.metainfo import MEnum, MSection -from generate import generate_metainfo_code -from nomad.metainfo import Package -from nomad.metainfo import Section, Quantity, SubSection -# from nomad.datamodel.metainfo.nxobject import NXobject - -# you define a quantity like this -q = Quantity( - name='machine_name', - type=str, - shape=[], - description=''' - ''') - -# you define a section like this -m = Section(name='Equipment') - -# you can add a quantity to a section like this -m.quantities.append(q) - -# you can add a sub section to a section like this -r = Section(name='Experiment') -r.sub_sections.append(SubSection(sub_section=m, name='experiment', repeats=True)) - -# we then package all section definitions -p = Package(name='Package') -p.section_definitions.append(m) -p.section_definitions.append(r) - -# we write the schema as file -# generate_metainfo_code(p, 'meta.py') - - -# TODO: -# - dimension -# - enumeration -# - units -# - minOccurs / maxOccurs - - -def parse_node(m, node, ntype, level, nxhtml, nxpath): - ''' - node - xml node - ntype - node type (e.g. group, field, attribute) - level - hierachy depth (level 1 - definition) - nxhtml - url extension to html documentation (e.g. 'applications/NXxas.html') - nxpath - list of NX nodes in hierarchy - elements are in html documentation format. E.g. ['NXxas', 'ENTRY'] - ''' - nxpath_new = nxpath.copy() - nxpath_new.append(read_nexus.get_node_name(node)) - indent = ' ' * level - print("%s%s: %s (%s) %s %s" % (indent, ntype, nxpath_new[-1], read_nexus.get_nx_class(node), 'DEPRICATED!!!' if 'deprecated' in node.attrib.keys() else '', read_nexus.get_required_string(node))) - read_nexus.print_doc(node, ntype, level, nxhtml, nxpath_new) - - # Create a sub-section - metaNode = Section(name=read_nexus.get_nx_class(node)) - if ntype == 'attribute': - sub_section_name = 'nxa_' + nxpath_new[-1] - elif ntype == 'field': - sub_section_name = 'nxf_' + nxpath_new[-1] - elif ntype == 'group': - sub_section_name = 'nxg_' + nxpath_new[-1] - else: - # error - sub_section_name = 'nx_' + nxpath_new[-1] - mss = SubSection(sub_section=metaNode, name=sub_section_name, repeats=True) - metaNode.nexus_parent = mss - # decorate with properties - decorate(metaNode, node, ntype, level, nxhtml, nxpath_new) - # add the section - m.sub_sections.append(mss) - - # fields and groups can have sub-elements - if ntype != 'attribute': - # sub-attributes - for attr in node.findall('attribute'): - parse_node(metaNode, attr, 'attribute', level + 1, nxhtml, nxpath_new) - - # groups can have sub-groups and sub-fields, too - if ntype != 'field': - # sub-fields - for field in node.findall('field'): - parse_node(metaNode, field, 'field', level + 1, nxhtml, nxpath_new) - # sub-groups - for sub_group in node.findall('group'): - parse_node(metaNode, sub_group, 'group', level + 1, nxhtml, nxpath_new) - - -nxa_props = [] -nxf_props = [] -nxg_props = [] - - -def decorate(metaNode, node, ntype, level, nxhtml, nxpath): - ''' - decoreates a metainfo node (Section, Quantity) by nx metainfo - ''' - # add inherited nx properties (e.g. type, minOccurs, depricated) - for prop in node.attrib.keys(): - if "}schemaLocation" not in prop: - if ntype == 'attribute' and prop not in nxa_props: - nxa_props.append(prop) - if ntype == 'field' and prop not in nxf_props: - nxf_props.append(prop) - if ntype == 'group' and prop not in nxg_props: - nxg_props.append(prop) - q = Quantity( - name='nxp_' + prop, - type=str, - shape=[], - description=''' - ''', - default=node.attrib[prop]) - # optionality is added during decoration - if prop not in ['optional', 'recommended', 'required']: - metaNode.quantities.append(q) - # add documentation - anchor, doc = read_nexus.get_doc(node, ntype, level, nxhtml, nxpath) - q = Quantity( - name='nxp_documentation', - type=str, - shape=[], - description=('\n' + doc + '\n ' if doc is not None else ''' - ''') + anchor + " .", - default=anchor) - metaNode.quantities.append(q) - - # add derived nx properties (e.g. required) - # REQUIRED - reqStr = read_nexus.get_required_string(node) - if 'REQUIRED' in reqStr: - q = Quantity( - name='nxp_required', - type=bool, - shape=[], - description=''' - ''', - default=True) - metaNode.quantities.append(q) - if 'RECOMENDED' in reqStr: - q = Quantity( - name='nxp_recommended', - type=bool, - shape=[], - description=''' - ''', - default=True) - metaNode.quantities.append(q) - if 'OPTIONAL' in reqStr: - q = Quantity( - name='nxp_optional', - type=bool, - shape=[], - description=''' - ''', - default=True) - metaNode.quantities.append(q) - # ENUMS - (o, enums) = read_nexus.get_enums(node) - if o: - q = Quantity( - name='nxp_enumeration', - type=str, - shape=[], - description=''' - ''' + "\n Possible values:\n" + enums, - default=enums) - metaNode.quantities.append(q) - - -def parse_definition(definition, nxhtml): - ''' - definition - definition node - nxhtml - url extension to html documentation (e.g. 'applications/NXxas.html') - ''' - print('definition: %s' % (definition.attrib['name'])) - # Create a section - m = Section(name=definition.attrib['name']) - # check for base classes - if 'extends' in definition.keys(): - # try to find the proposed based class - for base in p.section_definitions: - if base.name == definition.attrib['extends']: - m.extends_base_section = True - m.base_sections = [base.section_cls.m_def] # .m_def] - break - if not m.extends_base_section: - if not definition.attrib['extends'] == 'NXobject': - print('!!! PROBLEM WITH BASE CLASS !!! %s(%s)' % (definition.attrib['name'], definition.attrib['extends'])) - m.extends_base_section = True - m.base_sections = [NXobject.m_def] - # decorate with properties - decorate(m, definition, '', 1, nxhtml, [nxhtml.replace('.html', '').split('/')[-1]]) - # parse the definition - for nodeType in ['group', 'field', 'attribute']: - for node in definition.findall(nodeType): - parse_node(m, node, nodeType, 1, nxhtml, [nxhtml.replace('.html', '').split('/')[-1]]) - # add the section - p.section_definitions.append(m) - - -def parse_file(nxdef): - ''' - Parse an NXDL definition file - - nxdef - filename (with path) under the subfolder 'definitions' - ''' - xmlparser = objectify.parse(os.environ["NEXUS_DEF_PATH"] + nxdef) - # tag-ging elements with their names - for elem in xmlparser.getiterator(): - try: - elem.tag = etree.QName(elem).localname - # print(elem.tag) - except ValueError: - print(f"Error with {elem.tag}") - # parse elements under 'definition' - root = xmlparser.getroot() - for definition in root.iter('definition'): - parse_definition(definition, nxdef.replace('nxdl.xml', 'html')) - - -def getfiles(path): - ''' - get the NXDL files in the different definition subfolders - (e.g. 'applications','base_classes','contributed_definitions') - ''' - dirs = ['base_classes', 'applications', 'contributed_definitions'] - for dir in dirs: - for file in os.listdir(path + '/' + dir): - if file.endswith('nxdl.xml'): - yield dir + '/' + file - - -p = Package(name='NEXUS') - -# add NXobject as a base class - - -class NXobject(MSection): - pass -# p.section_definitions.append(NXobject) - - -# parse_file('applications/NXmx.nxdl.xml') -for file in getfiles(os.environ["NEXUS_DEF_PATH"]): - print(file) - if 'NXtranslation.' not in file and \ - 'NXorientation.' not in file and \ - 'NXobject.' not in file: - parse_file(file) - # break - - -# sorting all sections -def compare_dependencies(i1, i2): - for i in i1.sub_sections: - if i.sub_section.name == i2.name: - return True - return False - - -list_of_sections = p.section_definitions -sorted_index = 0 -while sorted_index < len(list_of_sections): - current_index = sorted_index + 1 - while current_index < len(list_of_sections): - if compare_dependencies(list_of_sections[sorted_index], list_of_sections[current_index]): - # l[i],l[j]=l[j],l[i] - list_of_sections.append(list_of_sections[sorted_index]) - list_of_sections.__delitem__(sorted_index) - break - current_index = current_index + 1 - if current_index == len(list_of_sections): - sorted_index = sorted_index + 1 -print(list_of_sections) - - -# we write the schema as file -generate_metainfo_code(p, 'meta_nexus.py') -print('!!! meta_nexus.py is ready to be used:') -print('cp meta_nexus.py nexus.py\n') - -print('==============================================') -print('Attribute properties:') -for prop in nxa_props: - print(' - ' + prop) -print('Field properties:') -for prop in nxf_props: - print(' - ' + prop) -print('Group properties:') -for prop in nxg_props: - print(' - ' + prop) diff --git a/nexusparser/metainfo/nexus.py b/nexusparser/metainfo/nexus.py index f02f0b356..25674c350 100644 --- a/nexusparser/metainfo/nexus.py +++ b/nexusparser/metainfo/nexus.py @@ -1,3 +1,6 @@ +"""This tool is reading the xml file + +""" # # Copyright The NOMAD Authors. # @@ -16,40 +19,41 @@ # limitations under the License. # -from typing import Dict, Any -import xml.etree.ElementTree as ET -import os.path +import re import os +import os.path import sys +from typing import Dict, Any +import xml.etree.ElementTree as ET import numpy as np -import re - from nomad.utils import strip from nomad.metainfo import ( Section, Package, SubSection, Definition, Datetime, Bytes, Unit, MEnum, Quantity) from nomad.datamodel import EntryArchive -# url_regexp from https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url -url_regexp = re.compile(r'(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))') -xml_namespaces = {'nx': 'http://definition.nexusformat.org/nxdl/3.1'} +# URL_REGEXP from +# https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url +URL_REGEXP = re.compile(r'(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))') # TODO please, Sherjeel, break this line :) +XML_NAMESPACES = {'nx': 'http://definition.nexusformat.org/nxdl/3.1'} # TODO the validation still show some problems. Most notably there are a few higher # dimensional fields with non number types, which the metainfo does not support -validate = False -current_package: Package = None +VALIDATE = False +CURRENT_PACKAGE: Package = None _definition_sections: Dict[str, Section] = dict() -_xml_parent_map: Dict[ET.Element, ET.Element] = None -_nx_doc_base = 'https://manual.nexusformat.org/classes' +_XML_PARENT_MAP: Dict[ET.Element, ET.Element] = None +_NX_DOC_BASE = 'https://manual.nexusformat.org/classes' # TODO There are more types in nxdl, but they are not used by the current base classes and # application definitions. -_nx_types = { +_NX_TYPES = { 'NX_FLOAT': np.dtype(np.float64), 'NX_CHAR': str, 'NX_BOOLEAN': bool, 'NX_INT': np.dtype(np.int64), + 'NX_UINT': np.dtype(np.uint64), 'NX_NUMBER': np.dtype(np.number), 'NX_POSINT': np.dtype(np.uint64), 'NX_BINARY': Bytes, @@ -57,8 +61,12 @@ } -def to_camel_case(snake_str: str, upper: bool = False) -> str: +def to_camel_case(snake_str: str, upper: bool = False): + """Take as input a snake case variable and return a camel case one + +""" components = snake_str.split('_') + if upper: return ''.join(f'{x[0].upper()}{x[1:]}' for x in components) @@ -66,6 +74,9 @@ def to_camel_case(snake_str: str, upper: bool = False) -> str: def nx_documenation_url(xml_node: ET.Element, nx_type: str): + """Get documentation url + +""" anchor_segments = [] if nx_type != 'class': anchor_segments.append(nx_type) @@ -74,44 +85,59 @@ def nx_documenation_url(xml_node: ET.Element, nx_type: str): if 'name' in xml_node.attrib: anchor_segments.append(xml_node.attrib['name'].replace('_', '-')) - xml_node = _xml_parent_map.get(xml_node) + xml_node = _XML_PARENT_MAP.get(xml_node) anchor = "-".join([name.lower() for name in reversed(anchor_segments)]) - nx_package = current_package.name.replace('nexus_', '') - doc_url = f'{_nx_doc_base}/{nx_package}/{anchor_segments[-1]}.html#{anchor}' + nx_package = CURRENT_PACKAGE.name.replace('nexus_', '') + doc_url = f'{_NX_DOC_BASE}/{nx_package}/{anchor_segments[-1]}.html#{anchor}' return doc_url def get_or_create_section(name: str, **kwargs) -> Section: - ''' - Returns the 'existing' metainfo section for a given top-level nexus base-class name. + """Returns the 'existing' metainfo section for a given top-level nexus base-class name. This function ensures that sections for these base-classes are only created one. This allows to access the metainfo section even before it is generated from the base-class nexus definition. - ''' + +""" if name in _definition_sections: section = _definition_sections[name] section.more.update(**kwargs) return section - section = Section(validate=validate, name=name, **kwargs) - current_package.section_definitions.append(section) + section = Section(validate=VALIDATE, name=name, **kwargs) + CURRENT_PACKAGE.section_definitions.append(section) _definition_sections[section.name] = section return section def get_enum(xml_node: ET.Element): - enumeration = xml_node.find('nx:enumeration', xml_namespaces) + """Get the enumeration field from xml node + +""" + enumeration = xml_node.find('nx:enumeration', XML_NAMESPACES) if enumeration is not None: enum_values = [] - for enum_value in enumeration.findall('nx:item', xml_namespaces): + for enum_value in enumeration.findall('nx:item', XML_NAMESPACES): enum_values.append(enum_value.attrib['value']) return MEnum(*enum_values) return None +def add_common_properties_helper(base_section, definition): + """Define definition var from base_section var + +""" + if base_section.description: + definition.description = base_section.description + if base_section.deprecated: + definition.deprecated = base_section.deprecated + if base_section.more: + definition.more.update(**base_section.more) + + def add_common_properties(xml_node: ET.Element, definition: Definition): ''' Adds general metainfo definition properties (e.g. deprecated, docs, optional, ...) @@ -122,35 +148,29 @@ def add_common_properties(xml_node: ET.Element, definition: Definition): # Read properties from potential base section. Those are not inherited, but we # duplicate them for a nicer presentation - if isinstance(definition, Section) and len(definition.base_sections) > 0: + if isinstance(definition, Section) and definition.base_sections: base_section = definition.base_sections[0] - if base_section.description: - definition.description = base_section.description - if base_section.deprecated: - definition.deprecated = base_section.deprecated - if len(base_section.more) > 0: - definition.more.update(**base_section.more) - + add_common_properties_helper(base_section, definition) links = [] if nx_kind is not None: doc_url = nx_documenation_url(xml_node, nx_kind) if doc_url: links.append(doc_url) - doc = xml_node.find('nx:doc', xml_namespaces) + doc = xml_node.find('nx:doc', XML_NAMESPACES) if doc is not None and doc.text is not None: definition.description = strip(doc.text) - for match in url_regexp.findall(definition.description): + for match in URL_REGEXP.findall(definition.description): links.append(match[0]) - if len(links) > 0: + if links: definition.links = links if 'deprecated' in xml_attrs: definition.deprecated = xml_attrs['deprecated'] definition.more['nx_optional'] = xml_attrs.get( - 'optional', current_package.name == 'nexus_base_classes') + 'optional', CURRENT_PACKAGE.name == 'nexus_base_classes') if 'minOccurs' in xml_attrs: definition.more['nx_min_occurs'] = xml_attrs['minOccurs'] @@ -169,12 +189,13 @@ def add_attributes(xml_node: ET.Element, section: Section): Adds quantities for all attributes in the given nexus XML node to the given section. ''' - for attribute in xml_node.findall('nx:attribute', xml_namespaces): + for attribute in xml_node.findall('nx:attribute', XML_NAMESPACES): attribute_section = create_attribute_section(attribute, section) name = attribute.attrib["name"] max_occurs = attribute.attrib.get('maxOccurs', '0') - repeats = any(name_char.isupper() for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 + repeats = any(name_char.isupper() + for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 section.sub_sections.append(SubSection( section_def=attribute_section, nx_kind='attribute', @@ -186,7 +207,7 @@ def add_group_properties(xml_node: ET.Element, section: Section): Adds all properties that can be generated from the given nexus group XML node to the given (empty) metainfo section definition. ''' - for group in xml_node.findall('nx:group', xml_namespaces): + for group in xml_node.findall('nx:group', XML_NAMESPACES): group_section = create_group_section(group, section) section.inner_section_definitions.append(group_section) @@ -196,16 +217,18 @@ def add_group_properties(xml_node: ET.Element, section: Section): name = f'nx_group_{group.attrib["type"].replace("NX", "").upper()}' max_occurs = group.attrib.get('maxOccurs', '0') - repeats = any(name_char.isupper() for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 + repeats = any(name_char.isupper() + for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 section.sub_sections.append(SubSection( section_def=group_section, nx_kind='group', name=name, repeats=repeats)) - for field in xml_node.findall('nx:field', xml_namespaces): + for field in xml_node.findall('nx:field', XML_NAMESPACES): field_section = create_field_section(field, section) name = field.attrib["name"] max_occurs = field.attrib.get('maxOccurs', '0') - repeats = any(name_char.isupper() for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 + repeats = any(name_char.isupper() + for name_char in name) or max_occurs == 'unbounded' or int(max_occurs) > 1 section.sub_sections.append(SubSection( section_def=field_section, nx_kind='field', @@ -250,7 +273,7 @@ def create_attribute_section(xml_node: ET.Element, container: Section) -> Sectio assert 'name' in xml_attrs, 'attribute has not name' attribute_section = Section( - validate=validate, nx_kind='attribute', + validate=VALIDATE, nx_kind='attribute', name=xml_attrs['name'] + 'Attribute') add_base_section(attribute_section, container) container.inner_section_definitions.append(attribute_section) @@ -265,7 +288,7 @@ def create_attribute_section(xml_node: ET.Element, container: Section) -> Sectio enum_type = get_enum(xml_node) if enum_type is not None: - value_quantity.tyoe = enum_type + value_quantity.type = enum_type if value_quantity.type is None: value_quantity.type = str @@ -284,7 +307,7 @@ def create_field_section(xml_node: ET.Element, container: Section): assert 'name' in xml_attrs, 'field has not name' name = xml_attrs['name'] + 'Field' - field_section = Section(validate=validate, nx_kind='field', name=name) + field_section = Section(validate=VALIDATE, nx_kind='field', name=name) add_base_section(field_section, container) container.inner_section_definitions.append(field_section) @@ -299,12 +322,12 @@ def create_field_section(xml_node: ET.Element, container: Section): if 'type' in xml_attrs: nx_type = xml_attrs['type'] - if nx_type not in _nx_types: + if nx_type not in _NX_TYPES: raise NotImplementedError(f'type {nx_type} is not supported') field_section.more['nx_type'] = nx_type if value_quantity.type is None or value_quantity.type is Any or nx_type != 'NX_CHAR': - value_quantity.type = _nx_types[nx_type] + value_quantity.type = _NX_TYPES[nx_type] enum_type = get_enum(xml_node) if enum_type: @@ -321,10 +344,10 @@ def create_field_section(xml_node: ET.Element, container: Section): name='nx_unit', type=Unit, description='The specific unit for that this fields data has.')) - dimensions = xml_node.find('nx:dimensions', xml_namespaces) + dimensions = xml_node.find('nx:dimensions', XML_NAMESPACES) if dimensions is not None: shape = [] - for dimension in dimensions.findall('nx:dim', xml_namespaces): + for dimension in dimensions.findall('nx:dim', XML_NAMESPACES): dimension_value: Any = dimension.attrib.get('value', '*') try: dimension_value = int(dimension_value) @@ -344,15 +367,15 @@ def create_group_section(xml_node: ET.Element, container: Section) -> Section: Creates a metainfo section from the nexus group given as xml node. ''' xml_attrs = xml_node.attrib - type = xml_attrs['type'] + typ = xml_attrs['type'] if 'name' in xml_attrs: name = xml_attrs['name'] + 'Group' else: - name = type + 'Group' + name = typ + 'Group' - group_section = Section(validate=validate, nx_kind='group', name=name) - add_base_section(group_section, container, get_or_create_section(type)) + group_section = Section(validate=VALIDATE, nx_kind='group', name=name) + add_base_section(group_section, container, get_or_create_section(typ)) add_common_properties(xml_node, group_section) add_template_properties(xml_node, group_section) @@ -385,8 +408,8 @@ def create_package_from_nxdl_directory(path: str) -> Package: Creates a metainfo package from the given nexus directory. Will generate the respective metainfo definitions from all the nxdl files in that directory. ''' - global current_package - current_package = Package(name=f'nexus_{os.path.basename(path)}') + global CURRENT_PACKAGE + CURRENT_PACKAGE = Package(name=f'nexus_{os.path.basename(path)}') for nxdl_file in sorted(os.listdir(path)): if not nxdl_file.endswith('.nxdl.xml'): @@ -397,60 +420,60 @@ def create_package_from_nxdl_directory(path: str) -> Package: xml_tree = ET.parse(nxdl_path) xml_node = xml_tree.getroot() - global _xml_parent_map - _xml_parent_map = {child: parent for parent in xml_tree.iter() for child in parent} + global _XML_PARENT_MAP + _XML_PARENT_MAP = {child: parent for parent in xml_tree.iter() for child in parent} assert xml_node.attrib.get('type') == 'group', 'definition is not a group' - # The section gets already implicitly added to current_package by + # The section gets already implicitly added to CURRENT_PACKAGE by # get_or_create_section create_class_section(xml_node) - except Exception as e: + except Exception as exc: print(f'Exception while mapping {nxdl_file}', file=sys.stderr) - raise e + raise exc - return current_package + return CURRENT_PACKAGE -nx_definitions_path = os.path.join( +NX_DEFINITIONS_PATH = os.path.join( os.path.dirname(__file__), '../definitions') # We generate separated metainfo package for the nexus base classes and application # definitions. -base_classes = create_package_from_nxdl_directory(os.path.join(nx_definitions_path, 'base_classes')) -applications = create_package_from_nxdl_directory(os.path.join(nx_definitions_path, 'applications')) +BASE_CLASSES = create_package_from_nxdl_directory(os.path.join(NX_DEFINITIONS_PATH, 'base_classes')) +APPLICATIONS = create_package_from_nxdl_directory(os.path.join(NX_DEFINITIONS_PATH, 'applications')) # TODO there are problems generating with nx_package='contributed_definitions' -packages = (base_classes, applications) +PACKAGES = (BASE_CLASSES, APPLICATIONS) # We take the application definitions and create a common parent section that allows to # include nexus in an EntryArchive. -nexus_section = Section(validate=validate, name='Nexus') +NEXUS_SECTION = Section(validate=VALIDATE, name='Nexus') -for application_section in applications.section_definitions: # pylint: disable=not-an-iterable +for application_section in APPLICATIONS.section_definitions: # pylint: disable=not-an-iterable sub_section = SubSection( section_def=application_section, name=application_section.name.replace('NX', 'nx_application_')) - nexus_section.sub_sections.append(sub_section) + NEXUS_SECTION.sub_sections.append(sub_section) -applications.section_definitions.append(nexus_section) +APPLICATIONS.section_definitions.append(NEXUS_SECTION) -entry_archive_nexus_sub_section = SubSection(name='nexus', section_def=nexus_section) -EntryArchive.nexus = entry_archive_nexus_sub_section # type: ignore -EntryArchive.m_def.sub_sections.append(entry_archive_nexus_sub_section) +ENTRY_ARCHIVE_NEXUS_SUB_SECTION = SubSection(name='nexus', section_def=NEXUS_SECTION) +EntryArchive.nexus = ENTRY_ARCHIVE_NEXUS_SUB_SECTION # type: ignore +EntryArchive.m_def.sub_sections.append(ENTRY_ARCHIVE_NEXUS_SUB_SECTION) # We need to initialize the metainfo definitions. This is usually done automatically, # when the metainfo schema is defined though MSection Python classes. -for package in packages: +for package in PACKAGES: package.init_metainfo() # We skip the Python code generation for now and offer Python classes as variables # TODO not necessary right now, could also be done case-by-case by the nexus parser -python_module = sys.modules[__name__] -for package in packages: - for section in package.section_definitions: - setattr(python_module, section.name, section.section_cls) +PYTHON_MODULE = sys.modules[__name__] +for package in PACKAGES: + for sektion in package.section_definitions: + setattr(PYTHON_MODULE, sektion.name, sektion.section_cls) diff --git a/nexusparser/metainfo/templates/package.j2 b/nexusparser/metainfo/templates/package.j2 deleted file mode 100644 index 8351a5770..000000000 --- a/nexusparser/metainfo/templates/package.j2 +++ /dev/null @@ -1,80 +0,0 @@ -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import -from nomad.metainfo import ( # pylint: disable=unused-import - MSection, MCategory, Category, Package, Quantity, Section, SubSection, SectionProxy, - Reference, MEnum) -#from nomad.metainfo.legacy import LegacyDefinition -#from nomad.datamodel.metainfo.nxobject import NXobject - -{% for dependency in pkg.dependencies %} -{{ format_package_import(dependency) }} -{%- endfor %} - -m_package = Package( - name='{{ pkg.name }}', - description='{{ pkg.description }}') - -class NXobject(MSection): - pass - -class NXtranslation(NXobject): - pass - -class NXorientation(NXobject): - pass - -class NXcsg(NXobject): - pass - -class NX_FLOAT(NXobject): - pass - -class NX_BINARY(NXobject): - pass - -class NX_BOOLEAN(NXobject): - pass - -class NX_CHAR(NXobject): - pass - -class NX_DATE_TIME(NXobject): - pass - -class NX_INT(NXobject): - pass - -class NX_NUMBER(NXobject): - pass - -class NX_POSINT(NXobject): - pass - -class NX_UINT(NXobject): - pass - -{% for category in order_categories(pkg.category_definitions) %} - -class {{ category.name }}(MCategory): - {% if category.description is not none -%} - ''' - {{ format_description(category.description, indent=1) }} - ''' - {%- endif %} - - m_def = Category( - {%- if category.aliases | length > 0 %} - aliases=['{{ category.aliases[0] }}'], - {%- endif -%} - {%- if category.categories | length > 0 %} - categories=[{{ format_definition_refs(pkg, category.categories) }}], - {%- endif -%}) -{% endfor -%} - -{% for section in pkg.section_definitions %} -{{ format_section(pkg, section, indent=0) }} - -{%- endfor %} - -m_package.__init_metainfo__() -#{{- format_aliases(pkg) -}} diff --git a/nexusparser/metainfo/test_nexus.py b/nexusparser/metainfo/test_nexus.py deleted file mode 100644 index 737b141c7..000000000 --- a/nexusparser/metainfo/test_nexus.py +++ /dev/null @@ -1,10 +0,0 @@ -import meta_nexus - -source = meta_nexus.NXsource() -instrument = meta_nexus.NXinstrument() -entry = meta_nexus.NXentry() -arpes = meta_nexus.NXarpes() -object = meta_nexus.NXobject() -xrot = meta_nexus.NXxrot() -xbase = meta_nexus.NXxbase() -pass \ No newline at end of file diff --git a/nexusparser/parser.py b/nexusparser/parser.py index a71ea1dcc..cb678ee5c 100644 --- a/nexusparser/parser.py +++ b/nexusparser/parser.py @@ -1,3 +1,6 @@ +"""parser doc + +""" # # Copyright The NOMAD Authors. # @@ -16,24 +19,76 @@ # limitations under the License. # -import datetime -import numpy as np -import h5py - +import sys +import logging from nomad.datamodel import EntryArchive from nomad.parsing import MatchingParser +# from . import metainfo # pylint: disable=unused-import +from nexusparser.tools import nexus as read_nexus +from nexusparser.metainfo import nexus -from nomad.parsing.file_parser import TextParser, Quantity -from . import metainfo # pylint: disable=unused-import -from nexusparser.tools import read_nexus -from nexusparser.metainfo import nexus +def get_to_new_subsection(hdf_name, nxdef, nxdl_node, act_section): + """hdf_name name of the hdf group/field/attribute (None for definition) + nxdef application definition + nxdl_node node in the nxdl.xml + act_class actual class + act_section actual section in which the new entry needs to be picked up from + Note that if the new element did not exists, it is created now + return (new_class, new_section) + TODO: try to find also in the base section??? -import sys -import logging +""" + if hdf_name is None: + nomad_def_name = 'nx_application_' + nxdef[2:] + # nomad_class_name = nxdef + elif nxdl_node.tag.endswith('field'): + nxdl_f_a_name = nxdl_node.attrib['name'] if 'name' in nxdl_node.attrib else hdf_name + nomad_def_name = 'nx_field_' + nxdl_f_a_name + # nomad_class_name = self.get_nomad_classname(nxdl_f_a_name, None, "Field") + elif nxdl_node.tag.endswith('group'): + nxdl_g_name = nxdl_node.attrib['name'] \ + if 'name' in nxdl_node.attrib else nxdl_node.attrib['type'][2:].upper() + nomad_def_name = 'nx_group_' + nxdl_g_name + # nomad_class_name = self.get_nomad_classname(read_nexus.get_node_name(nxdl_node), + # nxdl_node.attrib['type'], "Group") + else: + nxdl_f_a_name = nxdl_node.attrib['name'] if 'name' in nxdl_node.attrib else hdf_name + nomad_def_name = 'nx_attribute_' + nxdl_f_a_name + # nomad_class_name = self.get_nomad_classname(nxdl_f_a_name, None, "Attribute") + + new_def = act_section.m_def.all_sub_sections[nomad_def_name] + new_class = new_def.section_def.section_cls + new_section = None + for section in act_section.m_get_sub_sections(new_def): + if hdf_name is None or (getattr(section, "nx_name") and section.nx_name == hdf_name): + new_section = section + break + if new_section is None: + act_section.m_create(new_class) + new_section = act_section.m_get_sub_section(new_def, -1) + if hdf_name is not None: + new_section.nx_name = hdf_name + return (new_class, new_section) + + +def get_value(hdf_value): + """Get value from hdl5 node + +""" + if str(hdf_value.dtype) == 'bool': + val = bool(hdf_value) + elif hdf_value.dtype.kind in 'iufc': + val = hdf_value + else: + val = str(hdf_value.astype(str)) + return val class NexusParser(MatchingParser): + """NesusParser doc + +""" def __init__(self): super().__init__( name='parsers/nexus', code_name='NEXUS', code_homepage='https://www.nexus.eu/', @@ -42,103 +97,67 @@ def __init__(self): supported_compressions=['gz', 'bz2', 'xz'] ) - def get_nomad_classname(self, xmlName, xmlType, suffix): - if suffix == 'Attribute' or suffix == 'Field' or xmlType[2:].upper() != xmlName: - name = xmlName + suffix - else: - name = xmlType + suffix - return name - - def get_to_new_SubSection(self, hdfName, nxdef, nxdlNode, act_class, act_section): - ''' - hdfName name of the hdf group/field/attribute (None for definition) - nxdef application definition - nxdlNode node in the nxdl.xml - act_class actual class - act_section actual section in which the new entry needs to be picked up from - Note that if the new element did not exists, it is created now - return (new_class, new_section) - TODO: try to find also in the base section??? - ''' - if hdfName is None: - nomad_def_name = 'nx_application_' + nxdef[2:] - nomad_class_name = nxdef - elif nxdlNode.tag.endswith('field'): - nxdl_F_A_Name = nxdlNode.attrib['name'] if 'name' in nxdlNode.attrib else hdfName - nomad_def_name = 'nx_field_' + nxdl_F_A_Name - nomad_class_name = self.get_nomad_classname(nxdl_F_A_Name, None, "Field") - elif nxdlNode.tag.endswith('group'): - nxdl_G_Name = nxdlNode.attrib['name'] if 'name' in nxdlNode.attrib else nxdlNode.attrib['type'][2:].upper() - nomad_def_name = 'nx_group_' + nxdl_G_Name - nomad_class_name = self.get_nomad_classname(read_nexus.get_node_name(nxdlNode), nxdlNode.attrib['type'], "Group") - else: - nxdl_F_A_Name = nxdlNode.attrib['name'] if 'name' in nxdlNode.attrib else hdfName - nomad_def_name = 'nx_attribute_' + nxdl_F_A_Name - nomad_class_name = self.get_nomad_classname(nxdl_F_A_Name, None, "Attribute") - - new_def = act_section.m_def.all_sub_sections[nomad_def_name] - new_class = new_def.section_def.section_cls - new_section = None - for section in act_section.m_get_sub_sections(new_def): - if hdfName is None or (getattr(section, "nx_name") and section.nx_name == hdfName): - new_section = section - break - if new_section is None: - act_section.m_create(new_class) - new_section = act_section.m_get_sub_section(new_def, -1) - if hdfName is not None: - new_section.nx_name = hdfName - return (new_class, new_section) - - def get_value(self, hdfValue): - if str(hdfValue.dtype) == 'bool': - val = bool(hdfValue) - elif hdfValue.dtype.kind in 'iufc': - val = hdfValue - else: - val = str(hdfValue.astype(str)) - return val +# def get_nomad_classname(self, xml_name, xml_type, suffix): +# """Get nomad classname from xml file + +# """ +# if suffix == 'Attribute' or suffix == 'Field' or xml_type[2:].upper() != xml_name: +# name = xml_name + suffix +# else: +# name = xml_type + suffix +# return name + + def nexus_populate(self, hdf_path, hdf_node, nxdef, nxdl_path, val): + """Walks through hdf_namelist and generate nxdl nodes - def nexus_populate(self, hdfPath, hdfNode, nxdef, nxdlPath, val): +""" print('%%%%%%%%%%%%%%') - # print(nxdef+':'+'.'.join(p.getroottree().getpath(p) for p in nxdlPath)+' - '+val[0]+ ("..." if len(val) > 1 else '')) - if nxdlPath is not None: - print((nxdef or '???') + ':' + '.'.join(p if isinstance(p, str) else read_nexus.get_node_name(p) for p in nxdlPath) + ' - ' + val[0] + ("..." if len(val) > 1 else '')) + # print(nxdef+':'+'.'.join(p.getroottree().getpath(p) for p in nxdl_path)+ + # ' - '+val[0]+ ("..." if len(val) > 1 else '')) + if nxdl_path is not None: + print((nxdef or '???') + ':' + '.'.join(p if isinstance(p, str) else + read_nexus.get_node_name(p) + for p in nxdl_path) + ' - \ +' + val[0] + ("..." if len(val) > 1 else '')) act_section = self.nxroot - hdfNamelist = hdfPath.split('/')[1:] - (act_class, act_section) = self.get_to_new_SubSection(None, nxdef, None, nexus, act_section) + hdf_namelist = hdf_path.split('/')[1:] + act_section = get_to_new_subsection(None, nxdef, None, act_section)[1] path_level = 1 - for hdfName in hdfNamelist: - nxdlNode = nxdlPath[path_level] if path_level < len(nxdlPath) else hdfName - (act_class, act_section) = self.get_to_new_SubSection(hdfName, nxdef, nxdlNode, act_class, act_section) + for hdf_name in hdf_namelist: + nxdl_node = nxdl_path[path_level] if path_level < len(nxdl_path) else hdf_name + act_section = get_to_new_subsection(hdf_name, nxdef, + nxdl_node, act_section)[1] path_level += 1 - if path_level < len(nxdlPath): - nxdlAttribute = nxdlPath[path_level] - if isinstance(nxdlAttribute, str): - # conventional attribute not in schema. Only necessary, if schema is not populated according + if path_level < len(nxdl_path): + nxdl_attribute = nxdl_path[path_level] + if isinstance(nxdl_attribute, str): + # conventional attribute not in schema. Only necessary, + # if schema is not populated according try: - if nxdlAttribute == "units": + if nxdl_attribute == "units": act_section.nx_unit = val[0] - elif nxdlAttribute == "default": - assert 1 == 2, "Quantity 'default' is not yet added by default to groups in Nomad schema" - except Exception as e: - print("Problem with storage!!!" + str(e)) + elif nxdl_attribute == "default": + assert 1 == 2, "Quantity \ +'default' is not yet added by default to groups in Nomad schema" + except Exception as exc: + print("Problem with storage!!!" + str(exc)) else: # attribute in schema - (act_class, act_section) = self.get_to_new_SubSection(nxdlAttribute.attrib['name'], nxdef, nxdlAttribute, act_class, act_section) + act_section = \ + get_to_new_subsection(nxdl_attribute.attrib['name'], nxdef, + nxdl_attribute, act_section)[1] try: act_section.nx_value = val[0] - except Exception as e: - print("Problem with storage!!!" + str(e)) + except Exception as exc: + print("Problem with storage!!!" + str(exc)) else: try: - act_section.nx_value = self.get_value(hdfNode[...]) - except Exception as e: - print("Problem with storage!!!" + str(e)) + act_section.nx_value = get_value(hdf_node[...]) + except Exception as exc: + print("Problem with storage!!!" + str(exc)) else: print('NOT IN SCHEMA - skipped') print('%%%%%%%%%%%%%%') - pass def parse(self, mainfile: str, archive: EntryArchive, logger): # Log a hello world, just to get us started. TODO remove from an actual parser. @@ -149,7 +168,7 @@ def parse(self, mainfile: str, archive: EntryArchive, logger): logger.info('Hello NeXus World') self.archive = archive - self.archive.m_create(nexus.Nexus) + self.archive.m_create(nexus.Nexus) # TODO I don't know where it comes from self.nxroot = self.archive.nexus nexus_helper = read_nexus.HandleNexus(logger, [mainfile]) diff --git a/nexusparser/tools/__init__.py b/nexusparser/tools/__init__.py index e69de29bb..792d60054 100644 --- a/nexusparser/tools/__init__.py +++ b/nexusparser/tools/__init__.py @@ -0,0 +1 @@ +# diff --git a/nexusparser/tools/dataconverter/Readme.md b/nexusparser/tools/dataconverter/Readme.md new file mode 100644 index 000000000..0f3f71a69 --- /dev/null +++ b/nexusparser/tools/dataconverter/Readme.md @@ -0,0 +1,131 @@ +# Data Converter + +Converts experimental data to Nexus/HDF5 files based on any provided NXDL. + +```console +user@box:~$ python convert.py +Usage: convert.py [OPTIONS] + +Options: + --input-file TEXT The path to the input data file to read. (Repeat for + more than one file.) + + --reader TEXT The reader to use. + --nxdl TEXT The path to the corresponding NXDL file. [required] + --output TEXT The path to the output Nexus file to be generated. + --generate-template Just print out the template generated from given NXDL + file. + + --help Show this message and exit. +``` + +#### Use with multiple input files + +```console +user@box:~$ python convert.py --nxdl nxdl --input_file metadata --input_file data.raw --input_file otherfile +``` + +## Installation + +1, Clone the repo using: `git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive`\ +2. From the root folder where the setup.py exists, run: pip install -e . + +```console +user@box:~$ git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive +user@box:~$ cd nomad-parser-nexus +user@box:~$ git checkout data-converter +user@box:~$ pip install -e . +user@box:~$ cd nexusparser/tools/dataconverter +``` + +For now, I have made sure that this tools works on this branch. + +## Writing a Reader + +This converter allows extending support to other data formats by allowing extensions called readers. The converter provides a dev platform to build a Nexus compatible reader by providing checking against a chosen Nexus Application Definition. + +Readers have to be placed in the **readers** folder in there own subfolder. The reader folder should be named with the reader's name and contain a `reader.py`.\ +For example: The reader `Example Reader` is placed under `dataconverter/readers/example/reader.py`. + +Copy and rename `readers/example/reader.py` to your own `readers/mydatareader/reader.py`. + +Then implement the reader function: + +```python +"""MyDataReader implementation for the DataConverter to convert mydata to Nexus.""" +from typing import Tuple + +from nexusparser.tools.dataconverter.readers.base_reader import BaseReader + + +class MyDataReader(BaseReader): + """MyDataReader implementation for the DataConverter to convert mydata to Nexus.""" + + def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: + """Reads data from given file and returns a filled template dictionary""" + # Fill the template + for path in file_paths: + print(path) + + template["/entry/instrument/scan"] = raw_scan_data + + return template + + +# This has to be set to allow the convert script to use this reader. Set it to "MyDataReader". +READER = MyDataReader + +``` + +The read function takes a template dictionary based on the provided NXDL file (similar to `--generate-template`) and the list of all the file paths the user provides with `--input`. +The returned dictionary should contain keys that exist in the template as defined below. The values of these keys have to be data objects to be populated in the output Nexus file. They can be lists, numpy arrays, numpy bytes, numpy floats, numpy ints. Practically you can pass any value that can be handled by `h5py` package. + +Then you can then call this using: +```console +user@box:~$ python convert.py --reader mydata --nxdl path_to_nxdl --output path_to_output.nxs +``` + +### The reader template dictionary + +Example: + +```json +{ + "/entry/instrument/source/type": "None" +} +``` + +**Units**: If there is a field defined in the NXDL, the converter expects a filled in /data/@units entry in the template dictionary corresponding to the right /data field unless it is specified as NX_UNITLESS in the NXDL. Otherwise, you will get an exception. + +```json +{ + "/ENTRY[my_entry]/INSTRUMENT[my_instrument]/SOURCE[my_source]/data": "None", + "/ENTRY[my_entry]/INSTRUMENT[my_instrument]/SOURCE[my_source]/data/@units": "Should be set to a string value" +} +``` + +In case the NXDL does not define a `name` for the group the requested data belongs to, the template dictionary will list it as `/NAME_IN_NXDL[name_in_output_nexus]` +You can choose any name you prefer instead of the suggested name. This allows the reader function to repeat groups defined in the NXDL to be outputted to the Nexus file. + +```json +{ + "/ENTRY[my_entry]/INSTRUMENT[my_instrument]/SOURCE[my_source]/type": "None" +} +``` + +For attributes defined in the NXDL, the reader template dictionary will have the assosciated key with a "@" prefix to the attributes name at the end of the path: + +```json +{ + "/entry/instrument/source/@attribute": "None" +} +``` + +(Note: Links are not supported yet.) +You can also define links by setting the value to sub dictionary object with key `link`: + +```python +template["/entry/instrument/source"] = {"link": "/path/to/source/data"} +``` + + diff --git a/nexusparser/tools/dataconverter/__init__.py b/nexusparser/tools/dataconverter/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/nexusparser/tools/dataconverter/convert.py b/nexusparser/tools/dataconverter/convert.py new file mode 100644 index 000000000..0e2413f1a --- /dev/null +++ b/nexusparser/tools/dataconverter/convert.py @@ -0,0 +1,165 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""This script runs the conversion routine using a selected reader and write out a Nexus file.""" + +import glob +import importlib.machinery +import importlib.util +import json +import logging +import os +import re +import sys +from typing import List, Tuple, Dict +import xml.etree.ElementTree as ET + +import click + +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusparser.tools.dataconverter import helpers +from nexusparser.tools.dataconverter.writer import Writer + + +logger = logging.getLogger(__name__) # pylint: disable=C0103 +logger.setLevel(logging.INFO) +logger.addHandler(logging.StreamHandler(sys.stdout)) + + +def generate_template_from_nxdl(root, template, path=None): + """Helper function to generate a template dictionary for given NXDL""" + if path is None: + root = helpers.get_first_group(root) + path = "" + + tag = helpers.remove_namespace_from_tag(root.tag) + + if tag == "doc": + return + + suffix = "" + if "name" in root.attrib: + suffix = root.attrib['name'] + elif "type" in root.attrib: + nexus_class = helpers.convert_nexus_to_caps(root.attrib['type']) + hdf5name = f"[{helpers.convert_nexus_to_suggested_name(root.attrib['type'])}]" + suffix = f"{nexus_class}{hdf5name}" + + if tag == "attribute": + suffix = f"@{suffix}" + + path = path + "/" + suffix + + # Only add fields or attributes to the dictionary + if tag in ("field", "attribute"): + template[path] = None + + # Only add units if it is a field and the the units are defined but not set to NX_UNITLESS + if tag == "field" and ("units" in root.attrib.keys() and root.attrib["units"] != "NX_UNITLESS"): + template[f"{path}/@units"] = None + + for child in root: + generate_template_from_nxdl(child, template, path) + + +def get_reader(reader_name) -> BaseReader: + """Helper function to get the reader object from it's given name""" + path_prefix = f"{os.path.dirname(__file__)}{os.sep}" if os.path.dirname(__file__) else "" + path = os.path.join(path_prefix, "readers", reader_name, "reader.py") + spec = importlib.util.spec_from_file_location("reader.py", path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) # type: ignore[attr-defined] + return module.READER # type: ignore[attr-defined] + + +def get_names_of_all_readers() -> List[str]: + """Helper function to populate a list of all available readers""" + path_prefix = f"{os.path.dirname(__file__)}{os.sep}" if os.path.dirname(__file__) else "" + files = glob.glob(os.path.join(path_prefix, "readers", "*", "reader.py")) + all_readers = [] + for file in files: + if f"{os.sep}base{os.sep}" not in file: + index_of_readers_folder_name = file.rindex(f"readers{os.sep}") + len(f"readers{os.sep}") + index_of_last_path_sep = file.rindex(os.sep) + all_readers.append(file[index_of_readers_folder_name:index_of_last_path_sep]) + return all_readers + + +@click.command() +@click.option( + '--input-file', + default=[], + multiple=True, + help='The path to the input data file to read. (Repeat for more than one file.)' +) +@click.option( + '--reader', + default='example', + type=click.Choice(get_names_of_all_readers(), case_sensitive=False), + help='The reader to use. default="example"' +) +@click.option( + '--nxdl', + default=None, + required=True, + help='The path to the corresponding NXDL file.' +) +@click.option( + '--output', + default='output.nxs', + help='The path to the output Nexus file to be generated.' +) +@click.option( + '--generate-template', + is_flag=True, + default=False, + help='Just print out the template generated from given NXDL file.' +) +def convert(input_file: Tuple[str], reader: str, nxdl: str, output: str, generate_template: bool): + """The conversion routine that takes the input parameters and calls the necessary functions.""" + # Reading in the NXDL and generating a template + nxdl_root = ET.parse(nxdl).getroot() + + template: Dict[str, str] = {} + generate_template_from_nxdl(nxdl_root, template) + if generate_template: + template.update((key, "None") for key in template) + logger.info(json.dumps(template, indent=4, sort_keys=True)) + return + + # Setting up all the input data + bulletpoint = "\n\u2022 " + print_input_files = bulletpoint.join((" ", *input_file)) + logger.info("Using %s reader to convert the given files: %s ", reader, print_input_files) + + data_reader = get_reader(reader) + nxdl_name = re.search("NX[a-z_]*(?=.nxdl.xml)", nxdl).group(0) + if nxdl_name not in data_reader.supported_nxdls: + raise Exception("The chosen NXDL isn't supported by the selected reader.") + data = data_reader().read(template=dict(template), + file_paths=input_file) # type: ignore[operator] + + helpers.validate_data_dict(template, data, nxdl_root) + + # Writing the data to output file + Writer(data=data, nxdl_path=nxdl, output_path=output).write() + + logger.info("The output file generated: %s", output) + + +if __name__ == '__main__': + convert() # pylint: disable=no-value-for-parameter diff --git a/nexusparser/tools/dataconverter/convert_routine.svg b/nexusparser/tools/dataconverter/convert_routine.svg new file mode 100644 index 000000000..b8de1ffd6 --- /dev/null +++ b/nexusparser/tools/dataconverter/convert_routine.svg @@ -0,0 +1,3 @@ + + +
convert.py
convert.py
Generate Template
Generate Template
--nxdl
--nxdl
The NXDL used for conversion.
The NXDL used for...
Select Reader
Select Reader
--reader
--reader
The reader ID sent in from the command line.
The reader ID sent...
Reader Data
Reader Data
The flat dictionary sent back by the read func.
The flat dictionar...
Call the writer function
Call the writer funct...
--input_file (1..n)
--input_file (1....
The input data file paths sent in from the command line.
The input data fil...
--output
--output
The output filename
The output filen...
Output Nexus file
Output Nexus file
Call the read func of selected reader
Call the read func of...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/nexusparser/tools/dataconverter/helpers.py b/nexusparser/tools/dataconverter/helpers.py new file mode 100644 index 000000000..bfe4ddf35 --- /dev/null +++ b/nexusparser/tools/dataconverter/helpers.py @@ -0,0 +1,238 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""Helper functions commonly used by the convert routine.""" + +from typing import Tuple, Callable +import re +import xml.etree.ElementTree as ET + +import numpy as np + +from nexusparser.tools import nexus + + +def convert_nexus_to_caps(nexus_name): + """Helper function to convert a Nexus class from to .""" + return nexus_name[2:].upper() + + +def convert_nexus_to_suggested_name(nexus_name): + """Helper function to suggest a name for a group from its Nexus class.""" + return nexus_name[2:] + + +def convert_data_converter_entry_to_nxdl_path_entry(entry) -> str: + """ + Helper function to convert data converter style entry to NXDL style entry: + ENTRY[entry] -> ENTRY + """ + regex = re.compile(r'(.*?)(?=\[)') + results = regex.search(entry) + return entry if results is None else results.group(1) + + +def convert_data_converter_dict_to_nxdl_path(path) -> str: + """ + Helper function to convert data converter style path to NXDL style path: + /ENTRY[entry]/sample -> /ENTRY/sample + """ + nxdl_path = '' + for entry in path.split('/')[1:]: + nxdl_path += '/' + convert_data_converter_entry_to_nxdl_path_entry(entry) + return nxdl_path + + +def get_name_from_data_dict_entry(entry) -> str: + """Helper function to get entry name from data converter style entry + + ENTRY[entry] -> entry + """ + regex = re.compile(r'(?<=\[)(.*?)(?=\])') + results = regex.search(entry) + return entry if results is None else results.group(1) + + +def convert_data_dict_path_to_hdf5_path(path) -> str: + """Helper function to convert data converter style path to HDF5 style path + + /ENTRY[entry]/sample -> /entry/sample + """ + hdf5path = '' + for entry in path.split('/')[1:]: + hdf5path += '/' + get_name_from_data_dict_entry(entry) + return hdf5path + + +def is_value_valid_element_of_enum(value, elem) -> Tuple[bool, list]: + """Checks whether a value has to be specific from the NXDL enumeration and returns options.""" + if elem is not None: + has_enums, enums = nexus.get_enums(elem) + if has_enums and (isinstance(value, list) or value not in enums[0:-1] or value == ""): + return False, enums + return True, [] + + +NUMPY_FLOAT_TYPES = (np.half, np.float16, np.single, np.double, np.longdouble) +NUMPY_INT_TYPES = (np.short, np.intc, np.int_) +NUMPY_UINT_TYPES = (np.ushort, np.uintc, np.uint) + +NEXUS_TO_PYTHON_DATA_TYPES = { + "ISO8601": (str), + "NX_BINARY": (bytes, bytearray, np.byte, np.ubyte, np.ndarray), + "NX_BOOLEAN": (bool, np.ndarray, np.bool_), + "NX_CHAR": (str, np.ndarray, np.chararray), + "NX_DATE_TIME": (str), + "NX_FLOAT": (float, np.ndarray, np.floating), + "NX_INT": (int, np.ndarray, np.signedinteger), + "NX_UINT": (np.ndarray, np.unsignedinteger), + "NX_NUMBER": (int, float, np.ndarray, np.signedinteger, np.unsignedinteger, np.floating), + "NX_POSINT": (int, np.ndarray, np.signedinteger), # > 0 is checked in is_valid_data_field() + "NXDL_TYPE_UNAVAILABLE": (str) # Defaults to a string if a type is not provided. +} + + +def check_all_children_for_callable(objects: list, check: Callable, *args) -> bool: + """Checks whether all objects in list are validated by given callable.""" + for obj in objects: + if not check(obj, *args): + return False + + return True + + +def is_valid_data_type(value, accepted_types): + """Checks whether the given value or its children are of an accepted type.""" + if not isinstance(value, list): + return isinstance(value, accepted_types) + + return check_all_children_for_callable(value, isinstance, accepted_types) + + +def is_positive_int(value): + """Checks whether the given value or its children are positive.""" + is_greater_than = lambda x: x.flat[0] > 0 if isinstance(x, np.ndarray) else x > 0 + + if isinstance(value, list): + return check_all_children_for_callable(value, is_greater_than) + + return value.flat[0] > 0 if isinstance(value, np.ndarray) else value > 0 + + +def is_valid_data_field(value, nxdl_type, path): + """Checks whether a given value is valid according to what is defined in the NXDL.""" + accepted_types = NEXUS_TO_PYTHON_DATA_TYPES[nxdl_type] + + if not is_valid_data_type(value, accepted_types): + raise Exception(f"The value at {path} should be of Python type: {accepted_types}" + f", as defined in the NXDL as {nxdl_type}.") + + if nxdl_type == "NX_POSINT" and not is_positive_int(value): + raise Exception(f"The value at {path} should be a positive int.") + + if nxdl_type in ("ISO8601", "NX_DATE_TIME"): + iso8601 = re.compile(r"^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:" + r"\.\d*)?)(((?!-00:00)(\+|-)(\d{2}):(\d{2})|Z){1})$") + results = iso8601.search(value) + if results is None: + raise Exception(f"The date at {path} should be a timezone aware ISO8601 " + f"formatted str. For example, 2022-01-22T12:14:12.05018Z" + f" or 2022-01-22T12:14:12.05018+00:00.") + + +def path_in_data_dict(nxdl_path: str, data: dict) -> Tuple[bool, str]: + """Checks if there is an accepted variation of path in the dictionary & returns the path.""" + for key in data.keys(): + if nxdl_path == convert_data_converter_dict_to_nxdl_path(key): + return True, key + return False, "" + + +def check_for_optional_parent(path: str, nxdl_root: ET.Element) -> str: + """Finds a parent in the branch that is optional and returns it's path or s<>.""" + parent_path = path.rsplit("/", 1)[0] + + if parent_path == "": + return "<>" + + parent_nxdl_path = convert_data_converter_dict_to_nxdl_path(parent_path) + elem = nexus.get_node_at_nxdl_path(nxdl_path=parent_nxdl_path, elem=nxdl_root) + + if nexus.get_required_string(elem) in ("<>", "<>"): + return parent_path + + return check_for_optional_parent(parent_path, nxdl_root) + + +def check_are_children_set(optional_parent_path: str, data: dict): + """Checks if any children of the given parent are set.""" + optional_parent_path = convert_data_converter_dict_to_nxdl_path(optional_parent_path) + + # Check if any of this optional parents children are given: + for key in data: + nxdl_key = convert_data_converter_dict_to_nxdl_path(key) + if optional_parent_path in nxdl_key and data[key] is not None: + return True + return False + + +def validate_data_dict(template: dict, data: dict, nxdl_root: ET.Element): + """Checks whether all the required paths from the template are returned in data dict.""" + if nxdl_root is None: + raise Exception("The NXDL file hasn't been loaded.") + + for path in template: + nxdl_path = convert_data_converter_dict_to_nxdl_path(path) + is_path_in_data_dict, renamed_path = path_in_data_dict(nxdl_path, data) + + entry_name = get_name_from_data_dict_entry(path[path.rindex('/') + 1:]) + if entry_name[0] == "@": + continue + + elem = nexus.get_node_at_nxdl_path(nxdl_path=nxdl_path, elem=nxdl_root) + + if nexus.get_required_string(elem) == "<>" and \ + (not is_path_in_data_dict or data[renamed_path] is None): + # Check if any parent is optional and none of its children are set. + optional_parent = check_for_optional_parent(path, nxdl_root) + if optional_parent == "<>" or check_are_children_set(optional_parent, data): + raise Exception(f"The data entry, {renamed_path if renamed_path else path}, " + f"is required and hasn't been supplied by the reader.") + + nxdl_type = elem.attrib["type"] if "type" in elem.attrib.keys() else "NXDL_TYPE_UNAVAILABLE" + + if is_path_in_data_dict and data[renamed_path] is not None: + is_valid_data_field(data[renamed_path], nxdl_type, renamed_path) + is_valid_enum, enums = is_value_valid_element_of_enum(data[renamed_path], elem) + if not is_valid_enum: + raise Exception(f"The value at {renamed_path} should be" + f" one of the following strings: {enums}") + + return True + + +def remove_namespace_from_tag(tag): + """Helper function to remove the namespace from an XML tag.""" + return tag.split("}")[-1] + + +def get_first_group(root): + """Helper function to get the actual first group element from the NXDL.""" + for child in root: + if remove_namespace_from_tag(child.tag) == "group": + return child + return root diff --git a/nexusparser/tools/dataconverter/readers/README.md b/nexusparser/tools/dataconverter/readers/README.md new file mode 100644 index 000000000..c82b5e28e --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/README.md @@ -0,0 +1,87 @@ +# File/Metadata and Data Format Reader Plug-ins aka ``reader`` + +The purpose of the dataconverter is to create HDF5 files with content that matches a specific NeXus application definition. +Such application definitions are useful for collecting a set of pieces of information about a specific experiment in a given +scientific field. The pieces of information are metadata and numerical data. The application definition is used to provide +these data in a format that the duties of a data delivery contract can be fulfilled: The HDF5 file, or so-called NeXus file, +delivers all those pieces of information which the application definition specifies. + +The here developed and so-called readers, are effectively software tools (plug-ins) which the converter calls to +accomplish this task for a specific set of application definition (NXDL file) plus a set of experiment/method-specific file(s). +These files can be files in a proprietary format, or of a certain format used in the respective scientific community, or +text files. Only in combination these files hold at least all the required pieces of information which the +application definition demands. + +## Project structure + +- `tbd` - Maybe further explanations are useful here. + +## Getting started + +The readers get cloned as plug-in dependencies while cloning the dataconverter. +Therefore, please follow the instructions for cloning the reader as a complete package. + +## Download the example data for testing and development purposes + +Before using your own data we strongly encourage you to download a set of open-source +test data for testing the plug-ins. There are specific jupyter-notebook examples (where??) which +detail how these tests can be executed for each of the specific readers which are listed below. + +Once you have practised with these tools how to convert these examples, feel free to +use the tools for converting your own data. You should feel invited to contact the respective +corresponding author(s) of each plug-in if you run into issues with the plug-in or feel there +is a necessity to include additional data into the NeXus file for the respective application. + +We are looking forward for learning from your experience and see the interesting use cases. + +## Current readers/plug-ins + +Details to the individual readers follow. Each reader is documented with a description +of its primary target audience, its scientific field and corresponding author. In addition, +individual support is given on how each reader can be executed. + +## apm + +`targets:` atom probe microscopy +`accepts:` NXapm.nxdl.xml +`offers:` generic reader for atom probe tomography and some related field-ion microscopy experiments. +`supports:` pos, epos, apt (the one introduced with AP Suite), rng, rrng, json +`statusquo:` single experiment + single range file + single file with additional metadata as a json document. +`contact:` Markus Kühbach (Humboldt-Universität zu Berlin) + +```sh +python converter.py --reader apm --nxdl ../../definitions/applications/NXapm.nxdl.xml --input-file 70_50_50.apt --input-file SeHoKim_R5076_44076_v02.rng --input-file ManuallyCollectedMetadata.json --output apm.test.nxs +``` + +## arpes + +`targets:` photo-emission spectroscopy +`accepts:` ?? +`offers:` ?? +`supports:` ?? +`statusquo:` ?? +`contact:` Tommaso Pincelli, Laurenz Rettig, Abeer Arora (Fritz-Haber-Institute of the Max-Planck Society) + +## em_nion + +`targets:` electron microscopy +`accepts:` NXem_nion.nxdl.xml +`offers:` initial reader for results from Nion microscopes and results achieved with nionswift software. +`supports:` npy, json +`statusquo:` single experiment and two json file(s) with additional metadata +`contact:` Markus Kühbach, Benedikt Haas, Sherjeel Shabih (Humboldt-Universität zu Berlin) + +```sh +python converter.py --reader em_nion --nxdl ../../definitions/applications/NXem_nion.nxdl.xml --input-file HAADF_01.npy --input-file HAADF_01.json --input-file HAADF_01.ELabFTW.dat --output em.test.nxs +``` + +## ellipsometry + +`targets:` ellipsometry +`accepts:` ?? +`offers:` ?? +`supports:` ?? +`statusquo:` ?? +`contact:` Carola Emminger, Tamas Haraszti, Chris Sturm (add affiliations) + + diff --git a/nexusparser/tools/dataconverter/readers/apm/reader.py b/nexusparser/tools/dataconverter/readers/apm/reader.py new file mode 100644 index 000000000..53e84c7c2 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/reader.py @@ -0,0 +1,473 @@ +#!/usr/bin/env python3 +"""Generic parser for loading atom probe microscopy data into NXapm.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import json + +from typing import Tuple + +import numpy as np + +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_reader \ + import ReadAptFileFormat +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_pos_reader \ + import ReadPosFileFormat +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_epos_reader \ + import ReadEposFileFormat +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_rng_reader \ + import ReadRngFileFormat +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_rrng_reader \ + import ReadRrngFileFormat + +# NEW ISSUE: move these globals and the assess function to utilities like + +RECON_TYPES = ['pos', 'epos', 'apt'] +RANGE_TYPES = ['rng', 'rrng'] +ELAB_TYPES = ['json'] + +INVALID_INPUT = -1 +SINGLE_RECON_SINGLE_RANGE = 0 +# each reconstruction should be stored as an own file because for commercial +# atom probe microscopes it is currently impossible to get less processed data +# from the microscopes + +# to be done: add support for SINGLE_RECON_MULTIPLE_RANGE + + +def assess_situation_with_input_files(file_paths: Tuple[str] = None) -> dict: + """Different file formats contain different types of data. + + Identify how many files of specific type Tuple contains to judge if the + input has at all a chance to populate all required fields of + the application definition. + + """ + filetype_dict = {} + for file_name in file_paths: + index = file_name.lower().rfind('.') + if index >= 0: + suffix = file_name.lower()[index + 1::] + if suffix in \ + RECON_TYPES + RANGE_TYPES + ELAB_TYPES: + if suffix in filetype_dict.keys(): + filetype_dict[suffix].append(file_name) + else: + filetype_dict[suffix] = [file_name] + # files without endings are ignored + + # identify which use case we face + filetype_counts = {} + for suffix, filenames in filetype_dict.items(): + filetype_counts[suffix] = len(filenames) + + number_of_reconstructions = 0 + number_of_rangingdefs = 0 + number_of_elab_metadata = 0 + for suffix, count in filetype_counts.items(): + if suffix in RECON_TYPES: + number_of_reconstructions += count + elif suffix in RANGE_TYPES: + number_of_rangingdefs += count + elif suffix in ELAB_TYPES: + number_of_elab_metadata += count + else: + return (filetype_dict, INVALID_INPUT) + + if number_of_reconstructions == 1 \ + and number_of_rangingdefs == 1 \ + and number_of_elab_metadata == 1: + return (filetype_dict, SINGLE_RECON_SINGLE_RANGE) + + return (filetype_dict, INVALID_INPUT) + + +def report_appdef_version(template: dict) -> dict: + """Specify which application definition version is used.""" + template["/ENTRY[entry]/definition"] = "NXapm" + template["/ENTRY[entry]/definition/@version"] = "1" + + return template + + +def extract_data_from_apt_file(file_name: str, template: dict) -> dict: + """Add those required information which a APT file has.""" + print('Extracting data from APT file: ' + file_name) + aptfile = ReadAptFileFormat(file_name) + + path_prefix = '/ENTRY[entry]/atom_probe/' + xyz = aptfile.get_named_quantity('Position') + template[path_prefix + 'reconstruction/reconstructed_positions'] \ + = xyz.value + template[path_prefix + 'reconstruction/reconstructed_positions/@units'] \ + = xyz.unit + + m_z = aptfile.get_named_quantity('Mass') + template[path_prefix + 'mass_to_charge_conversion/mass_to_charge'] \ + = m_z.value + template[path_prefix + 'mass_to_charge_conversion/mass_to_charge/@units'] \ + = m_z.unit + + # all less explored optional branches in an APT6 file can also be already be accessed via the + # aptfile.get_named_quantity function but it needs to be checked if this returns values + + return template + + +def extract_data_from_pos_file(file_name: str, template: dict) -> dict: + """Add those required information which a POS file has.""" + print('Extracting data from POS file: ' + file_name) + posfile = ReadPosFileFormat(file_name) + + path_prefix = '/ENTRY[entry]/atom_probe/' + xyz = posfile.get_reconstructed_positions() + template[path_prefix + 'reconstruction/reconstructed_positions'] \ + = xyz.value + template[path_prefix + 'reconstruction/reconstructed_positions/@units'] \ + = xyz.unit + + m_z = posfile.get_mass_to_charge() + template[path_prefix + 'mass_to_charge_conversion/mass_to_charge'] \ + = m_z.value + template[path_prefix + 'mass_to_charge_conversion/mass_to_charge/@units'] \ + = m_z.unit + + return template + + +def extract_data_from_epos_file(file_name: str, template: dict) -> dict: + """Add those required information which a POS file has.""" + print('Extracting data from EPOS file: ' + file_name) + eposfile = ReadEposFileFormat(file_name) + + path_prefix = '/ENTRY[entry]/atom_probe/' + xyz = eposfile.get_reconstructed_positions() + template[path_prefix + 'reconstruction/reconstructed_positions'] \ + = xyz.value + template[path_prefix + 'reconstruction/reconstructed_positions/@units'] \ + = xyz.unit + + m_z = eposfile.get_mass_to_charge() + template[path_prefix + 'mass_to_charge_conversion/mass_to_charge'] \ + = m_z.value + template[path_prefix + 'mass_to_charge_conversion/mass_to_charge/@units'] \ + = m_z.unit + + raw_tof = eposfile.get_raw_time_of_flight() + template[path_prefix + 'voltage_and_bowl_correction/raw_tof'] \ + = raw_tof.value + template[path_prefix + 'voltage_and_bowl_correction/raw_tof/@units'] \ + = raw_tof.unit + + # NEW ISSUE:ADD RECURSIVE LOADING OF BASE CLASSES + # NEW ISSUE:ADD HANDLING OF OPTIONALITY OF GROUPS, FIELDS, ATTRIBUTES + + # dc_voltage = eposfile.get_standing_voltage() + # template[path_prefix + 'laser_and_high_voltage_pulser/standing_voltage'] = dc_voltage.value + # template[path_prefix + 'laser_and_voltage_pulser/standing_voltage/@units'] = dc_voltage.unit + + # pu_voltage = eposfile.get_pulse_voltage() + # template[path_prefix \ + # + 'laser_and_high_voltage_pulser/pulsed_voltage'] = pu_voltage.value + # template[path_prefix \ + # + 'laser_and_high_voltage_pulser/pulsed_voltage/@units'] = pu_voltage.unit + + hit_positions = eposfile.get_hit_positions() + template[path_prefix + 'ion_impact_positions/hit_positions'] \ + = hit_positions.value + template[path_prefix + 'ion_impact_positions/hit_positions/@units'] \ + = hit_positions.unit + + # little bit more discussion with e.g. F. M. M. at MPIE required + # how to add these + # npulses = eposfile.get_number_of_pulses() + # ions_per_pulse = eposfile.get_ions_per_pulse() + + # pulser NXpulser_apm the problem is if members of these base + # classes are not specified in the application definition + # the converter currently ignores them + + return template + + +def configure_ranging_data(template: dict) -> dict: + """Remove to be renamed entries with multiple occurrences.""" + # for keyword in template.keys(): + # if keyword.find('ION[ion]') >= 0: + # del template[keyword] + + template['/ENTRY[entry]/atom_probe/ranging/maximum_number_of_atoms_per_molecular_ion'] \ + = np.uint32(32) + + return template + + +def extract_data_from_rng_file(file_name: str, template: dict) -> dict: + """Add those required information which an RNG file has.""" + # modify the template to take into account ranging + # ranging is currently not resolved recursively because + # ranging(NXprocess) is a group which has a minOccurs=1, \ + # maxOccurs="unbounded" set of possible named + # NXion members, same case for more than one operator + print('Extracting data from RNG file: ' + file_name) + rangefile = ReadRngFileFormat(file_name) + + rangefile.read() + + # ion indices are on the interval [1, 256] + assert len(rangefile.rng['ions'].keys()) <= np.iinfo(np.uint8).max + 1, \ + 'Current implementation does not support more than 256 ion types' + + template['/ENTRY[entry]/atom_probe/ranging/number_of_iontypes'] \ + = np.uint8(len(rangefile.rng['ions'].keys())) + + ion_id = 1 + path_prefix = '/ENTRY[entry]/atom_probe/ranging/peak_identification/' + for ion_obj in rangefile.rng['ions'].values(): + path_specifier = path_prefix + 'ION[ion' + str(ion_id) + ']/' + + template[path_specifier + 'ion_type'] \ + = np.uint8(ion_id) + template[path_specifier + 'isotope_vector'] \ + = ion_obj.isotope_vector.value + template[path_specifier + 'charge_state'] \ + = ion_obj.charge_state.value + template[path_specifier + 'charge_state/@units'] \ + = "" # NX_DIMENSIONLESS + template[path_specifier + 'name'] \ + = ion_obj.name.value + template[path_specifier + 'mass_to_charge_range'] \ + = ion_obj.ranges.value + template[path_specifier + 'mass_to_charge_range/@units'] \ + = ion_obj.ranges.unit + # charge_state and name is not included in rng rangefiles + + ion_id += 1 + + return template + + +def extract_data_from_rrng_file(file_name: str, template: dict) -> dict: + """Add those required information which an RRNG file has.""" + # modify the template to take into account ranging + # ranging is currently not resolved recursively because + # ranging(NXprocess) is a group which has a minOccurs=1, \ + # maxOccurs="unbounded" set of possible named + # NXion members, same case for more than one operator + print('Extracting data from RRNG file: ' + file_name) + rangefile = ReadRrngFileFormat(file_name) + + rangefile.read() + + # ion indices are on the interval [1, 256] + assert len(rangefile.rrng['ions'].keys()) <= np.iinfo(np.uint8).max + 1, \ + 'Current implementation does not support more than 256 ion types' + + template['/ENTRY[entry]/atom_probe/ranging/number_of_iontypes'] \ + = np.uint8(len(rangefile.rrng['ions'].keys())) + + ion_id = 1 + path_prefix = '/ENTRY[entry]/atom_probe/ranging/peak_identification/' + for ion_obj in rangefile.rrng['ions'].values(): + path_specifier = path_prefix + 'ION[ion' + str(ion_id) + ']/' + + template[path_specifier + 'ion_type'] \ + = np.uint8(ion_id) + template[path_specifier + 'isotope_vector'] \ + = ion_obj.isotope_vector.value + template[path_specifier + 'charge_state'] \ + = ion_obj.charge_state.value + template[path_specifier + 'charge_state/@units'] \ + = "" # NX_DIMENSIONLESS + template[path_specifier + 'name'] \ + = ion_obj.name.value + template[path_specifier + 'mass_to_charge_range'] \ + = ion_obj.ranges.value + template[path_specifier + 'mass_to_charge_range/@units'] \ + = ion_obj.ranges.unit + # charge_state and name is not included in rrng rangefiles + + ion_id += 1 + + return template + + +def extract_data_from_json_file(file_name: str, template: dict) -> dict: + """Add those required information which a JSON file has.""" + # file_name = 'R31_06365-v02.ELabFTW.12.json' + with open(file_name, 'r') as file_handle: + jsn = json.load(file_handle) + + # use a translation dictionary to enable that the JSON dictionary + # from the electronic lab notebook can have a different set of keywords + + for keyword, value in jsn.items(): + assert keyword in template.keys(), \ + print(keyword + ' is not a keyword in template!') + template[keyword] = value + + return template + + +class ApmReader(BaseReader): + """Parse content from community file formats. + + Specifically, local electrode atom probe microscopy + towards a NXapm.nxdl-compliant NeXus file. + + """ + + # pylint: disable=too-few-public-methods + + # Whitelist for the NXDLs that the reader supports and can process + supported_nxdls = ["NXapm"] + + def read(self, template: dict = None, + file_paths: Tuple[str] = None) -> dict: + """Read data from given file, return filled template dictionary.""" + typed_files, case = assess_situation_with_input_files(file_paths) + assert case > INVALID_INPUT, \ + 'Each reconstruction should have only one \ + range file and an associated metadata file!' + + report_appdef_version(template) + + print('Add metadata which come from other sources...') + if 'json' in typed_files.keys(): + assert len(typed_files['json']) == 1, \ + 'List of json files is ambiguous!' + extract_data_from_json_file(typed_files['json'][0], template) + else: + print('Unable to extract information from a lab notebook!') + return {} + + print("Add (optional) vendor file data...") + if 'apt' in typed_files.keys(): + assert len(typed_files['apt']) == 1, \ + 'List of apt files is ambiguous!' + extract_data_from_apt_file(typed_files['apt'][0], template) + elif 'epos' in typed_files.keys(): + assert len(typed_files['epos']) == 1, \ + 'List of epos files is ambiguous!' + extract_data_from_epos_file(typed_files['epos'][0], template) + elif 'pos' in typed_files.keys(): + assert len(typed_files['pos']) == 1, \ + 'List of pos files is ambiguous!' + extract_data_from_pos_file(typed_files['pos'][0], template) + else: + print('Unable to extract information from a reconstruction!') + return {} + + print("Add (optional) ranging data...") + configure_ranging_data(template) + + if 'rng' in typed_files.keys(): + assert len(typed_files['rng']) == 1, \ + 'List of rng files is ambiguous!' + extract_data_from_rng_file(typed_files['rng'][0], template) + elif 'rrng' in typed_files.keys(): + assert len(typed_files['rrng']) == 1, \ + 'List of rrng files is ambiguous!' + extract_data_from_rrng_file(typed_files['rrng'][0], template) + else: + print('Unable to extract information from a range file!') + return {} + + for keyword in template.keys(): + if template[keyword] is None: + print("Entry: '" + keyword + " is not properly defined yet!") + + # delete_not_properly_handled_fields(template) + # NEW ISSUE: these deleted fields should be handled during the + # instantiation of the template, i.e. if ION[ion] is minOccur=0 + # the converter should not ask for this field to be present ! + + # hot fixed for now suggesting to implement as a new issue + # NEW ISSUE: implement a functionality to return NX data type information + # at this reader level so that values of a certain type family, like NX_UINT + # get transformed into the specific datatype, like uint32 or uint64 e.g. + implicit_int_to_uint32 = [ + "/ENTRY[entry]/atom_probe/hit_multiplicity/hit_multiplicity", + "/ENTRY[entry]/atom_probe/hit_multiplicity/pulses_since_last_ion", + "/ENTRY[entry]/atom_probe/hit_multiplicity/pulse_id", + "/ENTRY[entry]/atom_probe/ranging/peak_identification/ION[ion]/ion_type", + "/ENTRY[entry]/atom_probe/ranging/peak_identification/ION[ion]/isotope_vector"] + for entry in implicit_int_to_uint32: + template[entry] = np.uint32(template[entry]) + + return template + + +# This has to be set to allow the convert script to use this reader. +READER = ApmReader + + +# deprecated +# ============================================================================= +# def delete_not_properly_handled_fields(template: dict) -> dict: +# """Remove fields which are currently not properly handled by the converter.""" +# prefix = "/ENTRY[entry]/atom_probe/" +# nxdl_paths = [ +# prefix + "ranging/peak_identification/ION[ion]/name", +# prefix + "ranging/peak_identification/ION[ion]/charge_state", +# prefix + "ranging/peak_identification/ION[ion]/charge_state/@units", +# prefix + "ranging/peak_identification/ION[ion]/ion_type", +# prefix + "ranging/peak_identification/ION[ion]/isotope_vector", +# prefix + "ranging/peak_identification/ION[ion]/mass_to_charge_range", +# prefix + "ranging/peak_identification/ION[ion]/mass_to_charge_range/@units", +# prefix + "control_software/analysis_chamber/pressure", +# prefix + "control_software/analysis_chamber/pressure/@units", +# prefix + "hit_multiplicity/hit_multiplicity", +# prefix + "hit_multiplicity/pulses_since_last_ion", +# prefix + "ion_impact_positions/hit_positions", +# prefix + "ion_impact_positions/hit_positions/@units", +# prefix + "laser_or_high_voltage_pulser/pulsed_voltage", +# prefix + "laser_or_high_voltage_pulser/pulsed_voltage/@units", +# prefix + "laser_or_high_voltage_pulser/standing_voltage", +# prefix + "laser_or_high_voltage_pulser/standing_voltage/@units", +# prefix + "voltage_and_bowl_correction/calibrated_tof/@units", +# prefix + "voltage_and_bowl_correction/raw_tof", +# prefix + "voltage_and_bowl_correction/raw_tof/@units"] +# +# for path in nxdl_paths: +# assert path in template.keys(), \ +# "nxdl_path: " + path + " is not a key in template!" +# template.pop(path, None) +# +# # NEW ISSUE: remove also these fields in the future they are redundant for peak_identification +# prefix = "/ENTRY[entry]/atom_probe/" +# nxdl_paths = [ +# prefix + "ranging/peak_search_and_deconvolution/PEAK[peak]/intensity", +# prefix + "ranging/peak_search_and_deconvolution/PEAK[peak]/intensity/@units", +# prefix + "ranging/peak_search_and_deconvolution/PEAK[peak]/label", +# prefix + "ranging/peak_search_and_deconvolution/PEAK[peak]/peak_model", +# prefix + "ranging/peak_search_and_deconvolution/PEAK[peak]/position", +# prefix + "ranging/peak_search_and_deconvolution/PEAK[peak]/position/@units"] +# +# for path in nxdl_paths: +# assert path in template.keys(), \ +# "nxdl_path: " + path + " is not a key in template!" +# template.pop(path, None) +# +# return template +# ============================================================================= diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods b/nexusparser/tools/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods new file mode 100644 index 000000000..ff405bd70 Binary files /dev/null and b/nexusparser/tools/dataconverter/readers/apm/utils/NXapmInformationSourcesToNeXus.ods differ diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/__init__.py b/nexusparser/tools/dataconverter/readers/apm/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py new file mode 100644 index 000000000..2af52a634 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_headers.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +"""AMETEK APT(6) data exchange file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import numpy as np + +# from readers.nx_apm_utils.aptfim_io_apt6_utils import np_uint16_to_string +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ + import string_to_typed_nparray + + +class AptFileHeaderMetadata(): + """Information content in the header to an APT(6) file.""" + + # we make the variable names as close as possible to the original naming + # scheme from the source code snippets which AMETEK shared with us + # when developing the parser for their vendor file format + def __init__(self): + # file format signature + self.c_signature = string_to_typed_nparray('APT\0', 4, np.uint8) + # byte length of the file header + self.i_header_size = np.int32(540) + # version number of the file header, currently expecting 2 + self.i_header_version = np.int32(2) + # original filename, i.e. *.apt filename, null-terminated UTF-16 ! + self.wc_filename = string_to_typed_nparray('', 256, np.uint16) + # file creation time + # according to AMETEK is implemented as a VisualStudio C++ FILETIME + # 64-bit value, which represents the number of 100-nanosecond intervals + # since January 1, 1601, as per the MSDN specification + self.ft_creation_time = np.uint64(0) + # number of ions represented by file + self.ll_ion_count = np.uint64(0) # or an int64 ? + + @classmethod + def get_numpy_struct(cls) -> np.dtype: + """Create customized numpy struct to read a file header at once.""" + return np.dtype([('cSignature', np.uint8, (4,)), + ('iHeaderSize', np.int32), + ('iHeaderVersion', np.int32), + ('wcFilename', np.uint16, 256), + ('ftCreationTime', np.uint64), + ('llIonCount', np.uint64)]) + + def set_ll_ion_count(self, value: np.uint64): + """Check and set total ion count.""" + assert isinstance(value, np.uint64), \ + 'llIonCount needs to be an int!' + assert value > 0, \ + 'llIonCount needs to be positive and not zero!' + assert value <= np.iinfo(np.uint64).max, \ + 'llIonCount is too large, needs to map to np.uint64!' + self.ll_ion_count = np.uint64(value) + + def matches(self, found_header: np.ndarray) -> bool: + """Compare a read header against expectation.""" + assert np.array_equal(self.c_signature, + found_header['cSignature'][0], + equal_nan=True), \ + 'Header cSignature differs!' + assert self.i_header_size \ + == found_header['iHeaderSize'][0], \ + 'Header iHeaderSize differs!' + assert self.i_header_version \ + == found_header['iHeaderVersion'][0], \ + 'Header iHeaderVersion differs!' + assert found_header['llIonCount'][0] > 0, \ + 'Header indicates there are no ions in the file!' + + self.set_ll_ion_count(found_header['llIonCount'][0]) + return True + + +# define which header and sections to expect in an *.apt file +# the sections below are referred to as branches in the commercial software +# APSuite enables users select prior I/O which of the sections to write +# normally a range file from based on the exchange with AMETEK and +# expected_header = apt6file_header_metadata() +EXPECTED_HEADER = AptFileHeaderMetadata() diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py new file mode 100644 index 000000000..880d82825 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_reader.py @@ -0,0 +1,257 @@ +#!/usr/bin/env python3 +"""AMETEK APT(6) data exchange file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import os + +# import mmap + +import numpy as np + +import pandas as pd + +# from pint import UnitRegistry + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ + import np_uint16_to_string +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_headers \ + import AptFileHeaderMetadata +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_sections \ + import AptFileSectionMetadata +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_sections_branches \ + import EXPECTED_SECTIONS +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ + import NxField, get_memory_mapped_data + + +class ReadAptFileFormat(): + """Read AMETEK's open exchange *.apt file format.""" + + def __init__(self, filename: str): + assert len(filename) > 4, 'APT file incorrect filename ending!' + assert filename.lower().endswith('.apt'), \ + 'APT file incorrect file type!' + self.filename = filename + + self.filesize = os.path.getsize(self.filename) + print('Reading ' + self.filename + ' which is ' + str(self.filesize) + ' bytes') + + self.header_section = None + self.byte_offsets = {} + self.available_sections = {} + # where do sections start bytes from beginning of the file? + self.apt = {} + + self.parse_file_structure() + + def parse_file_structure(self): + """Parse APT file header plus flat collection of metadata/data pairs. + + Each pair has a so-called section header and a corresponding raw data + block. Section headers detail the content of the immediately trailing + raw data block. + An APT file can store none, some, or all of the possible sections. + Furthermore the file can contain additional pieces of information + which this parser cannot read-out because the APT format is maintained + by AMETEK. The AMETEK source code is the only reliable source of + information about which content the sections encode and how these + get formatted when exporting an APT file from APSuite for a specific + version and build number and type of experiment plus + combinations of settings. + Parse header of the file and check which parsable sections the file + contains get the byte offsets of the sections from the beginning + relative to the start/beginning of the file. + """ + self.byte_offsets = {} + self.header_section = None + self.available_sections = {} + + with open(self.filename, 'rb') as file_handle: + self.dummy_header = AptFileHeaderMetadata() + found_header = np.fromfile(file_handle, + self.dummy_header.get_numpy_struct(), + count=1) + + assert self.dummy_header.matches(found_header), \ + 'Found an unexpectedly formatted/versioned header! \ + Please contact the development team to help us inspect \ + the matter.' + print('File describes ' + str(found_header['llIonCount'][0]) + ' ions') + + self.header_section = found_header + self.byte_offsets['header'] = np.uint64(file_handle.tell()) + print(self.byte_offsets['header']) + + end_of_file_not_reached = b'yes' + while end_of_file_not_reached != b'': + # probe for end of file + end_of_file_not_reached = file_handle.read(1) + if end_of_file_not_reached != b'': + file_handle.seek(-1, os.SEEK_CUR) + else: + print('End of file at ' + str(file_handle.tell()) + ' bytes') + break + + dummy_section = AptFileSectionMetadata() + found_section = np.fromfile(file_handle, + dummy_section.get_numpy_struct(), + count=1) + keyword = np_uint16_to_string( + found_section['wcSectionType'][0]) + + assert keyword not in self.available_sections.keys(), \ + 'Found a duplicate of an already parsed section! Please \ + contact the development team as we have never encountered \ + an example of such a section duplication and here seems \ + to be an example to inspect the matter.' + assert keyword in EXPECTED_SECTIONS.keys(), \ + 'Found an unknown section, seems like an unknown/new \ + branch! Please contact the development team to enable us \ + to contact AMETEK and discuss the situation.' + + metadata_section = EXPECTED_SECTIONS[keyword] + assert metadata_section.matches(found_section), \ + 'Found an uninterpretable section! Please contact the \ + development team to help us fixing this.' + self.available_sections[keyword] = metadata_section + + self.byte_offsets[keyword] = np.uint64(file_handle.tell()) + if keyword == 'Position': + # special case six IEEE 32-bit floats preceeding raw data + self.byte_offsets[keyword] += np.uint64(6 * 4) + self.byte_offsets[keyword] += np.uint64( + found_section['llByteCount'][0]) + print('Byte offset for reading data for section: ' + keyword) + print(self.byte_offsets[keyword]) + # print(file_handle.tell()) + file_handle.seek(self.byte_offsets[keyword], os.SEEK_SET) + # print(file_handle.tell()) + + # one convenience reader function for every known section + # is useful because it structures the parsers, enables reading the file + # partially and reduces main memory consumption during full parsing + def get_header(self): + """Report metadata in the header.""" + metadata_dict = { + 'cSignature': + np_uint16_to_string(self.header_section['cSignature'][0]), + 'iHeaderSize': + np.int32(self.header_section['iHeaderSize'][0]), + 'iHeaderVersion': + np.int32(self.header_section['iHeaderVersion'][0]), + 'wcFilename': + np_uint16_to_string(self.header_section['wcFilename'][0]), + 'ftCreationTime': + np.uint64(self.header_section['ftCreationTime'][0]), + 'llIonCount': + np.uint64(self.header_section['llIonCount'][0])} + # check e.g. https://gist.github.com/Mostafa-Hamdy-Elgiar/ + # 9714475f1b3bc224ea063af81566d873 repo + # for converting Windows/MSDN time to Python time + for key, value in iter(metadata_dict.items()): + print(key + ': ' + str(value)) + + def get_metadata(self, keyword: str): + """Report available metadata for quantity if it exists.""" + if keyword in self.available_sections.keys() \ + and keyword in self.byte_offsets.keys(): + metadata_dict = self.available_sections[keyword].get_metadata() + for key, value in iter(metadata_dict.items()): + print(key + ': ' + str(value)) + + def get_metadata_table(self): + """Create table from all metadata for each section.""" + column_names = ['section'] # header + assert 'Mass' in self.available_sections.keys(), \ + 'Cannot create table, Mass section not available to guide \ + the creation of the table header!' + for key in self.available_sections['Mass'].get_metadata().keys(): + column_names.append(key) + data_frame = pd.DataFrame(columns=column_names) + + for keyword, value in self.available_sections.items(): + row = {'section': keyword} + row = row | value.get_metadata() + data_frame = data_frame.append(row, ignore_index=True) + + return data_frame + + def get_named_quantity(self, keyword: str): + """Read quantity with name in keyword from APT file if it exists.""" + if keyword in self.available_sections.keys() \ + and keyword in self.byte_offsets.keys(): + byte_position_start = self.byte_offsets[keyword] \ + - self.available_sections[keyword].get_ametek_size() + print('Reading section ' + keyword + ' at ' + str(byte_position_start)) + + dtype = self.available_sections[keyword].get_ametek_type() + offset = byte_position_start + stride = np.uint64( + self.available_sections[keyword].meta['i_data_type_size'] / 8) + count = self.available_sections[keyword].get_ametek_count() + + data = get_memory_mapped_data( + self.filename, dtype, offset, stride, count) + + shape = tuple(self.available_sections[keyword].get_ametek_shape()) + unit = self.available_sections[keyword].meta['wc_data_unit'] + + return NxField( + np.reshape(data, newshape=shape), np_uint16_to_string(unit)) + + return NxField() + + def get_mass_to_charge_state_ratios(self): + """Read mass-to-charge.""" + return self.get_named_quantity('Mass') + + def get_reconstructed_positions(self): + """Read reconstructed positions.""" + return self.get_named_quantity('Position') + + +# examples how to use functionalities of this file format parser +# prefix = 'E:/Theobook165/GITHUB/FAIRMAT-PARSER/fairmat_areab_parser \ +# /tutorials/aptfim/examples/deu_duesseldorf_mpie' +# prefix = 'E:/Theobook165/FHI_FHI_FHI/Paper/xxxx_ParaprobeAnalytics \ +# AsAFairMatPlugin/research/database/ger_duesseldorf_antonov' +# prefix = prefix = 'E:/Theobook165/FHI_FHI_FHI/Paper/xxxx_ParaprobeAnalytics \ +# AsAFairMatPlugin/research/database/ger_duesseldorf_saxena' +# these two files are corrupted +# TEST_FILE_NAME = 'FlatTest_f903a3f2-6aa0-4019-9890-3c983b43d513.apt' +# TEST_FILE_NAME = prefix + '/' + 'c2fe4adf-f6f4-44aa-b6ec-76345fe88269.apt' +# tested with the next three worked nicely the above two were created with +# development stage APSuite versions, it turned out that file corruptions +# were tracable with the above two thus representing case of bugs in APSuite +# TEST_FILE_NAME = prefix + '/' + 'R5006_29110_Top_Level_ROI.apt' +# TEST_FILE_NAME = prefix + '/' + 'D1_High_Hc_R5076_52126.apt' +# test cases how to use the parser +# TEST_FILE_NAME = '70_50_50.apt' # Xuyang Zhou's (MPIE) \ +# Alexander Reichmann's (Leoben) test case +# parsedFile = ReadAptFileFormat(TEST_FILE_NAME) +# metadata_table = parsedFile.get_metadata_table() +# parsedFile.get_metadata('Position') +# parsedFile.get_header() +# xyz = parsedFile.get_reconstructed_positions() +# mq = parsedFile.get_mass_to_charge_state_ratios() +# mq = parsedFile.get_named_quantity('Mass') diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py new file mode 100644 index 000000000..64ae791d0 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections.py @@ -0,0 +1,415 @@ +#!/usr/bin/env python3 +"""AMETEK APT(6) data exchange file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import numpy as np + +# from pint import UnitRegistry + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_utils \ + import np_uint16_to_string, string_to_typed_nparray + + +class AptFileSectionMetadata(): + """Information content in the header to a section in an APT(6) file.""" + + def __init__(self): + # resolved name of the section + self.meta = {} + self.meta['section_name'] = '' + # section format signature + # or is the c_signature really uint16 ? + self.meta['c_signature'] = string_to_typed_nparray('SEC\0', 4, np.uint8) + # byte length of the section header + self.meta['i_header_size'] = np.int32(0) + # version number of the section header + self.meta['i_header_version'] = np.int32(0) + # string header/title representation of info content in the section + self.meta['wc_section_type'] = string_to_typed_nparray('', 32, np.uint16) + # version of this section data + self.meta['i_section_version'] = np.int32(0) + # enum value specifying how the records relate to ion + # 0 (unknown) + # 1 (one-to-one mapping) + # 2 (sparse 64bit ion index as first element) + # 3 (unrelated) + # 4 (first element is # of indices, then a list, then the record itself + self.meta['e_relationship_type'] = np.uint32(0) + # enum value specifying type of record + # 0 (unknown) + # 1 (variable size) + # 2 (variable indexed) + self.meta['e_record_type'] = np.uint32(0) + # enum value specifying data type of records + # 0 (unknown) + # 1 (int, iDataTypeSize 8, 16, 32, or 64) + # 2 (uint, iDataTypeSize arbitrary can bit pack within records) + # 3 (IEEE float 32 or 64) + # 4 (char string, iDataTypeSize 8, 16 + # iRecordSize of 0 is null terminated + # iRecordSize > 0 is fixed length + # 5 (other)) + self.meta['e_record_data_type'] = np.uint32(0) + # size in bits of data type + self.meta['i_data_type_size'] = np.int32(0) + # size of the record (bytes) + # this must be a multiple of iDataTypeSize/8 + # or 0 for variable length + self.meta['i_record_size'] = np.int32(0) + # string representation the unit of the data + self.meta['wc_data_unit'] = string_to_typed_nparray('', 16, np.uint16) + self.accepted_units = [''] + # number of records following this header + # do not use for seeking to next section, use llByteCount instead! + self.meta['ll_record_count'] = np.int64(0) + # number of bytes following the header + # this may be > llRecordCount * iRecordSize to allow for padding! + self.meta['ll_byte_count'] = np.int64(0) + + # we define setters here to implement type checks and thereby + # remove type and consistency checks out of the main code + # because the consumer of an *.apt file should not need to deal + # with the internal byte and format handling that maps from the + # conventions AMETEK uses and how this maps to numpy arrays + + def set_section_name(self, value: str): + """Check and set section name.""" + assert isinstance(value, str), 'SectionName must be a string!' + assert value != '', 'SectionName must not be an empty string!' + assert len(value) <= 32, \ + 'SectionName must not contain more than 32 characters!' + # SectionName is not null-terminated! + self.meta['section_name'] = value + + def set_c_signature(self): + """Check and set c_signature.""" + # assert isinstance(value, str), \ + # 'cSignature needs to be a string!' + # assert value is not '', \ + # 'cSignature must not be an empty string!' + # assert len(value) <= 4, \ + # 'cSignature must not contain more than 4 characters!' + # assert value[-1] == '\0', \ + # 'cSignature needs to include the null-terminator! + # assert value == 'SEC\0', \ + # 'cSignature must be SEC\0 which is a string!' + # so far all example file indicated AMETEK implemented 'SEC\0' hard + self.meta['c_signature'] = string_to_typed_nparray('SEC\0', 4, np.uint8) + + def set_i_header_size(self, value: np.int32): + """Check and set i_header_size.""" + # assert isinstance(value, int), \ + # 'iHeaderSize needs to be an int!' + assert value >= 0, \ + 'iHeaderSize needs to be positive or zero!' + assert value <= np.iinfo(np.int32).max, \ + 'iHeaderSize too large, needs to map to np.int32!' + self.meta['i_header_size'] = np.int32(value) + + def set_i_header_version(self, value: np.int32): + """Check and size i_header_version.""" + # assert isinstance(value, int), \ + # 'iHeaderVersion needs to be an int!' + assert value >= 0, \ + 'iHeaderVersion needs to be positive or zero!' + assert value <= np.iinfo(np.int32).max, \ + 'iHeaderVersion too large, needs to map to np.int32!' + self.meta['i_header_version'] = np.int32(value) + + def set_wc_section_type(self, value: str): + """Check and set wc_section_type.""" + assert isinstance(value, str), \ + 'wcSectionType needs to be a string!' + assert value != '', \ + 'cSignature must not be an empty string!' + assert len(value) <= 32, \ + 'wcSectionType string must not contain more than 32 characters!' + # assert value[-1] == '\0', \ + # 'wcSectionType needs to include the null-terminator!' + self.meta['wc_section_type'] = string_to_typed_nparray(value, 32, np.uint16) + + def set_i_section_version(self, value: np.int32): + """Check and set i_section_version.""" + # assert isinstance(value, int), \ + # 'iSectionVersion needs to be an int!' + assert value >= 0, \ + 'iSectionVersion needs to be positive or zero!' + assert value <= np.iinfo(np.int32).max, \ + 'iiSectionVersion too large, needs to map to np.int32!' + self.meta['i_section_version'] = np.int32(value) + + def set_e_relationship_type(self, value: np.uint32): + """Check and set e_relationship_type.""" + # assert isinstance(value, int), \ + # 'eRelationShipType needs to be an int!' + assert value in [0, 1, 2, 3, 4], \ + 'eRelationShipType needs to be from [0, 1, 2, 3, 4]!' + assert value == 1, \ + 'eRelationShipType cannot process 2, 3, and 4, lacking examples!' + self.meta['e_relationship_type'] = np.uint32(value) + + def set_e_record_type(self, value: np.uint32): + """Check and set e_record_type.""" + # assert isinstance(value, int), \ + # 'eRecordType needs to be an int!' + assert value in [0, 1, 2], \ + 'eRecordType needs to be from [0, 1, 2]!' + # assert value != 1, \ + # 'eRecordType cannot process 2, 3, and 4, lacking examples!' + self.meta['e_record_type'] = np.uint32(value) + + def set_e_record_data_type(self, value: np.uint32): + """Check and set e_record_data_type.""" + # assert isinstance(value, int), \ + # 'e_record_data_type needs to be an int!' + assert value in [0, 1, 2, 3, 4, 5], \ + 'eRecordDataType needs to be from [0, 1, 2, 3, 4, 5]!' + assert value != 5, \ + 'eRecordDataType cannot process 5 due to lacking examples!' + self.meta['e_record_data_type'] = np.uint32(value) + + def set_i_data_type_size(self, value: np.int32): + """Check and set i_data_type_size.""" + # assert isinstance(value, int), \ + # 'iDataTypeSize needs to be an int!' + assert value > 0, \ + 'iDataTypeSize needs to be positive and not zero!' + assert value <= np.iinfo(np.int32).max, \ + 'iDataTypeSize too large, needs to map to np.int32!' + self.meta['i_data_type_size'] = np.int32(value) + + def set_i_record_size(self, value: int): + """Check and set i_record_size.""" + assert isinstance(value, int), \ + 'iDataTypeSize needs to be an int!' + assert value > 0, \ + 'iHeaderVersion needs to be positive and not zero!' + assert value <= np.iinfo(np.int32).max, \ + 'iHeaderVersion too large, needs to map to np.int32!' + self.meta['i_record_size'] = np.int32(value) + + def set_wc_data_unit(self, value: str): + """Check and set wc_data_unit.""" + assert isinstance(value, str), \ + 'wcDataUnit needs to be a string!' + # can be the empty string is NX_UNITLESS or NX_DIMENSIONLESS + assert len(value) <= 16, \ + 'wcDataUnit must not contain more than 16 characters!' + # assert value[-1] == '\0', \ + # 'wcDataUnit needs to include the null-terminator!' + # so far all example file indicated AMETEK implemented 'SEC\0' hard + self.meta['wc_data_unit'] = string_to_typed_nparray(value, 16, np.uint16) + + def set_accepted_units(self, value: list): + """Set which unit strings are accepted.""" + # add further checks using e.g. pint + self.accepted_units = value + + @classmethod + def get_numpy_struct(cls) -> np.dtype: + """Create customized numpy struct to read a section header at once.""" + return np.dtype([('cSignature', np.uint8, (4,)), + ('iHeaderSize', np.int32), + ('iHeaderVersion', np.int32), + ('wcSectionType', np.uint16, 32), + ('iSectionVersion', np.int32), + ('eRelationshipType', np.uint32), + ('eRecordType', np.uint32), + ('eRecordDataType', np.uint32), + ('iDataTypeSize', np.int32), + ('iRecordSize', np.int32), + ('wcDataUnit', np.uint16, 16), + ('llRecordCount', np.uint64), + ('llByteCount', np.uint64)]) + + def get_ametek_size(self) -> np.uint64: + """Compute how many byte raw data in bytes to read from AMETEK defs.""" + return np.uint64(self.meta['ll_byte_count']) + + def get_ametek_type(self) -> str: + """Interpret numpy endianess/datatype from AMETEK defs.""" + byte_length = self.meta['i_data_type_size'] / 8 + assert self.meta['e_record_data_type'] in [1, 2, 3], 'Section ' \ + + np_uint16_to_string(self.meta['wc_section_type']) \ + + ' get_ametek_type() unsupported e_record_data_type!' + if self.meta['e_record_data_type'] == 1: + integer_dtypes = {2: ' np.uint64: + """Interpret how many quantities from AMETEK defs.""" + # this works only for one-to-one mapping ! + # AMETEK has not communicated if the designed adaptive storage layout + # for *.apt files has ever been implemented + return self.meta['ll_record_count'] \ + * np.uint64(self.meta['i_record_size'] / (self.meta['i_data_type_size'] / 8)) + + def get_ametek_shape(self) -> list: + """Interpret final numpy shape to use from AMETEK defs.""" + # this works only for one-to-one mapping ! + # AMETEK has not communicated if the designed adaptive storage layout + # for *.apt files has ever been implemented + return [ + np.uint64(self.meta['ll_record_count']), + np.uint64(np.uint64(self.meta['i_record_size']) / (self.meta['i_data_type_size'] / 8))] + + def matches(self, found_section: np.ndarray) -> bool: + """Compare a read section against expected versioning.""" + # check if the parsed section's metadata are matching + # AMETEK expectations, i.e. meeting manufacturers definitions? + assert np.array_equal(self.meta['c_signature'], found_section['cSignature'][0], + equal_nan=True), 'Section cSignature differs, \ + is ' + np_uint16_to_string(found_section['cSignature'][0]) \ + + ' but should be ' + np_uint16_to_string(self.c_signature) + + assert found_section['iHeaderSize'][0] == self.meta['i_header_size'], \ + 'Section iHeaderSize differs, is ' \ + + str(found_section['iHeaderSize'][0]) \ + + ' but should be ' + str(self.meta['i_header_size']) + + assert found_section['iHeaderVersion'][0] == self.meta['i_header_version'], \ + 'Section iHeaderVersion differs, is ' \ + + str(found_section['iHeaderVersion'][0]) \ + + ' but should be ' + str(self.meta['i_header_version']) + + assert found_section['iSectionVersion'][0] == self.meta['i_section_version'], \ + 'Section iSectionVersion differs, is ' \ + + str(found_section['iSectionVersion'][0]) \ + + ' but should be ' + str(self.meta['i_section_version']) + + assert found_section['eRelationshipType'][0] \ + == self.meta['e_relationship_type'], \ + 'Section eRelationshipType differs, is ' \ + + str(found_section['eRelationshipType'][0]) \ + + ' but should be ' + str(self.meta['e_relationship_type']) + + assert found_section['eRecordType'][0] == self.meta['e_record_type'], \ + 'Section eRecordType differs, is ' \ + + str(found_section['eRecordType'][0]) \ + + ' but should be ' + str(self.meta['e_record_type']) + + assert found_section['eRecordDataType'][0] \ + == self.meta['e_record_data_type'], \ + 'Section eRecordDataType differs, is ' \ + + str(found_section['eRecordDataType'][0]) \ + + ' but should be ' + str(self.meta['e_record_data_type']) + + assert found_section['iDataTypeSize'][0] == self.meta['i_data_type_size'], \ + 'Section iDataTypeSize differs, is ' \ + + str(found_section['iDataTypeSize'][0]) + ' but should be ' \ + + str(self.meta['i_data_type_size']) + + assert found_section['iRecordSize'][0] == self.meta['i_record_size'], \ + 'Section iRecordSize differs, is ' \ + + str(found_section['iRecordSize'][0]) + ' but should be ' \ + + str(self.meta['i_record_size']) + + # ureg = UnitRegistry() + # ureg.define('da = Da = amu') + # check if wcDataUnit is of correct quantity + assert np_uint16_to_string(found_section['wcDataUnit'][0]) \ + in self.accepted_units, 'Section wcDataUnit differs, is ' \ + + np_uint16_to_string(found_section['wcDataUnit'][0]) \ + + ' but should be from accepted_units: ' \ + + ', '.join(self.accepted_units) + # Q = ureg.Quantity(1, 'amu') + # use pint for checking compatible base unit + + # check also special cases which this parser currently cannot handle + # i.e. meeting what we as the community know about the format + # and thus can handle only + assert found_section['llByteCount'][0] > 0, \ + 'Section llByteCount indicates llByteCount is not > 0 !' + + # modify dynamic quanities that can only be inferred from the file + self.meta['ll_record_count'] = found_section['llRecordCount'][0] + self.meta['ll_byte_count'] = found_section['llByteCount'][0] + + return True + + def get_metadata(self) -> dict: + """Create dictionary of all AMETEK metadata of the section.""" + return \ + { + 'cSignature': np_uint16_to_string(self.meta['c_signature']), + 'iHeaderSize': self.meta['i_header_size'], + 'iHeaderVersion': self.meta['i_header_version'], + 'wcSectionType': np_uint16_to_string(self.meta['wc_section_type']), + 'iSectionVersion': self.meta['i_section_version'], + 'eRelationshipType': self.meta['e_relationship_type'], + 'eRecordType': self.meta['e_record_type'], + 'eRecordDataType': self.meta['e_record_data_type'], + 'iDataTypeSize': self.meta['i_data_type_size'], + 'iRecordSize': self.meta['i_record_size'], + 'wcDataUnit': np_uint16_to_string(self.meta['wc_data_unit']), + 'llRecordCount': self.meta['ll_record_count'], + 'llByteCount': self.meta['ll_byte_count'], + 'AmetekSize': self.get_ametek_size(), + 'AmetekType': self.get_ametek_type(), + 'AmetekCount': self.get_ametek_count(), + 'AmetekShape': ', '.join([str(x) + for x in self.get_ametek_shape()]) + } + + # def set_ll_record_count(self, value: int): + # assert isinstance(value, int), \ + # 'llRecordCount needs to be an int!' + # assert value >= 0, \ + # 'llRecordCount needs to be at least zero!' + # assert value <= np.iinfo(np.int64).max, 'llRecordCount needs to be \ + # at most '+(str(np.iinfo(np.int64).max))+'!' + # self.meta['ll_record_count'] = np.int64(0) + + # def set_ll_byte_count(self, value: int): + # assert isinstance(value, int), \ + # 'llByteCount needs to be an int!' + # assert value >= 0, \ + # 'llByteCount needs to be at least zero!' + # assert value <= np.iinfo(np.int64).max, 'llRecordCount needs to be \ + # at most '+(str(np.iinfo(np.int64).max))+'!' + # self.meta['ll_byte_count'] = np.int64(0) diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py new file mode 100644 index 000000000..8a86f76e8 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_sections_branches.py @@ -0,0 +1,698 @@ +#!/usr/bin/env python3 +"""AMETEK APT(6) data exchange file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_apt6_sections \ + import AptFileSectionMetadata + + +# define which header and sections to expect in an *.apt file +# the sections below are referred to as branches in the commercial software +# APSuite enables users select prior I/O which of the sections to write +# normally a range file from based on the exchange with AMETEK and + +# in addition there is usually a sextet of preceeding IEEE 32-bit floats +# to the position section. This sextett encodes the min,max bounds of the point +# cloud in x, y, z direction respectively +# F. M. M. de Oliveira reported cases where *.apt from mere flat test runs, +# i.e. software sessions during which no reconstruction is performed +# this sextett is absent + +EXPECTED_SECTIONS = {} + +# most tested sections + +EXPECTED_SECTIONS['Position'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Position'].set_section_name('Position') +EXPECTED_SECTIONS['Position'].set_c_signature() +EXPECTED_SECTIONS['Position'].set_i_header_size(148 + 6 * 4) +# six 4 byte IEEE 32-bit floats are following immediately after a 'Position' +# section trailing the actual position value array +EXPECTED_SECTIONS['Position'].set_i_header_version(2) +EXPECTED_SECTIONS['Position'].set_wc_section_type('Position') +EXPECTED_SECTIONS['Position'].set_i_section_version(1) +EXPECTED_SECTIONS['Position'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Position'].set_e_record_type(1) +EXPECTED_SECTIONS['Position'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Position'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Position'].set_i_record_size(12) +EXPECTED_SECTIONS['Position'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['Position'].set_accepted_units(['nm']) + +EXPECTED_SECTIONS['Mass'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Mass'].set_section_name('Mass') +EXPECTED_SECTIONS['Mass'].set_c_signature() +EXPECTED_SECTIONS['Mass'].set_i_header_size(148) +EXPECTED_SECTIONS['Mass'].set_i_header_version(2) +EXPECTED_SECTIONS['Mass'].set_wc_section_type('Mass') +EXPECTED_SECTIONS['Mass'].set_i_section_version(1) +EXPECTED_SECTIONS['Mass'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Mass'].set_e_record_type(1) +EXPECTED_SECTIONS['Mass'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Mass'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Mass'].set_i_record_size(4) +EXPECTED_SECTIONS['Mass'].set_wc_data_unit('Da') +EXPECTED_SECTIONS['Mass'].set_accepted_units(['da', 'Da', 'amu']) + +# M. K\"uhbach detected there are at least APSuite versions which write +# files with Da and some with da as wcDataUnits argument, it seems there +# was a source code change, we use pint to detect these issues and warn + +# sections which demand more testing with the parser + +EXPECTED_SECTIONS['z'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['z'].set_section_name('z') +EXPECTED_SECTIONS['z'].set_c_signature() +EXPECTED_SECTIONS['z'].set_i_header_size(148) +EXPECTED_SECTIONS['z'].set_i_header_version(2) +EXPECTED_SECTIONS['z'].set_wc_section_type('z') +EXPECTED_SECTIONS['z'].set_i_section_version(1) +EXPECTED_SECTIONS['z'].set_e_relationship_type(1) +EXPECTED_SECTIONS['z'].set_e_record_type(1) +EXPECTED_SECTIONS['z'].set_e_record_data_type(1) +EXPECTED_SECTIONS['z'].set_i_data_type_size(64) +EXPECTED_SECTIONS['z'].set_i_record_size(8) +EXPECTED_SECTIONS['z'].set_wc_data_unit('ions') +EXPECTED_SECTIONS['z'].set_accepted_units(['ions']) + +EXPECTED_SECTIONS['tof'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['tof'].set_section_name('tof') +EXPECTED_SECTIONS['tof'].set_c_signature() +EXPECTED_SECTIONS['tof'].set_i_header_size(148) +EXPECTED_SECTIONS['tof'].set_i_header_version(2) +EXPECTED_SECTIONS['tof'].set_wc_section_type('tof') +EXPECTED_SECTIONS['tof'].set_i_section_version(1) +EXPECTED_SECTIONS['tof'].set_e_relationship_type(1) +EXPECTED_SECTIONS['tof'].set_e_record_type(1) +EXPECTED_SECTIONS['tof'].set_e_record_data_type(3) +EXPECTED_SECTIONS['tof'].set_i_data_type_size(32) +EXPECTED_SECTIONS['tof'].set_i_record_size(4) +EXPECTED_SECTIONS['tof'].set_wc_data_unit('ns') +EXPECTED_SECTIONS['tof'].set_accepted_units(['ns']) + +EXPECTED_SECTIONS['Voltage'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Voltage'].set_section_name('Voltage') +EXPECTED_SECTIONS['Voltage'].set_c_signature() +EXPECTED_SECTIONS['Voltage'].set_i_header_size(148) +EXPECTED_SECTIONS['Voltage'].set_i_header_version(2) +EXPECTED_SECTIONS['Voltage'].set_wc_section_type('Voltage') +EXPECTED_SECTIONS['Voltage'].set_i_section_version(1) +EXPECTED_SECTIONS['Voltage'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Voltage'].set_e_record_type(1) +EXPECTED_SECTIONS['Voltage'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Voltage'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Voltage'].set_i_record_size(4) +EXPECTED_SECTIONS['Voltage'].set_wc_data_unit('') + +EXPECTED_SECTIONS['pulse'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['pulse'].set_section_name('pulse') +EXPECTED_SECTIONS['pulse'].set_c_signature() +EXPECTED_SECTIONS['pulse'].set_i_header_size(148) +EXPECTED_SECTIONS['pulse'].set_i_header_version(2) +EXPECTED_SECTIONS['pulse'].set_wc_section_type('pulse') +EXPECTED_SECTIONS['pulse'].set_i_section_version(1) +EXPECTED_SECTIONS['pulse'].set_e_relationship_type(1) +EXPECTED_SECTIONS['pulse'].set_e_record_type(1) +EXPECTED_SECTIONS['pulse'].set_e_record_data_type(3) +EXPECTED_SECTIONS['pulse'].set_i_data_type_size(32) +EXPECTED_SECTIONS['pulse'].set_i_record_size(4) +EXPECTED_SECTIONS['pulse'].set_wc_data_unit('') + +EXPECTED_SECTIONS['freq'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['freq'].set_section_name('freq') +EXPECTED_SECTIONS['freq'].set_c_signature() +EXPECTED_SECTIONS['freq'].set_i_header_size(148) +EXPECTED_SECTIONS['freq'].set_i_header_version(2) +EXPECTED_SECTIONS['freq'].set_wc_section_type('freq') +EXPECTED_SECTIONS['freq'].set_i_section_version(1) +EXPECTED_SECTIONS['freq'].set_e_relationship_type(1) +EXPECTED_SECTIONS['freq'].set_e_record_type(1) +EXPECTED_SECTIONS['freq'].set_e_record_data_type(3) +EXPECTED_SECTIONS['freq'].set_i_data_type_size(32) +EXPECTED_SECTIONS['freq'].set_i_record_size(4) +EXPECTED_SECTIONS['freq'].set_wc_data_unit('Hz') +EXPECTED_SECTIONS['freq'].set_accepted_units(['Hz']) + +EXPECTED_SECTIONS['tElapsed'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['tElapsed'].set_section_name('tElapsed') +EXPECTED_SECTIONS['tElapsed'].set_c_signature() +EXPECTED_SECTIONS['tElapsed'].set_i_header_size(148) +EXPECTED_SECTIONS['tElapsed'].set_i_header_version(2) +EXPECTED_SECTIONS['tElapsed'].set_wc_section_type('tElapsed') +EXPECTED_SECTIONS['tElapsed'].set_i_section_version(1) +EXPECTED_SECTIONS['tElapsed'].set_e_relationship_type(1) +EXPECTED_SECTIONS['tElapsed'].set_e_record_type(1) +EXPECTED_SECTIONS['tElapsed'].set_e_record_data_type(3) +EXPECTED_SECTIONS['tElapsed'].set_i_data_type_size(32) +EXPECTED_SECTIONS['tElapsed'].set_i_record_size(4) +EXPECTED_SECTIONS['tElapsed'].set_wc_data_unit('') + +EXPECTED_SECTIONS['erate'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['erate'].set_section_name('erate') +EXPECTED_SECTIONS['erate'].set_c_signature() +EXPECTED_SECTIONS['erate'].set_i_header_size(148) +EXPECTED_SECTIONS['erate'].set_i_header_version(2) +EXPECTED_SECTIONS['erate'].set_wc_section_type('erate') +EXPECTED_SECTIONS['erate'].set_i_section_version(1) +EXPECTED_SECTIONS['erate'].set_e_relationship_type(1) +EXPECTED_SECTIONS['erate'].set_e_record_type(1) +EXPECTED_SECTIONS['erate'].set_e_record_data_type(3) +EXPECTED_SECTIONS['erate'].set_i_data_type_size(32) +EXPECTED_SECTIONS['erate'].set_i_record_size(4) +EXPECTED_SECTIONS['erate'].set_wc_data_unit('%/100') +EXPECTED_SECTIONS['erate'].set_accepted_units(['%/100']) + +EXPECTED_SECTIONS['xstage'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['xstage'].set_section_name('xstage') +EXPECTED_SECTIONS['xstage'].set_c_signature() +EXPECTED_SECTIONS['xstage'].set_i_header_size(148) +EXPECTED_SECTIONS['xstage'].set_i_header_version(2) +EXPECTED_SECTIONS['xstage'].set_wc_section_type('xstage') +EXPECTED_SECTIONS['xstage'].set_i_section_version(1) +EXPECTED_SECTIONS['xstage'].set_e_relationship_type(1) +EXPECTED_SECTIONS['xstage'].set_e_record_type(1) +EXPECTED_SECTIONS['xstage'].set_e_record_data_type(1) +EXPECTED_SECTIONS['xstage'].set_i_data_type_size(32) +EXPECTED_SECTIONS['xstage'].set_i_record_size(4) +EXPECTED_SECTIONS['xstage'].set_wc_data_unit('') + +EXPECTED_SECTIONS['ystage'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['ystage'].set_section_name('ystage') +EXPECTED_SECTIONS['ystage'].set_c_signature() +EXPECTED_SECTIONS['ystage'].set_i_header_size(148) +EXPECTED_SECTIONS['ystage'].set_i_header_version(2) +EXPECTED_SECTIONS['ystage'].set_wc_section_type('ystage') +EXPECTED_SECTIONS['ystage'].set_i_section_version(1) +EXPECTED_SECTIONS['ystage'].set_e_relationship_type(1) +EXPECTED_SECTIONS['ystage'].set_e_record_type(1) +EXPECTED_SECTIONS['ystage'].set_e_record_data_type(1) +EXPECTED_SECTIONS['ystage'].set_i_data_type_size(32) +EXPECTED_SECTIONS['ystage'].set_i_record_size(4) +EXPECTED_SECTIONS['ystage'].set_wc_data_unit('') + +EXPECTED_SECTIONS['zstage'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['zstage'].set_section_name('zstage') +EXPECTED_SECTIONS['zstage'].set_c_signature() +EXPECTED_SECTIONS['zstage'].set_i_header_size(148) +EXPECTED_SECTIONS['zstage'].set_i_header_version(2) +EXPECTED_SECTIONS['zstage'].set_wc_section_type('zstage') +EXPECTED_SECTIONS['zstage'].set_i_section_version(1) +EXPECTED_SECTIONS['zstage'].set_e_relationship_type(1) +EXPECTED_SECTIONS['zstage'].set_e_record_type(1) +EXPECTED_SECTIONS['zstage'].set_e_record_data_type(1) +EXPECTED_SECTIONS['zstage'].set_i_data_type_size(32) +EXPECTED_SECTIONS['zstage'].set_i_record_size(4) +EXPECTED_SECTIONS['zstage'].set_wc_data_unit('') + +EXPECTED_SECTIONS['tstage'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['tstage'].set_section_name('tstage') +EXPECTED_SECTIONS['tstage'].set_c_signature() +EXPECTED_SECTIONS['tstage'].set_i_header_size(148) +EXPECTED_SECTIONS['tstage'].set_i_header_version(2) +EXPECTED_SECTIONS['tstage'].set_wc_section_type('tstage') +EXPECTED_SECTIONS['tstage'].set_i_section_version(1) +EXPECTED_SECTIONS['tstage'].set_e_relationship_type(1) +EXPECTED_SECTIONS['tstage'].set_e_record_type(1) +EXPECTED_SECTIONS['tstage'].set_e_record_data_type(2) +EXPECTED_SECTIONS['tstage'].set_i_data_type_size(16) +EXPECTED_SECTIONS['tstage'].set_i_record_size(2) +EXPECTED_SECTIONS['tstage'].set_wc_data_unit('') + +EXPECTED_SECTIONS['TargetErate'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['TargetErate'].set_section_name('TargetErate') +EXPECTED_SECTIONS['TargetErate'].set_c_signature() +EXPECTED_SECTIONS['TargetErate'].set_i_header_size(148) +EXPECTED_SECTIONS['TargetErate'].set_i_header_version(2) +EXPECTED_SECTIONS['TargetErate'].set_wc_section_type('TargetErate') +EXPECTED_SECTIONS['TargetErate'].set_i_section_version(1) +EXPECTED_SECTIONS['TargetErate'].set_e_relationship_type(1) +EXPECTED_SECTIONS['TargetErate'].set_e_record_type(1) +EXPECTED_SECTIONS['TargetErate'].set_e_record_data_type(3) +EXPECTED_SECTIONS['TargetErate'].set_i_data_type_size(32) +EXPECTED_SECTIONS['TargetErate'].set_i_record_size(4) +EXPECTED_SECTIONS['TargetErate'].set_wc_data_unit('%/100') +EXPECTED_SECTIONS['TargetErate'].set_accepted_units(['%/100']) + +EXPECTED_SECTIONS['TargetFlux'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['TargetFlux'].set_section_name('TargetFlux') +EXPECTED_SECTIONS['TargetFlux'].set_c_signature() +EXPECTED_SECTIONS['TargetFlux'].set_i_header_size(148) +EXPECTED_SECTIONS['TargetFlux'].set_i_header_version(2) +EXPECTED_SECTIONS['TargetFlux'].set_wc_section_type('TargetFlux') +EXPECTED_SECTIONS['TargetFlux'].set_i_section_version(1) +EXPECTED_SECTIONS['TargetFlux'].set_e_relationship_type(1) +EXPECTED_SECTIONS['TargetFlux'].set_e_record_type(1) +EXPECTED_SECTIONS['TargetFlux'].set_e_record_data_type(3) +EXPECTED_SECTIONS['TargetFlux'].set_i_data_type_size(32) +EXPECTED_SECTIONS['TargetFlux'].set_i_record_size(4) +EXPECTED_SECTIONS['TargetFlux'].set_wc_data_unit('') + +EXPECTED_SECTIONS['pulseDelta'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['pulseDelta'].set_section_name('pulseDelta') +EXPECTED_SECTIONS['pulseDelta'].set_c_signature() +EXPECTED_SECTIONS['pulseDelta'].set_i_header_size(148) +EXPECTED_SECTIONS['pulseDelta'].set_i_header_version(2) +EXPECTED_SECTIONS['pulseDelta'].set_wc_section_type('pulseDelta') +EXPECTED_SECTIONS['pulseDelta'].set_i_section_version(1) +EXPECTED_SECTIONS['pulseDelta'].set_e_relationship_type(1) +EXPECTED_SECTIONS['pulseDelta'].set_e_record_type(1) +EXPECTED_SECTIONS['pulseDelta'].set_e_record_data_type(1) +EXPECTED_SECTIONS['pulseDelta'].set_i_data_type_size(16) +EXPECTED_SECTIONS['pulseDelta'].set_i_record_size(2) +EXPECTED_SECTIONS['pulseDelta'].set_wc_data_unit('') + +EXPECTED_SECTIONS['Pres'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Pres'].set_section_name('Pres') +EXPECTED_SECTIONS['Pres'].set_c_signature() +EXPECTED_SECTIONS['Pres'].set_i_header_size(148) +EXPECTED_SECTIONS['Pres'].set_i_header_version(2) +EXPECTED_SECTIONS['Pres'].set_wc_section_type('Pres') +EXPECTED_SECTIONS['Pres'].set_i_section_version(1) +EXPECTED_SECTIONS['Pres'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Pres'].set_e_record_type(1) +EXPECTED_SECTIONS['Pres'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Pres'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Pres'].set_i_record_size(4) +EXPECTED_SECTIONS['Pres'].set_wc_data_unit('torr') +EXPECTED_SECTIONS['Pres'].set_accepted_units(['torr']) + +EXPECTED_SECTIONS['VAnodeMon'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['VAnodeMon'].set_section_name('VAnodeMon') +EXPECTED_SECTIONS['VAnodeMon'].set_c_signature() +EXPECTED_SECTIONS['VAnodeMon'].set_i_header_size(148) +EXPECTED_SECTIONS['VAnodeMon'].set_i_header_version(2) +EXPECTED_SECTIONS['VAnodeMon'].set_wc_section_type('VAnodeMon') +EXPECTED_SECTIONS['VAnodeMon'].set_i_section_version(1) +EXPECTED_SECTIONS['VAnodeMon'].set_e_relationship_type(1) +EXPECTED_SECTIONS['VAnodeMon'].set_e_record_type(1) +EXPECTED_SECTIONS['VAnodeMon'].set_e_record_data_type(3) +EXPECTED_SECTIONS['VAnodeMon'].set_i_data_type_size(32) +EXPECTED_SECTIONS['VAnodeMon'].set_i_record_size(4) +EXPECTED_SECTIONS['VAnodeMon'].set_wc_data_unit('') + +EXPECTED_SECTIONS['Temp'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Temp'].set_section_name('Temp') +EXPECTED_SECTIONS['Temp'].set_c_signature() +EXPECTED_SECTIONS['Temp'].set_i_header_size(148) +EXPECTED_SECTIONS['Temp'].set_i_header_version(2) +EXPECTED_SECTIONS['Temp'].set_wc_section_type('Temp') +EXPECTED_SECTIONS['Temp'].set_i_section_version(1) +EXPECTED_SECTIONS['Temp'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Temp'].set_e_record_type(1) +EXPECTED_SECTIONS['Temp'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Temp'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Temp'].set_i_record_size(4) +EXPECTED_SECTIONS['Temp'].set_wc_data_unit('K') +EXPECTED_SECTIONS['Temp'].set_accepted_units(['K']) + + +EXPECTED_SECTIONS['AmbTemp'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['AmbTemp'].set_section_name('AmbTemp') +EXPECTED_SECTIONS['AmbTemp'].set_c_signature() +EXPECTED_SECTIONS['AmbTemp'].set_i_header_size(148) +EXPECTED_SECTIONS['AmbTemp'].set_i_header_version(2) +EXPECTED_SECTIONS['AmbTemp'].set_wc_section_type('AmbTemp') +EXPECTED_SECTIONS['AmbTemp'].set_i_section_version(1) +EXPECTED_SECTIONS['AmbTemp'].set_e_relationship_type(1) +EXPECTED_SECTIONS['AmbTemp'].set_e_record_type(1) +EXPECTED_SECTIONS['AmbTemp'].set_e_record_data_type(3) +EXPECTED_SECTIONS['AmbTemp'].set_i_data_type_size(32) +EXPECTED_SECTIONS['AmbTemp'].set_i_record_size(4) +EXPECTED_SECTIONS['AmbTemp'].set_wc_data_unit('C') +EXPECTED_SECTIONS['AmbTemp'].set_accepted_units(['C']) + +EXPECTED_SECTIONS['laserx'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['laserx'].set_section_name('laserx') +EXPECTED_SECTIONS['laserx'].set_c_signature() +EXPECTED_SECTIONS['laserx'].set_i_header_size(148) +EXPECTED_SECTIONS['laserx'].set_i_header_version(2) +EXPECTED_SECTIONS['laserx'].set_wc_section_type('laserx') +EXPECTED_SECTIONS['laserx'].set_i_section_version(1) +EXPECTED_SECTIONS['laserx'].set_e_relationship_type(1) +EXPECTED_SECTIONS['laserx'].set_e_record_type(1) +EXPECTED_SECTIONS['laserx'].set_e_record_data_type(1) +EXPECTED_SECTIONS['laserx'].set_i_data_type_size(32) +EXPECTED_SECTIONS['laserx'].set_i_record_size(4) +EXPECTED_SECTIONS['laserx'].set_wc_data_unit('') + +EXPECTED_SECTIONS['lasery'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['lasery'].set_section_name('lasery') +EXPECTED_SECTIONS['lasery'].set_c_signature() +EXPECTED_SECTIONS['lasery'].set_i_header_size(148) +EXPECTED_SECTIONS['lasery'].set_i_header_version(2) +EXPECTED_SECTIONS['lasery'].set_wc_section_type('lasery') +EXPECTED_SECTIONS['lasery'].set_i_section_version(1) +EXPECTED_SECTIONS['lasery'].set_e_relationship_type(1) +EXPECTED_SECTIONS['lasery'].set_e_record_type(1) +EXPECTED_SECTIONS['lasery'].set_e_record_data_type(1) +EXPECTED_SECTIONS['lasery'].set_i_data_type_size(32) +EXPECTED_SECTIONS['lasery'].set_i_record_size(4) +EXPECTED_SECTIONS['lasery'].set_wc_data_unit('') + +EXPECTED_SECTIONS['laserz'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['laserz'].set_section_name('laserz') +EXPECTED_SECTIONS['laserz'].set_c_signature() +EXPECTED_SECTIONS['laserz'].set_i_header_size(148) +EXPECTED_SECTIONS['laserz'].set_i_header_version(2) +EXPECTED_SECTIONS['laserz'].set_wc_section_type('laserz') +EXPECTED_SECTIONS['laserz'].set_i_section_version(1) +EXPECTED_SECTIONS['laserz'].set_e_relationship_type(1) +EXPECTED_SECTIONS['laserz'].set_e_record_type(1) +EXPECTED_SECTIONS['laserz'].set_e_record_data_type(1) +EXPECTED_SECTIONS['laserz'].set_i_data_type_size(32) +EXPECTED_SECTIONS['laserz'].set_i_record_size(4) +EXPECTED_SECTIONS['laserz'].set_wc_data_unit('') + +EXPECTED_SECTIONS['laserpower'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['laserpower'].set_section_name('laserpower') +EXPECTED_SECTIONS['laserpower'].set_c_signature() +EXPECTED_SECTIONS['laserpower'].set_i_header_size(148) +EXPECTED_SECTIONS['laserpower'].set_i_header_version(2) +EXPECTED_SECTIONS['laserpower'].set_wc_section_type('laserpower') +EXPECTED_SECTIONS['laserpower'].set_i_section_version(1) +EXPECTED_SECTIONS['laserpower'].set_e_relationship_type(1) +EXPECTED_SECTIONS['laserpower'].set_e_record_type(1) +EXPECTED_SECTIONS['laserpower'].set_e_record_data_type(3) +EXPECTED_SECTIONS['laserpower'].set_i_data_type_size(32) +EXPECTED_SECTIONS['laserpower'].set_i_record_size(4) +EXPECTED_SECTIONS['laserpower'].set_wc_data_unit('') + +EXPECTED_SECTIONS['FractureGuard'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['FractureGuard'].set_section_name('FractureGuard') +EXPECTED_SECTIONS['FractureGuard'].set_c_signature() +EXPECTED_SECTIONS['FractureGuard'].set_i_header_size(148) +EXPECTED_SECTIONS['FractureGuard'].set_i_header_version(2) +EXPECTED_SECTIONS['FractureGuard'].set_wc_section_type('FractureGuard') +EXPECTED_SECTIONS['FractureGuard'].set_i_section_version(1) +EXPECTED_SECTIONS['FractureGuard'].set_e_relationship_type(1) +EXPECTED_SECTIONS['FractureGuard'].set_e_record_type(1) +EXPECTED_SECTIONS['FractureGuard'].set_e_record_data_type(2) +EXPECTED_SECTIONS['FractureGuard'].set_i_data_type_size(16) +EXPECTED_SECTIONS['FractureGuard'].set_i_record_size(2) +EXPECTED_SECTIONS['FractureGuard'].set_wc_data_unit('') + +EXPECTED_SECTIONS['Noise'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Noise'].set_section_name('Noise') +EXPECTED_SECTIONS['Noise'].set_c_signature() +EXPECTED_SECTIONS['Noise'].set_i_header_size(148) +EXPECTED_SECTIONS['Noise'].set_i_header_version(2) +EXPECTED_SECTIONS['Noise'].set_wc_section_type('Noise') +EXPECTED_SECTIONS['Noise'].set_i_section_version(1) +EXPECTED_SECTIONS['Noise'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Noise'].set_e_record_type(1) +EXPECTED_SECTIONS['Noise'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Noise'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Noise'].set_i_record_size(4) +EXPECTED_SECTIONS['Noise'].set_wc_data_unit('ions') +EXPECTED_SECTIONS['Noise'].set_accepted_units(['', 'ions']) + +EXPECTED_SECTIONS['Uniformity'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Uniformity'].set_section_name('Uniformity') +EXPECTED_SECTIONS['Uniformity'].set_c_signature() +EXPECTED_SECTIONS['Uniformity'].set_i_header_size(148) +EXPECTED_SECTIONS['Uniformity'].set_i_header_version(2) +EXPECTED_SECTIONS['Uniformity'].set_wc_section_type('Uniformity') +EXPECTED_SECTIONS['Uniformity'].set_i_section_version(1) +EXPECTED_SECTIONS['Uniformity'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Uniformity'].set_e_record_type(1) +EXPECTED_SECTIONS['Uniformity'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Uniformity'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Uniformity'].set_i_record_size(4) +EXPECTED_SECTIONS['Uniformity'].set_wc_data_unit('') + +EXPECTED_SECTIONS['tofc'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['tofc'].set_section_name('tofc') +EXPECTED_SECTIONS['tofc'].set_c_signature() +EXPECTED_SECTIONS['tofc'].set_i_header_size(148) +EXPECTED_SECTIONS['tofc'].set_i_header_version(2) +EXPECTED_SECTIONS['tofc'].set_wc_section_type('tofc') +EXPECTED_SECTIONS['tofc'].set_i_section_version(1) +EXPECTED_SECTIONS['tofc'].set_e_relationship_type(1) +EXPECTED_SECTIONS['tofc'].set_e_record_type(1) +EXPECTED_SECTIONS['tofc'].set_e_record_data_type(3) +EXPECTED_SECTIONS['tofc'].set_i_data_type_size(32) +EXPECTED_SECTIONS['tofc'].set_i_record_size(4) +EXPECTED_SECTIONS['tofc'].set_wc_data_unit('ns') +EXPECTED_SECTIONS['tofc'].set_accepted_units(['ns']) + +EXPECTED_SECTIONS['tofb'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['tofb'].set_section_name('tofb') +EXPECTED_SECTIONS['tofb'].set_c_signature() +EXPECTED_SECTIONS['tofb'].set_i_header_size(148) +EXPECTED_SECTIONS['tofb'].set_i_header_version(2) +EXPECTED_SECTIONS['tofb'].set_wc_section_type('tofb') +EXPECTED_SECTIONS['tofb'].set_i_section_version(1) +EXPECTED_SECTIONS['tofb'].set_e_relationship_type(1) +EXPECTED_SECTIONS['tofb'].set_e_record_type(1) +EXPECTED_SECTIONS['tofb'].set_e_record_data_type(3) +EXPECTED_SECTIONS['tofb'].set_i_data_type_size(32) +EXPECTED_SECTIONS['tofb'].set_i_record_size(4) +EXPECTED_SECTIONS['tofb'].set_wc_data_unit('ns') +EXPECTED_SECTIONS['tofb'].set_accepted_units(['ns']) + +EXPECTED_SECTIONS['xs'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['xs'].set_section_name('xs') +EXPECTED_SECTIONS['xs'].set_c_signature() +EXPECTED_SECTIONS['xs'].set_i_header_size(148) +EXPECTED_SECTIONS['xs'].set_i_header_version(2) +EXPECTED_SECTIONS['xs'].set_wc_section_type('xs') +EXPECTED_SECTIONS['xs'].set_i_section_version(1) +EXPECTED_SECTIONS['xs'].set_e_relationship_type(1) +EXPECTED_SECTIONS['xs'].set_e_record_type(1) +EXPECTED_SECTIONS['xs'].set_e_record_data_type(3) +EXPECTED_SECTIONS['xs'].set_i_data_type_size(32) +EXPECTED_SECTIONS['xs'].set_i_record_size(4) +EXPECTED_SECTIONS['xs'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['xs'].set_accepted_units(['nm']) + +EXPECTED_SECTIONS['ys'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['ys'].set_section_name('ys') +EXPECTED_SECTIONS['ys'].set_c_signature() +EXPECTED_SECTIONS['ys'].set_i_header_size(148) +EXPECTED_SECTIONS['ys'].set_i_header_version(2) +EXPECTED_SECTIONS['ys'].set_wc_section_type('ys') +EXPECTED_SECTIONS['ys'].set_i_section_version(1) +EXPECTED_SECTIONS['ys'].set_e_relationship_type(1) +EXPECTED_SECTIONS['ys'].set_e_record_type(1) +EXPECTED_SECTIONS['ys'].set_e_record_data_type(3) +EXPECTED_SECTIONS['ys'].set_i_data_type_size(32) +EXPECTED_SECTIONS['ys'].set_i_record_size(4) +EXPECTED_SECTIONS['ys'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['ys'].set_accepted_units(['nm']) + +EXPECTED_SECTIONS['zs'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['zs'].set_section_name('zs') +EXPECTED_SECTIONS['zs'].set_c_signature() +EXPECTED_SECTIONS['zs'].set_i_header_size(148) +EXPECTED_SECTIONS['zs'].set_i_header_version(2) +EXPECTED_SECTIONS['zs'].set_wc_section_type('zs') +EXPECTED_SECTIONS['zs'].set_i_section_version(1) +EXPECTED_SECTIONS['zs'].set_e_relationship_type(1) +EXPECTED_SECTIONS['zs'].set_e_record_type(1) +EXPECTED_SECTIONS['zs'].set_e_record_data_type(3) +EXPECTED_SECTIONS['zs'].set_i_data_type_size(32) +EXPECTED_SECTIONS['zs'].set_i_record_size(4) +EXPECTED_SECTIONS['zs'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['zs'].set_accepted_units(['nm']) + +EXPECTED_SECTIONS['rTip'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['rTip'].set_section_name('rTip') +EXPECTED_SECTIONS['rTip'].set_c_signature() +EXPECTED_SECTIONS['rTip'].set_i_header_size(148) +EXPECTED_SECTIONS['rTip'].set_i_header_version(2) +EXPECTED_SECTIONS['rTip'].set_wc_section_type('rTip') +EXPECTED_SECTIONS['rTip'].set_i_section_version(1) +EXPECTED_SECTIONS['rTip'].set_e_relationship_type(1) +EXPECTED_SECTIONS['rTip'].set_e_record_type(1) +EXPECTED_SECTIONS['rTip'].set_e_record_data_type(3) +EXPECTED_SECTIONS['rTip'].set_i_data_type_size(32) +EXPECTED_SECTIONS['rTip'].set_i_record_size(4) +EXPECTED_SECTIONS['rTip'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['rTip'].set_accepted_units(['nm']) + +EXPECTED_SECTIONS['zApex'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['zApex'].set_section_name('zApex') +EXPECTED_SECTIONS['zApex'].set_c_signature() +EXPECTED_SECTIONS['zApex'].set_i_header_size(148) +EXPECTED_SECTIONS['zApex'].set_i_header_version(2) +EXPECTED_SECTIONS['zApex'].set_wc_section_type('zApex') +EXPECTED_SECTIONS['zApex'].set_i_section_version(1) +EXPECTED_SECTIONS['zApex'].set_e_relationship_type(1) +EXPECTED_SECTIONS['zApex'].set_e_record_type(1) +EXPECTED_SECTIONS['zApex'].set_e_record_data_type(3) +EXPECTED_SECTIONS['zApex'].set_i_data_type_size(32) +EXPECTED_SECTIONS['zApex'].set_i_record_size(4) +EXPECTED_SECTIONS['zApex'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['zApex'].set_accepted_units(['nm']) + +EXPECTED_SECTIONS['zSphereCorr'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['zSphereCorr'].set_section_name('zSphereCorr') +EXPECTED_SECTIONS['zSphereCorr'].set_c_signature() +EXPECTED_SECTIONS['zSphereCorr'].set_i_header_size(148) +EXPECTED_SECTIONS['zSphereCorr'].set_i_header_version(2) +EXPECTED_SECTIONS['zSphereCorr'].set_wc_section_type('zSphereCorr') +EXPECTED_SECTIONS['zSphereCorr'].set_i_section_version(1) +EXPECTED_SECTIONS['zSphereCorr'].set_e_relationship_type(1) +EXPECTED_SECTIONS['zSphereCorr'].set_e_record_type(1) +EXPECTED_SECTIONS['zSphereCorr'].set_e_record_data_type(3) +EXPECTED_SECTIONS['zSphereCorr'].set_i_data_type_size(32) +EXPECTED_SECTIONS['zSphereCorr'].set_i_record_size(4) +EXPECTED_SECTIONS['zSphereCorr'].set_wc_data_unit('nm') +EXPECTED_SECTIONS['zSphereCorr'].set_accepted_units(['nm']) + +# the next three seem to (have been /were used for AMETEK development purposes +EXPECTED_SECTIONS['Position_0'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Position_0'].set_section_name('Position_0') +EXPECTED_SECTIONS['Position_0'].set_c_signature() +EXPECTED_SECTIONS['Position_0'].set_i_header_size(148 + 6 * 4) +EXPECTED_SECTIONS['Position_0'].set_i_header_version(2) +EXPECTED_SECTIONS['Position_0'].set_wc_section_type('Position_0') +EXPECTED_SECTIONS['Position_0'].set_i_section_version(1) +EXPECTED_SECTIONS['Position_0'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Position_0'].set_e_record_type(1) +EXPECTED_SECTIONS['Position_0'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Position_0'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Position_0'].set_i_record_size(12) +EXPECTED_SECTIONS['Position_0'].set_wc_data_unit('') + +EXPECTED_SECTIONS['Position_1'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Position_1'].set_section_name('Position_1') +EXPECTED_SECTIONS['Position_1'].set_c_signature() +EXPECTED_SECTIONS['Position_1'].set_i_header_size(148 + 6 * 4) +EXPECTED_SECTIONS['Position_1'].set_i_header_version(2) +EXPECTED_SECTIONS['Position_1'].set_wc_section_type('Position_1') +EXPECTED_SECTIONS['Position_1'].set_i_section_version(1) +EXPECTED_SECTIONS['Position_1'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Position_1'].set_e_record_type(1) +EXPECTED_SECTIONS['Position_1'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Position_1'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Position_1'].set_i_record_size(12) +EXPECTED_SECTIONS['Position_1'].set_wc_data_unit('') + +EXPECTED_SECTIONS['Position_2'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Position_2'].set_section_name('Position_2') +EXPECTED_SECTIONS['Position_2'].set_c_signature() +EXPECTED_SECTIONS['Position_2'].set_i_header_size(148 + 6 * 4) +EXPECTED_SECTIONS['Position_2'].set_i_header_version(2) +EXPECTED_SECTIONS['Position_2'].set_wc_section_type('Position_2') +EXPECTED_SECTIONS['Position_2'].set_i_section_version(1) +EXPECTED_SECTIONS['Position_2'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Position_2'].set_e_record_type(1) +EXPECTED_SECTIONS['Position_2'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Position_2'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Position_2'].set_i_record_size(12) +EXPECTED_SECTIONS['Position_2'].set_wc_data_unit('') + +EXPECTED_SECTIONS['XDet_mm'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['XDet_mm'].set_section_name('XDet_mm') +EXPECTED_SECTIONS['XDet_mm'].set_c_signature() +EXPECTED_SECTIONS['XDet_mm'].set_i_header_size(148) +EXPECTED_SECTIONS['XDet_mm'].set_i_header_version(2) +EXPECTED_SECTIONS['XDet_mm'].set_wc_section_type('XDet_mm') +EXPECTED_SECTIONS['XDet_mm'].set_i_section_version(1) +EXPECTED_SECTIONS['XDet_mm'].set_e_relationship_type(1) +EXPECTED_SECTIONS['XDet_mm'].set_e_record_type(1) +EXPECTED_SECTIONS['XDet_mm'].set_e_record_data_type(3) +EXPECTED_SECTIONS['XDet_mm'].set_i_data_type_size(32) +EXPECTED_SECTIONS['XDet_mm'].set_i_record_size(4) +EXPECTED_SECTIONS['XDet_mm'].set_wc_data_unit('mm') +EXPECTED_SECTIONS['XDet_mm'].set_accepted_units(['mm']) + +EXPECTED_SECTIONS['YDet_mm'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['YDet_mm'].set_section_name('YDet_mm') +EXPECTED_SECTIONS['YDet_mm'].set_c_signature() +EXPECTED_SECTIONS['YDet_mm'].set_i_header_size(148) +EXPECTED_SECTIONS['YDet_mm'].set_i_header_version(2) +EXPECTED_SECTIONS['YDet_mm'].set_wc_section_type('YDet_mm') +EXPECTED_SECTIONS['YDet_mm'].set_i_section_version(1) +EXPECTED_SECTIONS['YDet_mm'].set_e_relationship_type(1) +EXPECTED_SECTIONS['YDet_mm'].set_e_record_type(1) +EXPECTED_SECTIONS['YDet_mm'].set_e_record_data_type(3) +EXPECTED_SECTIONS['YDet_mm'].set_i_data_type_size(32) +EXPECTED_SECTIONS['YDet_mm'].set_i_record_size(4) +EXPECTED_SECTIONS['YDet_mm'].set_wc_data_unit('mm') +EXPECTED_SECTIONS['YDet_mm'].set_accepted_units(['mm']) + +EXPECTED_SECTIONS['Multiplicity'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Multiplicity'].set_section_name('Multiplicity') +EXPECTED_SECTIONS['Multiplicity'].set_c_signature() +EXPECTED_SECTIONS['Multiplicity'].set_i_header_size(148) +EXPECTED_SECTIONS['Multiplicity'].set_i_header_version(2) +EXPECTED_SECTIONS['Multiplicity'].set_wc_section_type('Multiplicity') +EXPECTED_SECTIONS['Multiplicity'].set_i_section_version(1) +EXPECTED_SECTIONS['Multiplicity'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Multiplicity'].set_e_record_type(1) +EXPECTED_SECTIONS['Multiplicity'].set_e_record_data_type(1) +EXPECTED_SECTIONS['Multiplicity'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Multiplicity'].set_i_record_size(4) +EXPECTED_SECTIONS['Multiplicity'].set_wc_data_unit('') + +EXPECTED_SECTIONS['Vap'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Vap'].set_section_name('Vap') +EXPECTED_SECTIONS['Vap'].set_c_signature() +EXPECTED_SECTIONS['Vap'].set_i_header_size(148) +EXPECTED_SECTIONS['Vap'].set_i_header_version(2) +EXPECTED_SECTIONS['Vap'].set_wc_section_type('Vap') +EXPECTED_SECTIONS['Vap'].set_i_section_version(1) +EXPECTED_SECTIONS['Vap'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Vap'].set_e_record_type(1) +EXPECTED_SECTIONS['Vap'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Vap'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Vap'].set_i_record_size(4) +EXPECTED_SECTIONS['Vap'].set_wc_data_unit('V') +EXPECTED_SECTIONS['Vap'].set_accepted_units(['V']) + +EXPECTED_SECTIONS['Detector Coordinates'] = AptFileSectionMetadata() +EXPECTED_SECTIONS['Detector Coordinates'].set_section_name( + 'Detector Coordinates') +EXPECTED_SECTIONS['Detector Coordinates'].set_c_signature() +EXPECTED_SECTIONS['Detector Coordinates'].set_i_header_size(148) +EXPECTED_SECTIONS['Detector Coordinates'].set_i_header_version(2) +EXPECTED_SECTIONS['Detector Coordinates'].set_wc_section_type( + 'Detector Coordinates') +EXPECTED_SECTIONS['Detector Coordinates'].set_i_section_version(1) +EXPECTED_SECTIONS['Detector Coordinates'].set_e_relationship_type(1) +EXPECTED_SECTIONS['Detector Coordinates'].set_e_record_type(1) +EXPECTED_SECTIONS['Detector Coordinates'].set_e_record_data_type(3) +EXPECTED_SECTIONS['Detector Coordinates'].set_i_data_type_size(32) +EXPECTED_SECTIONS['Detector Coordinates'].set_i_record_size(8) +EXPECTED_SECTIONS['Detector Coordinates'].set_wc_data_unit('mm') +EXPECTED_SECTIONS['Detector Coordinates'].set_accepted_units(['mm']) + +# there is at least a hint that some time ago this section's wcDataUnit was '' + + +# sections whose formatting and purpose is completely unclear + +# Var44 ? magic-in-action? M. K\"uhbach, could well for AMETEK development only +# EXPECTED_SECTIONS['Var44'].set_section_name('Var44') + + +# deprecated sections +# EXPECTED_SECTIONS['Vref'] = AptFileSectionMetadata() # now 'Voltage' + + +# other comments and issues +# Need to check APSuite version and build number +# 'Voltage' section, M. K\uhbach: expect to have units but example *.apt files +# from flat test do not encode a unit in the 'Voltage' section diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py new file mode 100644 index 000000000..50f6cc3ba --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_apt6_utils.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +"""AMETEK APT(6) data exchange file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + + +# from .nomad4exp_process_aptfim_utils import * + +import numpy as np + + +def np_uint16_to_string(uint16_array: np.ndarray) -> str: + """Create string from array of uint16 numbers (UTF-16).""" + str_parsed = '' + for value in uint16_array: + if value != 0: # '\x00' + str_parsed += chr(value) + return np.str(str_parsed) + + +def string_to_typed_nparray(string: str, length: int, + dtype: np.dtype = np.uint8) -> np.ndarray: + """Create fixed length np.uint16 numpy array from string.""" + assert dtype is not None, 'dtype must not be None!' + assert len(string) <= length, 'Input string is longer than \ + number of array elements !' + nparray = np.zeros(length, dtype) + for value in np.arange(0, len(string)): + nparray[value] = ord(string[value]) + return nparray diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py new file mode 100644 index 000000000..9d5128418 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_epos_reader.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +"""ePOS file format reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import os + +import numpy as np + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ + import NxField, get_memory_mapped_data + + +class ReadEposFileFormat(): + """Read *.epos file format.""" + + def __init__(self, filename: str): + assert len(filename) > 5, 'ePOS file incorrect filename ending!' + assert filename.lower().endswith('.epos'), \ + 'ePOS file incorrect file type!' + self.filename = filename + + self.filesize = os.path.getsize(self.filename) + assert self.filesize % 11 * 4 == 0, \ + 'ePOS filesize not integer multiple of 11*4B!' + assert np.uint32(self.filesize / (11 * 4)) < np.iinfo(np.uint32).max, \ + 'ePOS file is too large, currently only 2*32 supported!' + self.number_of_events = np.uint32(self.filesize / (11 * 4)) + + self.epos = {} + + # https://doi.org/10.1007/978-1-4614-3436-8 for file format details + # dtyp_names = ['Reconstructed position along the x-axis (nm)', + # 'Reconstructed position along the y-axis (nm)', + # 'Reconstructed position along the z-axis (nm)', + # 'Reconstructed mass-to-charge-state ratio (Da)', + # 'Raw time-of-flight (ns)', + # 'Standing voltage (V)', + # 'Pulsed voltage (V)', + # 'Ion impact x-coordinate at the detector (mm)', + # 'Ion impact y-coordinate at the detector (mm)', + # 'Number of pulses since the last detected ion (pulses)', + # 'Hit multiplicity (ions)'] + # raw = np.fromfile( fnm, dtype= {'names': dtyp_names, + # 'formats': (, '>f4','>f4','>f4','>f4','>f4','>f4','>u4','>u4') } ) + + def get_reconstructed_positions(self): + """Read xyz columns.""" + # self.epos['reconstructed_positions'] = NxField() + xyz = NxField() + xyz.value = np.zeros([self.number_of_events, 3], np.float32) + xyz.unit = 'nm' + + xyz.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 0 * 4, 11 * 4, self.number_of_events) # x + xyz.value[:, 1] = \ + get_memory_mapped_data(self.filename, '>f4', + 1 * 4, 11 * 4, self.number_of_events) # y + xyz.value[:, 2] = \ + get_memory_mapped_data(self.filename, '>f4', + 2 * 4, 11 * 4, self.number_of_events) # z + return xyz + + def get_mass_to_charge(self): + """Read mass-to-charge column.""" + m_n = NxField() + m_n.value = np.zeros([self.number_of_events, 1], np.float32) + m_n.unit = 'Da' + + m_n.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 3 * 4, 11 * 4, self.number_of_events) + return m_n + + def get_raw_time_of_flight(self): + """Read raw (uncorrected) time-of-flight.""" + raw_tof = NxField() + raw_tof.value = np.zeros([self.number_of_events, 1], np.float32) + raw_tof.unit = 'ns' + + # according to DOI: 10.1007/978-1-4899-7430-3 raw time-of-flight + # i.e. this is an uncorrected time-of-flight + # for which effects uncorrect? + # Only the proprietary IVAS/APSuite source code knows for sure + raw_tof.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 4 * 4, 11 * 4, self.number_of_events) + return raw_tof + + def get_standing_voltage(self): + """Read standing voltage.""" + # according to DOI: 10.1007/978-1-4899-7430-3 + # standing voltage on the specimen + # according to DOI: 10.1007/978-1-4614-8721-0 also-known as DC voltage + dc_voltage = NxField() + dc_voltage.value = np.zeros([self.number_of_events, 1], np.float32) + dc_voltage.unit = 'kV' + # different to the above-mentioned references Gault et al. state + # that standing and pulse_voltage are in V instead of kV + + dc_voltage.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 5 * 4, 11 * 4, self.number_of_events) + return dc_voltage + + def get_pulse_voltage(self): + """Read pulse voltage.""" + # according to DOI: 10.1007/978-1-4899-7430-3 + # additional voltage to trigger field evaporation in case + # of high-voltage pulsing, 0 for laser pulsing + pu_voltage = NxField() + pu_voltage.value = np.zeros([self.number_of_events, 1], np.float32) + pu_voltage.unit = 'kV' + + pu_voltage.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 6 * 4, 11 * 4, self.number_of_events) + return pu_voltage + + def get_hit_positions(self): + """Read ion impact positions on detector.""" + hit_positions = NxField() + hit_positions.value = np.zeros([self.number_of_events, 2], np.float32) + hit_positions.unit = 'mm' + + hit_positions.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 7 * 4, 11 * 4, self.number_of_events) # x + hit_positions.value[:, 1] = \ + get_memory_mapped_data(self.filename, '>f4', + 8 * 4, 11 * 4, self.number_of_events) # y + return hit_positions + + def get_number_of_pulses(self): + """Read number of pulses.""" + # according to DOI: 10.1007/978-1-4899-7430-3 + # number of pulses since last event detected + # 0 after the first ion per pulse + # also known as $\Delta Pulse$ + npulses = NxField() + npulses.value = np.zeros([self.number_of_events, 1], np.uint32) + npulses.unit = '' + + npulses.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>u4', + 9 * 4, 11 * 4, self.number_of_events) + return npulses + + def get_ions_per_pulse(self): + """Read ions per pulse.""" + # according to DOI: 10.1007/978-1-4899-7430-3 + # ions per pulse, 0 after the first ion + ions_per_pulse = NxField() + ions_per_pulse.value = np.zeros([self.number_of_events, 1], np.uint32) + ions_per_pulse.unit = '' + + ions_per_pulse.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>u4', + 10 * 4, 11 * 4, self.number_of_events) + return ions_per_pulse diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py new file mode 100644 index 000000000..9b4de983e --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_ods2metadata.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# ##MK add license + +"""Parse LibreCalc/Excel table into JSON template dictionary.""" + +import json + +import pandas as pd + +import numpy as np + +# create a json dictionary with all those entries of the NXDL +# for which the metadata/data can not be extracted from files but +# need to be specified by other means (e.g. human, control software, +# external databases) + +# MYPREFIX='C:/Users/kuehbacm/Research/HU_HU_HU/FAIRmatSoftwareDevelopment/Sprint05/' +# sys.path.append(MYPREFIX) +PREFIX = '' +TESTFILE = 'NXapm.nxdl.Template.InformationSources.ods' + +DEFAULTS = {'NX_FLOAT': 0., + 'NX_CHAR': 'specify', + 'NX_INT': 0, + 'NX_UINT': 0, + 'NX_POSINT': 0, + 'NX_BOOLEAN': False, + 'NX_NUMBER': 0, + 'NX_DATE_TIME': '2009-06-30T18:30:00+02:00'} + +# NEW ISSUE: make this a function call and become integrated into the apm reader + + +def ods_to_json_metadata_template(file_name): + """Parse LibreCalc/Excel table into JSON template dictionary.""" + # file_name = PREFIX + TESTFILE + tmp = pd.read_excel(file_name, sheet_name='Sheet1', engine="odf", + skiprows=2, keep_default_na=False, na_values=['_']) + + other_data_sources = {} + vendor_files_sources = {} + + for rowidx in np.arange(0, tmp.shape[0]): + nxdl_dtype = tmp.iloc[rowidx, 8] + nxdl_enum = tmp.iloc[rowidx, 9] + nxdl_path = tmp.iloc[rowidx, 10] + nxdl_use = tmp.iloc[rowidx, 11] + + assert nxdl_use in [0, 1], \ + print("nxdl_use is not 0 or 1!") + + if nxdl_use == 1: + print(nxdl_path) + assert nxdl_dtype in DEFAULTS.keys(), \ + 'Unresolvable nxdl_dtype ' + nxdl_dtype + ' !' + if nxdl_enum == '': + other_data_sources[nxdl_path] = DEFAULTS[nxdl_dtype] + else: + other_data_sources[nxdl_path] = nxdl_enum + else: + print(nxdl_path) + assert nxdl_dtype in DEFAULTS.keys(), \ + 'Unresolvable nxdl_dtype ' + nxdl_dtype + ' !' + if nxdl_enum == '': + vendor_files_sources[nxdl_path] = DEFAULTS[nxdl_dtype] + else: + vendor_files_sources[nxdl_path] = nxdl_enum + + with open(file_name + '.OtherMetaDataDefaults.json', 'w', encoding='utf-8') \ + as file_handle: + json.dump(other_data_sources, file_handle, + ensure_ascii=False, indent=4) + # ManuallyCollectedMetadata + + with open(file_name + '.FileParseableDefaults.json', 'w', encoding='utf-8') \ + as file_handle: + json.dump(vendor_files_sources, file_handle, + ensure_ascii=False, indent=4) + + +ods_to_json_metadata_template(PREFIX + TESTFILE) diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py new file mode 100644 index 000000000..9489c1925 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_pos_reader.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +"""POS file format reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import os + +import numpy as np + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ + import NxField, get_memory_mapped_data + + +class ReadPosFileFormat(): + """Read *.pos file format.""" + + def __init__(self, filename: str): + assert len(filename) > 4, 'POS file incorrect filename ending!' + assert filename.lower().endswith('.pos'), \ + 'POS file incorrect file type!' + self.filename = filename + + self.filesize = os.path.getsize(self.filename) + assert self.filesize % 4 * 4 == 0, \ + 'POS filesize not integer multiple of 4*4B!' + assert np.uint32(self.filesize / (4 * 4)) < np.iinfo(np.uint32).max, \ + 'POS file is too large, currently only 2*32 supported!' + self.number_of_events = np.uint32(self.filesize / (4 * 4)) + + self.pos = {} + + # https://doi.org/10.1007/978-1-4614-3436-8 for file format details + # dtyp_names = ['Reconstructed position along the x-axis (nm)', + # 'Reconstructed position along the y-axis (nm)', + # 'Reconstructed position along the z-axis (nm)', + # 'Reconstructed mass-to-charge-state ratio (Da)'] + + def get_reconstructed_positions(self): + """Read xyz columns.""" + # self.pos['reconstructed_positions'] = NxField() + xyz = NxField() + xyz.value = np.zeros([self.number_of_events, 3], np.float32) + xyz.unit = 'nm' + + xyz.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 0 * 4, 4 * 4, self.number_of_events) # x + xyz.value[:, 1] = \ + get_memory_mapped_data(self.filename, '>f4', + 1 * 4, 4 * 4, self.number_of_events) # y + xyz.value[:, 2] = \ + get_memory_mapped_data(self.filename, '>f4', + 2 * 4, 4 * 4, self.number_of_events) # z + return xyz + + def get_mass_to_charge(self): + """Read mass-to-charge column.""" + # self.pos['mass_to_charge_state_ratios'] = NxField() + m_n = NxField() + m_n.value = np.zeros([self.number_of_events, 1], np.float32) + m_n.unit = 'Da' + + m_n.value[:, 0] = \ + get_memory_mapped_data(self.filename, '>f4', + 3 * 4, 4 * 4, self.number_of_events) + return m_n diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py new file mode 100644 index 000000000..9a064a071 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rng_reader.py @@ -0,0 +1,166 @@ +#!/usr/bin/env python3 +"""RNG range file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import re + +import numpy as np + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ + import NxField, NxIon, significant_range, create_isotope_vector, \ + isotope_vector_to_dict_keyword + + +def evaluate_rng_range_line( + i: int, line: str, column_id_to_label: dict, number_of_columns: int) -> dict: + """Represent information content of a single range line.""" + # example line: '. 107.7240 108.0960 1 0 0 0 0 0 0 0 0 0 3 0 0 0' + info = {} + info['identifier'] = 'Range' + str(i) + info['range'] = None + info['comp'] = [] + info['color'] = None # do not parse out user-defined color + + tmp = re.split(r'\s+', line) + assert len(tmp) is number_of_columns, 'Line ' + line \ + + ' inconsistent number columns!' + assert tmp[0] == '.', 'Line ' + line + ' has inconsistent line prefix!' + + assert significant_range( + np.float64(tmp[1]), np.float64(tmp[2])), \ + 'Line ' + line + ' insignificant range!' + info['range'] = np.float64(np.asarray([tmp[1], tmp[2]])) + + # line encodes multiplicity of element via array of multiplicity counts + flags_all = np.asarray(tmp[3:len(tmp)], np.uint32) + if np.sum(flags_all) > 0: + for j in np.arange(0, len(flags_all)): + assert flags_all[j] >= 0, 'Line ' + line \ + + ' no negative element counts!' + if flags_all[j] > 0: + info['comp'] += [column_id_to_label[j + 1]] * flags_all[j] + else: + raise ValueError('Line ' + line + ' no element counts!') + return info + + +def evaluate_rng_ion_type_header(line: str) -> dict: + """Represent information content in the key header line.""" + # line = '------------------- Fe Mg Al Mn Si V C Ga Ti Ca O Na Co H' + info = {} + info['column_id_to_label'] = {} + tmp = re.split(r'\s+', line) + assert len(tmp) > 1, 'RNG file does not contain iontype labels!' + for i in np.arange(1, len(tmp)): + info['column_id_to_label'][i] = tmp[i] + return info + + +class ReadRngFileFormat(): + """Read *.rng file format.""" + + def __init__(self, filename: str): + assert len(filename) > 4, 'RNG file incorrect filename ending!' + assert filename.lower().endswith('.rng'), \ + 'RNG file incorrect file type!' + self.filename = filename + + self.rng = {} + self.rng['ions'] = {} + self.rng['ranges'] = {} + + def read(self): + """Read RNG range file content.""" + with open(self.filename, mode='r', encoding='utf8') as rngf: + txt = rngf.read() + + txt = txt.replace('\r\n', '\n') # windows to unix EOL conversion + txt = txt.replace(',', '.') # use decimal dots instead of comma + txt_stripped = [line for line in txt.split('\n') + if line.strip() != '' and line.startswith('#') is False] + del txt + + # see DOI: 10.1007/978-1-4899-7430-3 for further details to this + # Oak Ridge National Lab / Oxford *.rng file format + # only the first ------ line is relevant + # it details all ion labels aka ions + # AMETEK's IVAS/APSuite-specific trailing + # polyatomic extension is redundant info + + tmp = None + current_line_id = int(0) # search key header line + for line in txt_stripped: + tmp = re.search(r'----', line) + if tmp is None: + current_line_id += int(1) + else: + break + assert tmp is not None, 'RNG file does not contain key header line!' + + header = evaluate_rng_ion_type_header(txt_stripped[current_line_id]) + + tmp = re.split(r'\s+', txt_stripped[0]) + assert tmp[0].isnumeric() is True, 'Number of species corrupted!' + number_of_atom_types = int(tmp[0]) + assert number_of_atom_types >= 0, 'No species defined!' + assert tmp[1].isnumeric() is True, 'Number of ranges corrupted!' + number_of_ion_types = int(tmp[1]) + assert number_of_ion_types >= 0, 'No ranges defined!' + + for i in np.arange(current_line_id + 1, + current_line_id + 1 + number_of_ion_types): + obj = evaluate_rng_range_line( + i - current_line_id, txt_stripped[i], + header['column_id_to_label'], + number_of_atom_types + 3) + + assert obj is not None, \ + 'Line ' + txt_stripped[i] + ' is corrupted!' + self.rng['ranges'][obj['identifier']] = obj + + for obj in self.rng['ranges'].values(): + hashvector = create_isotope_vector(obj['comp']) + keyword = isotope_vector_to_dict_keyword(hashvector) + + if keyword not in self.rng['ions'].keys(): + self.rng['ions'][keyword] = NxIon() + self.rng['ions'][keyword].name = NxField(keyword, None) + self.rng['ions'][keyword].charge_state = \ + NxField(np.int32(0), '') + # RNG files do not store charge state + self.rng['ions'][keyword].isotope_vector = \ + NxField(hashvector, None) + + self.rng['ions'][keyword].add_range( + obj['range'][0], obj['range'][1]) + + def report_range(self): + """Summarize content in a range file.""" + print(self.rng['ions']) + print(self.rng['ranges']) + + +if __name__ == 'main': + pass + # testing + # parsedFile = ReadRngFileFormat('../../SeHoKim_R5076_44076_v02.rng') diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py new file mode 100644 index 000000000..1075b7726 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_rrng_reader.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python3 +"""RRNG range file reader used by atom probe microscopists.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import re + +import numpy as np + +from nexusparser.tools.dataconverter.readers.apm.utils.aptfim_io_utils \ + import NxField, NxIon, significant_range, create_isotope_vector, isotope_vector_to_dict_keyword + + +def evaluate_rrng_range_line(i: int, line: str, ion_type_names: list) -> dict: + """Evaluate information content of a single range line.""" + # example line 'Range7 = 42.8160 43.3110 vol:0.04543 + # Al:1 O:1 Name: AlO Color:00FFFF' + # according to DOI: 10.1007/978-1-4614-8721-0 + # mqmin, mqmax, vol, ion composition is required, + # name and color fields are optional + info = {} + info['identifier'] = 'Range' + str(i) + info['range'] = None + info['comp'] = [] + info['volume'] = None # do not parse out volume + info['color'] = None # do not parse out user-defined color + + tmp = re.split(r'[\s=]+', line) + assert len(tmp) >= 6, 'Line ' + line + \ + ' does not contain all required fields!' + assert tmp[0] == 'Range' + str(i), 'Line ' + line + \ + ' has inconsistent line prefix!' + + assert significant_range(np.float64(tmp[1]), np.float64(tmp[2])), \ + 'Line ' + line + ' insignificant range!' + info['range'] = np.float64(np.asarray([tmp[1], tmp[2]])) + + # assert tmp[3].lower().startswith('vol:'), 'Line ' + line + \ + # ' vol syntax corrupted!' + # V = re.split(r':', tmp[3])[1] + # assert tmp[-1].lower().startswith('color:'), 'Line ' + line + \ + # ' color syntax corrupted!' + # if tmp[-1].lower().startswith('color:') and len(re.split(r':', + # tmp[-1])[1]) == 6 and self.color = '#' + re.split(r':', tmp[-1])[1] + # HEX_COLOR_REGEX = r'^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$' + # replace r'^#( ... + # regexp = re.compile(HEX_COLOR_REGEX) + # if regexp.search(tmp[-1].split(r':')): + + for information in tmp[4:-1]: + ion_type_multiplicity = re.split(r':+', information) + assert len(ion_type_multiplicity) == 2, \ + 'Information incorrectly formatted!' + # skip vol, namee, and color information + if ion_type_multiplicity[0].lower() \ + not in ['vol', 'color', 'name']: + assert ion_type_multiplicity[0] in ion_type_names, \ + 'Line ' + line + ' unknown iontype!' + assert np.uint32(ion_type_multiplicity[1]) > 0, \ + 'Line ' + line + ' zero or negative multiplicity!' + assert np.uint32(ion_type_multiplicity[1]) < 256, \ + 'Line ' + line + ' unsupport high multiplicity!' + info['comp'] += [ion_type_multiplicity[0]] \ + * int(ion_type_multiplicity[1]) + return info + + +class ReadRrngFileFormat(): + """Read *.rrng file format.""" + + def __init__(self, filename: str): + assert len(filename) > 5, 'RRNG file incorrect filename ending!' + assert filename.lower().endswith('.rrng'), \ + 'RRNG file incorrect file type!' + self.filename = filename + + self.rrng = {} + self.rrng['ionnames'] = [] + self.rrng['ranges'] = {} + self.rrng['ions'] = {} + + def read(self): + """Read content of an RRNG range file.""" + with open(self.filename, mode='r', encoding='utf8') as rrngf: + txt = rrngf.read() + + txt = txt.replace('\r\n', '\n') # windows to unix EOL conversion + txt = txt.replace(',', '.') # use decimal dots instead of comma + txt_stripped = [line for line in txt.split('\n') + if line.strip() != '' and line.startswith('#') is False] + del txt + + # see DOI: 10.1007/978-1-4899-7430-3 for further details to this + # AMETEK/Cameca's *.rrng file format + + # first, parse [Ions] section, which holds a list of element names + # there are documented cases where experimentalists add custom strings + # to specify ranges they consider special + # these are loaded as user types + # with isotope_vector np.iinfo(np.uint16).max + where = [idx for idx, element in + enumerate(txt_stripped) if element == '[Ions]'] + assert isinstance(where, list), 'Section [Ions] not found!' + assert len(where) == 1, 'Section [Ions] not found or ambiguous!' + current_line_id = where[0] + 1 + + tmp = re.split(r'[\s=]+', txt_stripped[current_line_id]) + assert len(tmp) == 2, '[Ions]/Number line corrupted!' + assert tmp[0] == 'Number', '[Ions]/Number incorrectly formatted!' + assert tmp[1].isnumeric(), '[Ions]/Number not a number!' + number_of_ion_names = int(tmp[1]) + assert number_of_ion_names > 0, 'No ion names defined!' + current_line_id += 1 + for i in np.arange(0, number_of_ion_names): + tmp = re.split(r'[\s=]+', txt_stripped[current_line_id + i]) + assert len(tmp) == 2, '[Ions]/Ion line corrupted!' + assert tmp[0] == 'Ion' + str(i + 1), \ + '[Ions]/Ion incorrectly formatted!' + assert isinstance(tmp[1], str), '[Ions]/Name not a string!' + self.rrng['ionnames'].append(tmp[1]) # [tmp[0]] = tmp[1] + + # second, parse [Ranges] section + where = [idx for idx, element in + enumerate(txt_stripped) if element == '[Ranges]'] + assert isinstance(where, list), 'Section [Ranges] not found!' + assert len(where) == 1, 'Section [Ranges] not found or ambiguous!' + current_line_id = where[0] + 1 + + tmp = re.split(r'[\s=]+', txt_stripped[current_line_id]) + assert len(tmp) == 2, '[Ranges]/Number line corrupted!' + assert tmp[0] == 'Number', '[Ranges]/Number incorrectly formatted!' + assert tmp[1].isnumeric(), '[Ranges]/Number not a number!' + number_of_ranges = int(tmp[1]) + assert number_of_ranges > 0, 'No ranges defined!' + current_line_id += 1 + + for i in np.arange(0, number_of_ranges): + obj = evaluate_rrng_range_line( + i + 1, txt_stripped[current_line_id + i], self.rrng['ionnames']) + + assert obj != {}, \ + 'Line ' + txt_stripped[current_line_id + i] + ' is corrupted!' + self.rrng['ranges'][obj['identifier']] = obj + + for obj in self.rrng['ranges'].values(): + hashvector = create_isotope_vector(obj['comp']) + keyword = isotope_vector_to_dict_keyword(hashvector) + + if keyword not in self.rrng['ions'].keys(): + self.rrng['ions'][keyword] = NxIon() + self.rrng['ions'][keyword].name = NxField(keyword, None) + self.rrng['ions'][keyword].charge_state = \ + NxField(np.int32(0), '') + # RRNG files do not store charge state + self.rrng['ions'][keyword].isotope_vector = \ + NxField(hashvector, None) + + self.rrng['ions'][keyword].add_range( + obj['range'][0], obj['range'][1]) + + def report_range(self): + """Summarize content in a range file.""" + print(self.rrng['ions']) + print(self.rrng['ranges']) + + +if __name__ == 'main': + pass + # testing + # parsedFile = ReadRrngFileFormat('../../R31_06365-v02.rrng') diff --git a/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_utils.py b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_utils.py new file mode 100644 index 000000000..4949ed35e --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/apm/utils/aptfim_io_utils.py @@ -0,0 +1,215 @@ +#!/usr/bin/env python3 +"""Set of utility tools for parsing file formats used by atom probe.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +from typing import Tuple + +import mmap + +import numpy as np + +from ase.data import atomic_numbers + +# restrict the number distinguished ion types +MAX_NUMBER_OF_ION_SPECIES = 256 +# restrict number of atoms for molecular ion fragments +MAX_NUMBER_OF_ATOMS_PER_ION = 32 +# Da or atomic mass unit (amu) +MQ_EPSILON = np.float32(1.0e-4) + + +def rchop(string: str = '', suffix: str = '') -> str: + """Right-chop a string.""" + if suffix and string.endswith(suffix): + return string[:-len(suffix)] + return string + + +def hash_isotope(proton_number: np.uint8 = 0, + neutron_number: np.uint8 = 0) -> np.uint16: + """Encode an isotope to a hashvalue.""" + assert proton_number >= 0, 'Proton number >= 0 needed!' + assert proton_number < 256, 'Proton number < 256 needed!' + assert neutron_number >= 0, 'Neutron number >= 0 needed!' + assert neutron_number < 256, 'Neutron number < 256 needed!' + return np.uint16(proton_number) \ + + np.uint16(256) * np.uint16(neutron_number) + + +def unhash_isotope(hashval: np.uint16 = 0) -> Tuple[np.uint8]: + """Decode a hashvalue to an isotope.""" + assert isinstance(hashval, int), 'Hashval needs to be integer!' + assert hashval >= 0, 'Hashval needs to be an unsigned integer!' + assert hashval <= np.iinfo(np.uint16).max, \ + 'Hashval needs to map on an uint16!' + neutron_number = np.uint16(hashval / np.uint16(256)) + proton_number = np.uint16(hashval - neutron_number * np.uint16(256)) + return (proton_number, neutron_number) + + +def create_isotope_vector(building_blocks: list) -> np.ndarray: + """Create an array of isotope hashvalues.""" + # building_blocks are usually names of elements in the periodic tables + # if not we assume the ion is special, a user type + + # test cases: + # create_isotope_vector(['Fe', 'Fe', 'O', 'O', 'O']) + # create_isotope_vector([]) + # create_isotope_vector(['Markus']) + + # lookup table of known elements + # element_symbol = chemical_symbols[1::] + element_proton_number = atomic_numbers + + hashvector = [] + assert len(building_blocks) <= MAX_NUMBER_OF_ATOMS_PER_ION, \ + 'Faced an ion with an unsupported high complexity!' + # MAX_NUMBER_OF_ATOMS_PER_ION can be modified to describe large fragments + + if building_blocks == []: # special case unknown ion type + return np.array([0] * MAX_NUMBER_OF_ATOMS_PER_ION, dtype=np.uint16) + + for block in building_blocks: + if block in element_proton_number.keys(): + proton_number = element_proton_number[block] + neutron_number = 0 + # *.rng, *.rrng files do not resolve isotopes! + + hashvector.append(hash_isotope(proton_number, neutron_number)) + else: + print('WARNING: Block does not specify a unique element name!') + print('WARNING: Importing a user-defined type!') + # special case user_defined_type + return np.array([0] * MAX_NUMBER_OF_ATOMS_PER_ION, dtype=np.uint16) + + assert len(hashvector) <= MAX_NUMBER_OF_ATOMS_PER_ION, \ + 'More than ' + MAX_NUMBER_OF_ATOMS_PER_ION \ + + ' atoms in the molecular ion!' + + hashvector = np.asarray(hashvector, np.uint16) + hashvector = np.sort(hashvector, kind='stable')[::-1] + retval = np.zeros([1, MAX_NUMBER_OF_ATOMS_PER_ION], np.uint16) + retval[0, 0:len(hashvector)] = hashvector + return retval + + +def isotope_vector_to_dict_keyword(uint16_array: np.ndarray) -> str: + """Create keyword for dictionary from isotope_vector.""" + lst = [] + for value in uint16_array: + lst.append(str(value)) + assert lst != [], 'List from isotope_vector is empty!' + return ','.join(lst) + + +def significant_overlap(interval: np.float64, + interval_set: np.float64) -> bool: + """Check if interval overlaps within with members of interval set.""" + assert np.shape(interval) == (2,), 'Interval needs to have two columns!' + assert np.shape(interval_set)[1] == 2, \ + 'Interval_set needs to have two columns!' + # interval = np.array([53.789, 54.343]) + # interval_set = np.array([[27.778, 28.33]]) # for testing purposes + if np.shape(interval_set)[0] >= 1: + left_and_right_delta = np.zeros([np.shape(interval_set)[0], 2], bool) + left_and_right_delta[:, 0] = (interval_set[:, 0] - interval[1]) \ + > MQ_EPSILON + left_and_right_delta[:, 1] = (interval[0] - interval_set[:, 1]) \ + > MQ_EPSILON + no_overlap = np.array([np.any(i) for i in left_and_right_delta]) + if np.all(no_overlap): + return False + return True + return False + + +def significant_range(left: np.float64, right: np.float64) -> bool: + """Check if inclusive interval bounds [left, right] span a finite range.""" + assert left >= np.float64(0.) and right >= np.float64(0.), \ + 'Left and right bound have to be positive!' + if (right - left) > MQ_EPSILON: + return True + return False + + +def get_memory_mapped_data(filename: str, data_type: str, oset: int, + strd: int, shp: int) -> np.ndarray: + """Memory-maps file plus offset strided read of typed data.""" + # https://stackoverflow.com/questions/60493766/ \ + # read-binary-flatfile-and-skip-bytes for I/O access details + + with open(filename, 'rb') as file_handle, \ + mmap.mmap(file_handle.fileno(), length=0, access=mmap.ACCESS_READ) as memory_mapped: + return np.ndarray(buffer=memory_mapped, dtype=data_type, + offset=oset, strides=strd, shape=shp).copy() + + +class NxField(): + """Representative of a NeXus field.""" + + def __init__(self, value: str = None, unit: str = None): + self.parent = None + self.isa = None # ontology reference concept ID e.g. + self.value = value + self.unit = unit + self.attributes = None + + def get_value(self): + """Get value.""" + return self.value + + def get_unit(self): + """Get unit.""" + return self.unit + + +class NxIon(): + """Representative of a NeXus base class NXion.""" + + def __init__(self): + self.ion_type = NxField('', '') + self.isotope_vector = NxField(np.empty(0, np.uint16), '') + self.charge_state = NxField(np.int32(0), '') + self.name = NxField('', '') + self.ranges = NxField(np.empty((0, 2), np.float64), 'amu') + + def add_range(self, mqmin: np.float64, mqmax: np.float64): + """Adding mass-to-charge-state ratio interval.""" + assert significant_range(mqmin, mqmax) is True, \ + 'Refusing to add epsilon range!' + assert significant_overlap(np.asarray([mqmin, mqmax]), + self.ranges.value) is False, \ + 'Refusing overlapping range!' + self.ranges.value = np.vstack((self.ranges.value, + np.array([mqmin, mqmax]))) + + def get_human_readable_name(self): + """Get human-readable name from isotop_vector.""" + # NEW ISSUE: how to display the isotope_vector in LaTeX notation? + return self.name.value + + +# a = NxIon() +# a.add_range(1., 2.) +# a.add_range(2.2, 3.) +# a.add_range(0.1, 0.99) diff --git a/nexusparser/tools/dataconverter/readers/base/reader.py b/nexusparser/tools/dataconverter/readers/base/reader.py new file mode 100644 index 000000000..91ed8c70c --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/base/reader.py @@ -0,0 +1,46 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""The abstract class off of which to implement readers.""" +from abc import ABC, abstractmethod +from typing import Tuple + + +class BaseReader(ABC): + """ + The abstract class off of which to implement readers. + + The filename's prefix is the identifier. The '_reader.py' is snipped out. + For this BaseReader with filename base_reader.py the ID becomes 'base' + + For future reference: + - Support links by setting the path in the template with the following object + object = {"link": "/path/to/source/data"} + """ + + # pylint: disable=too-few-public-methods + + # Whitelist for the NXDLs that the reader supports and can process + supported_nxdls = [""] + + @abstractmethod + def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: + """Reads data from given file and returns a filled template dictionary""" + return template + + +READER = BaseReader diff --git a/nexusparser/tools/dataconverter/readers/ellips/reader.py b/nexusparser/tools/dataconverter/readers/ellips/reader.py new file mode 100644 index 000000000..1ed946d1e --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/ellips/reader.py @@ -0,0 +1,183 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""An example reader implementation for the DataConverter.""" +from typing import Tuple +import json + +import pyaml as yaml +import os +import pandas as pd + +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader + +default_header = {'sep': '\t', 'skip': 0} + + +def load_header(filename, default=default_header): + """ load the yaml description file, and apply defaults as well + Parameters: + filename: a yaml file containing the definitions + default_header: predefined default values + """ + with open(filename, 'rt') as fp: + header = yaml.yaml.safe_load(fp) + + for k, v in default.items(): + if k not in header: + header[k] = v + + return header +# end load_header + + +def load_as_blocks(fn, header): + """ load a CSV output file using the header dict + """ + required_parameters = ("colnames", "skip", "sep") + for required_parameter in required_parameters: + if required_parameter not in header: + raise ValueError('colnames, skip and sep are required header parameters!') + + if not os.path.isfile(fn): + raise IOError(f'File not found error: {fn}') + + data = pd.read_csv(fn, + # use header = None and names to define custom column names + header=None, + names=header['colnames'], + skiprows=header['skip'], + delimiter=header['sep']) + + # if our table has a block structure, we hav to + # handle it in a special way + dt = data.to_numpy() + keylist = [] + res = {} + if 'blocks' in header: + for head in header['blocks']: + indx = data.columns == head + icol = indx.nonzero()[0][0] + searcharray = dt.take(icol, axis=len(dt.shape) - 1) + dt = dt.compress(~indx, axis=len(dt.shape) - 1) + while (len(searcharray.shape) > 1): + searcharray = searcharray.take(0, axis=0) + + bkeys = data[head].unique() + lens = [(searcharray == i).sum() for i in bkeys] + data = data.drop(head, axis=1) + + if (lens == lens[0]).all(): + newshape = list(dt.shape) + # dt.shape = (lens[0], int(dt.shape[0]/lens[0]), dt.shape[1]) + i = newshape.index(max(newshape)) + newshape[i] = lens[0] + newshape.insert(i, int(dt.shape[i] / lens[0])) + dt.shape = tuple(newshape) + # dt.shape = (int(dt.shape[0]/lens[0]), lens[0], dt.shape[1]) + keylist.append(bkeys) + res[head] = bkeys + + res['data'] = dt.astype("f") + res['keys'] = keylist + if "wavelength" in data.columns: + i = (data.columns == "wavelength").nonzero()[0][0] + searcharray = dt.take(i, axis=len(dt.shape) - 1) + while (len(searcharray.shape) > 1): + searcharray = searcharray.take(0, axis=0) + res["wavelength"] = searcharray + return res +# end of load_as_blocks + + +class EllipsometryReader(BaseReader): + """An example reader implementation for the DataConverter.""" + + # pylint: disable=too-few-public-methods + + # Whitelist for the NXDLs that the reader supports and can process + supported_nxdls = ["NXellipsometry"] + + def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: + """Reads data from given file and returns a filled template dictionary""" + + if not file_paths: + raise Exception("No input files were given to Ellipsometry Reader.") + + header = default_header + for file_path in file_paths: + file_extension = os.path.splitext(file_path)[1] + if file_extension.lower() in [".yaml", ".yml"]: + header = load_header(file_path, header) + if "filename" not in header: + raise KeyError("filename is missing") + tempdata = load_as_blocks(header["filename"], header) + header["measured_data"] = tempdata["data"] + del tempdata["keys"] + del tempdata["data"] + for k in tempdata: + header[k] = tempdata[k] + if "calibration_filename" in header: + calibration = load_as_blocks(header["calibration_filename"], header) + for k in calibration: + header[f"calibration_{k}"] = calibration[k] + dk = ["filename", "skip", "sep", "blocks", "colnames", "x-var", "y-var", "type"] + + for k in dk: + if k in header: + del header[k] + + return_data = {} + for k in template.keys(): + if "@units" in k: + continue + short_k = k.rsplit("/", 1)[1] + k_units = f"{k}/@units" + if short_k in header: + if k_units in template: + if isinstance(header[short_k], str) and " " in header[short_k]: + val = header.pop(short_k).rsplit(" ", 1) + return_data[k_units] = val[-1] + return_data[k] = val[0] + try: + return_data[k] = float(val[0]) + except ValueError: + pass + else: + # we did not find unit but we assigned a value + return_data[k] = header.pop(short_k) + else: + return_data[k] = header.pop(short_k) + # The entries in the template dict should correspond with what the dataconverter + # outputs with --generate-template for a provided NXDL file + # field_name = k[k.rfind("/") + 1:] + # if field_name[0] != "@": + # template[k] = data[field_name] + # if f"{field_name}_units" in data.keys() and f"{k}/@units" in template.keys(): + # template[f"{k}/@units"] = data[f"{field_name}_units"] + # we are hardcoding the wavelength unit but it has to be fixed + return_data["/ENTRY[entry]/SAMPLE[sample]/wavelength/@units"] = "nm" + return_data["/ENTRY[entry]/INSTRUMENT[instrument]/angle_of_incidence/@units"] = "degrees" + + # Wavelength should be of type float. Pandas sends it back as Python object aka dtype('O') + return_data["/ENTRY[entry]/SAMPLE[sample]/wavelength"] = return_data["/ENTRY[entry]/SAMPLE[sample]/wavelength"].astype("float64") + + return return_data + + +# This has to be set to allow the convert script to use this reader. Set it to "MyDataReader". +READER = EllipsometryReader diff --git a/nexusparser/tools/dataconverter/readers/em_nion/reader.py b/nexusparser/tools/dataconverter/readers/em_nion/reader.py new file mode 100644 index 000000000..36852015a --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/em_nion/reader.py @@ -0,0 +1,296 @@ +#!/usr/bin/env python3 +"""Nion/NionSwift EM reader.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +import re + +import json + +from typing import Tuple + +import numpy as np + +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader + +from nexusparser.tools.dataconverter.readers.em_nion.utils.em_io_utils_misc \ + import recursive_query_nested_dict, assess_situation_with_input_files, NION_ERROR_CODES + +from nexusparser.tools.dataconverter.readers.em_nion.utils.em_io_utils_ods2dct \ + import ods_to_json_routing_dict + +# each experiment on a given sample should be stored in an own file + + +def report_appdef_version(template: dict) -> dict: + """Specify which application definition version is used.""" + template["/ENTRY[entry]/definition"] = "NXem_nion" + template["/ENTRY[entry]/definition/@version"] = "1" + + return template + + +def extract_data_from_json_file(file_name: str, template: dict) -> dict: + """Query those data which a NionSwift json file has.""" + # file_name = 'HAADF_01.json' + print('Extracting data from NionSwift JSON file: ' + file_name) + + with open(file_name, 'r', encoding='utf-8') as infile: + jsn = json.load(infile) + + json_to_nxdl_path = ods_to_json_routing_dict() + + # extract quantities + for keyword, value in json_to_nxdl_path.items(): + assert isinstance(value, tuple), \ + 'Keyword: ' + keyword + '\n' + 'Value is not a tuple!' + assert len(value) == 2, \ + 'Keyword: ' + keyword + '\n' + 'Value is not a duplett!' + + nxdl_path, nxdl_unit = value + + if nxdl_path in template.keys(): + tmp = recursive_query_nested_dict(keyword, jsn) + + assert tmp is not None, \ + 'Keyword: ' + keyword + '\n' + 'Value is None!' + template[nxdl_path] = tmp + + if nxdl_path + '/@units' in template.keys(): + template[nxdl_path + '/@units'] = nxdl_unit + + # extract quantities for which the nionswift json document + # formats/distributes the pieces of information across multiple keywords, + # so that to format them according to what the application definition, + # it is required a hard coding for now + # NEW ISSUE: discuss with nion for formatting alternatives + # NEW ISSUE: write NXDL from within nionswift and append missing metadata + + # nionswift json does not explicitly report start_time, end_time and + # preparation_time but gives a time stamp, according to the suggestion + # how start_time should be used in such case we infer the time from + # this nionswift time stamp + date_time = recursive_query_nested_dict("datetime_original/local_datetime", jsn) + time_zone = recursive_query_nested_dict("datetime_original/tz", jsn) + tmp = re.compile(r"^(\+|-)(\d{2})00$") + assert tmp.search(time_zone) is not None, \ + 'nionswift time zone formatting ' + time_zone + ' is not valid!' + + template["/ENTRY[entry]/start_time"] \ + = value = date_time + time_zone[0:3] + ':' + time_zone[3:5] + # NEW ISSUE: + template["/ENTRY[entry]/end_time"] \ + = template["/ENTRY[entry]/start_time"] + template["/ENTRY[entry]/SAMPLE[sample]/preparation_date"] \ + = template["/ENTRY[entry]/start_time"] + + # NEW ISSUE: this should better be stored with each image + center_positions = recursive_query_nested_dict( + "metadata/scan/scan_device_parameters/center_nm", jsn) + assert isinstance(center_positions, list), \ + 'Value for center positions is not a list!' + assert center_positions != [], \ + 'Value for center positions is an empty list!' + assert len(center_positions) == 2, \ + 'Value for center positions is not a duplett!' + + template["/ENTRY[entry]/em_lab/hadf/SCANBOX_EM[scanbox_em]/center"] \ + = np.asarray(center_positions, np.float64) + template["/ENTRY[entry]/em_lab/hadf/SCANBOX_EM[scanbox_em]/center/@units"] \ + = "nm" + # NEW ISSUE: center and their units is currently hardcoded + # NEW ISSUE: nionswift json metadata document is inconsistent here + + positions = np.zeros((3,), np.float64) + for axis in [0, 1, 2]: + tmp = recursive_query_nested_dict( + ["metadata/instrument/ImageScanned/StageOutX", + "metadata/instrument/ImageScanned/StageOutY", + "metadata/instrument/ImageScanned/StageOutZ"][axis], jsn) + assert isinstance(tmp, float), 'Coordinate value is not a float!' + positions[axis] = tmp + template["/ENTRY[entry]/em_lab/STAGE_LAB[stage_lab]/position"] \ + = positions + template["/ENTRY[entry]/em_lab/STAGE_LAB[stage_lab]/position/@units"] = "m" + # NEW ISSUE: positions and their units are currently hardcoded + + # NEW ISSUE: probe_ha should better be stored only within each scan + # and not in misc + tmp = recursive_query_nested_dict("metadata/instrument/ImageScanned/probe_ha", jsn) + template["/ENTRY[entry]/em_lab/miscellaneous/semi_convergence_angle"] \ + = tmp + template["/ENTRY[entry]/em_lab/miscellaneous/semi_convergence_angle/@units"] \ + = "rad" + + return template + + +def extract_data_from_scans( + npy_file_name: str, json_file_name: str, + template: dict) -> dict: + """Query those data which a NionSwift numpy file has. + + Add per scan metadata from json metadata file from nionswift. + """ + # npy_file_name = 'HAADF_01.npy' + # json_file_name = 'HAADF_01.json' + print('Extracting data from NionSwift NPY file: ' + npy_file_name) + + # ##MK how will the numpy dump look like when there are multiple images? + # ##MK how do images map to indices + + path_prefix = "/ENTRY[entry]/em_lab/hadf/DATA[data]/" + + template[path_prefix + "@axes"] \ + = ["photon_energy", "xpos", "ypos"] + template[path_prefix + "@signal"] = "intensity" + # here assuming h5py will encodes the str into an UTF-8 + template[path_prefix + "@xpos_indices"] = 0 + template[path_prefix + "@ypos_indices"] = 1 + + npy = np.load(npy_file_name) + template[path_prefix + "intensity"] = npy + # NEW ISSUE: this needs to be disentangled for multiple scans + + with open(json_file_name, 'r', encoding='utf-8') as infile: + jsn = json.load(infile) + + # NEW ISSUE: based on design for multiple scans reconstruct pixel + # coordinates, currently hardcoded + spatial_calibrations = recursive_query_nested_dict("spatial_calibrations", jsn) + assert isinstance(spatial_calibrations, list), \ + 'Value for spatial calibrations is not a list!' + assert spatial_calibrations != [], \ + 'Value for spatial calibrations is an empty list!' + assert len(spatial_calibrations) == 2, \ + 'Value for spatial calibrations is not a duplett!' + + center_positions = recursive_query_nested_dict( + "metadata/scan/scan_device_parameters/center_nm", jsn) + assert isinstance(center_positions, list), \ + 'Value for center positions is not a list!' + assert center_positions != [], \ + 'Value for center positions is an empty list!' + assert len(center_positions) == 2, \ + 'Value for center positions is not a duplett!' + + scan_sizes = recursive_query_nested_dict( + "metadata/scan/scan_device_parameters/size", jsn) + assert isinstance(scan_sizes, list), \ + 'Value for scan sizes is not a list!' + assert scan_sizes != [], \ + 'Value for scan sizes is an empty list!' + assert len(scan_sizes) == 2, \ + 'Value for scan sizes is not a duplett!' + + xmin = center_positions[0] + spatial_calibrations[0]['offset'] \ + + 0 * spatial_calibrations[0]['scale'] + xmax = center_positions[0] + spatial_calibrations[0]['offset'] \ + + scan_sizes[0] * spatial_calibrations[0]['scale'] + template[path_prefix + "xpos"] = np.linspace( + xmin, xmax, scan_sizes[0], endpoint=True) + template[path_prefix + "xpos/@units"] = "nm" + + ymin = center_positions[1] + spatial_calibrations[1]['offset'] \ + + 0 * spatial_calibrations[1]['scale'] + ymax = center_positions[1] + spatial_calibrations[1]['offset'] \ + + scan_sizes[1] * spatial_calibrations[1]['scale'] + template[path_prefix + "ypos"] = np.linspace( + ymin, ymax, scan_sizes[1], endpoint=True) + # NEW ISSUE: xpos/ypos units currently hardcoded, no explicit unit field + + template[path_prefix + "ypos/@units"] = "nm" + template[path_prefix + "@long_name"] = "HADF image" + + return template + + +def extract_data_from_elabftw_file(file_name: str, template: dict) -> dict: + """Query (meta)data from dumps of e.g. ELabFTW or lab-instrument configs.""" + # file_name = 'HAADF_01.ELabFTW.json' + print('Extracting data from ELN/LIMS/others JSON file: ' + file_name) + + with open(file_name, 'r', encoding='utf-8') as infile: + dct = json.load(infile) + + for nxdl_path, value in dct.items(): + if nxdl_path in template.keys(): + assert value is not None, \ + 'Keyword: ' + nxdl_path + '\n' + 'Value is None!' + template[nxdl_path] = value + + return template + + +class EmNionReader(BaseReader): + """Parse content from community file formats. + + Specifically, of (transmission) electron microscopy from a Nion microscope + to create a NXem_nion.nxdl-compliant NeXus file. + + """ + + # pylint: disable=too-few-public-methods + + # Whitelist for the NXDLs that the reader supports and can process + supported_nxdls = ["NXem_nion"] + + def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: + """Read data from given file, return filled template dictionary.""" + typed_files, case = assess_situation_with_input_files(file_paths) + + assert case != NION_ERROR_CODES[-1], \ + 'Each nionswift record should have only one npy and json file!' + + report_appdef_version(template) + + print('Add metadata which come from other sources...') + if 'json' in typed_files.keys(): + assert len(typed_files['json']) == 1, \ + "List of json files is ambiguous!" + + extract_data_from_json_file(typed_files['json'][0], template) + + print('Add metadata/data from numpy array(s) representing scans...') + if 'npy' in typed_files.keys(): + assert len(typed_files['npy']) == 1, \ + "List of npy files is ambiguous!" + assert len(typed_files['json']) == 1, \ + "List of json files is ambiguous!" + + extract_data_from_scans( + typed_files['npy'][0], + typed_files['json'][0], + template) + + print('Add metadata from e.g.ELN/LIMS dump JSON files...') + extract_data_from_elabftw_file(typed_files['dat'][0], template) + + # inspect the template for debugging purposes + # for keyword, value in template.items(): + # print('Keyword: ' + keyword + ' value: ' + str(value)) + + return template + + +# This has to be set to allow the convert script to use this reader. +READER = EmNionReader diff --git a/nexusparser/tools/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods b/nexusparser/tools/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods new file mode 100644 index 000000000..2d6ab616b Binary files /dev/null and b/nexusparser/tools/dataconverter/readers/em_nion/utils/NionSwiftJsonToNexusTranslationTable.ods differ diff --git a/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_misc.py b/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_misc.py new file mode 100644 index 000000000..ddf9df5df --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_misc.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +"""Generic utilities for the Nion/NionSwift EM parser.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +from typing import Tuple + +import numpy as np + +import h5py + + +def string_array_to_utf8(strings: list) -> np.ndarray: + """Format a list of strings to a h5py compliant UTF-8 formatted array.""" + # https://manual.nexusformat.org/classes/base_classes/NXdata.html#nxdata + # https://docs.h5py.org/en/stable/strings.html + + utf8_type = h5py.string_dtype('utf-8', 30) + return np.array([s.encode("utf-8") for s in strings], utf8_type) + + +def recursive_query_nested_dict(path: str, dct: dict): + """Traverse nested Python dict to find value to flattened path. + + The function left-strips the path with walking each layer deeper. + """ + # prev_key: str, + assert path not in ['', '/'], 'Path must not be empty or slash/root only!' + # NEW ISSUE: eventually return None in the above cases + idx = path.find('/') + curr_key = path + if idx != -1: + curr_key = path[0:idx] + remaining_path = path[idx + 1::] + if curr_key[0] == "[" and curr_key[-1] == "]": + # lst_id = int(curr_key[1:-1]) + # print('-->Traversing into list of dictionaries lst_id: ' + # + str(lst_id) + ' using prev_key: ' + prev_key) + return recursive_query_nested_dict(remaining_path, dct[int(curr_key[1:-1])]) + + # print('-->Traversing dictionary key: ' + # + curr_key + ' using prev_key: ' + prev_key) + return recursive_query_nested_dict( + remaining_path, dct[curr_key]) # curr_key, + # print('-->Found leaf, key: ' + # + curr_key + ' value: ' + str(dct[curr_key])) + return dct[curr_key] + + +NIONSWIFT_FILE_TYPES = ['npy', 'json'] +ELAB_FILE_TYPES = ['dat'] +NION_ERROR_CODES = {-1: 'Invalid input', 0: 'Single Nion/NionSwift dataset'} + + +def assess_situation_with_input_files(file_paths: Tuple[str] = None): + """Different file formats contain different types of data. + + Identify how many files of specific type Tuple contains to judge if the + input has at all a chance to populate all required fields of + the application definition. + + """ + file_paths = ('HAADF_01.json', 'HAADF_01.npy', 'HAADF_01.ELabFTW.dat') + filetype_dict = {} + for file_name in file_paths: + index = file_name.lower().rfind('.') + if index >= 0: + suffix = file_name.lower()[index + 1::] + if suffix in NIONSWIFT_FILE_TYPES + ELAB_FILE_TYPES: + if suffix in filetype_dict.keys(): + filetype_dict[suffix].append(file_name) + else: + filetype_dict[suffix] = [file_name] + # files without endings are ignored + + # identify which use case we face + filetype_counts = {} + for suffix, filenames in filetype_dict.items(): + filetype_counts[suffix] = len(filenames) + + # decide what to do based on the use case + if len(filetype_dict['npy']) == 1 and len(filetype_dict['json']) == 1 \ + and len(filetype_dict['dat']) == 1: + return (filetype_dict, NION_ERROR_CODES[0]) + # ##MK \ and len(filetype_dict['yml']) == 1: + + return (filetype_dict, NION_ERROR_CODES[-1]) diff --git a/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py b/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py new file mode 100644 index 000000000..0708d4038 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/em_nion/utils/em_io_utils_ods2dct.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +"""Utility to create metadata/data routing table dictionary from spreadsheet.""" + +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 + +# import json + +import os + +import pandas as pd + +import numpy as np + +# create a json dictionary with all those entries of the NXDL +# for which the metadata/data can not be extracted from files but +# need to be specified by other means (e.g. human, control software, +# external databases) + +ROUTING_TABLE_FILE = 'NionSwiftJsonToNexusTranslationTable.ods' + + +def ods_to_json_routing_dict() -> dict: # file_name: str) -> dict: + """Parse LibreCalc/Excel table into dictionary. + + The dictionary how a path in a JSON document should be stored in a + specific field in NeXus. The keyword of the dictionary is the flattened + path in the JSON document, the value argument is a tuple of the path + in NeXus and the specific SI/UniData unit that is to be used. + """ + prefix = os.getcwd() + prefix += "/readers/em_nion/utils/" + print('Loading: ' + ROUTING_TABLE_FILE + ' from...') + print(prefix) + # no prefixing for jupyter-lab assuming datasets are in / + prefix = '' + tmp = pd.read_excel(prefix + ROUTING_TABLE_FILE, + sheet_name='JsonToNeXusRoutingTable', + engine="odf", + skiprows=7, + keep_default_na=False, na_values=['_']) + + dct = {} + + for rowidx in np.arange(0, tmp.shape[0]): + json_path = tmp.iloc[rowidx, 0] + nxdl_path = tmp.iloc[rowidx, 1] + nxdl_unit = tmp.iloc[rowidx, 2] + status = tmp.iloc[rowidx, 3] + + assert status in [0, 1, 2, 3, 4, 5], \ + print("nxdl_use is not 0 or 1!") + + if status in [1, 3] and nxdl_path != 'None': + assert json_path not in dct.keys(), \ + print(json_path + ' has already been added to routing table!') + + dct[json_path] = (nxdl_path, nxdl_unit) + + return dct + + # NEW ISSUE: in case it is desirable to export the dictionary to a json file + # with open(file_name + '.json', 'w', encoding='utf-8') \ + # as file_handle: + # json.dump(dct, file_handle, ensure_ascii=False, indent=4) + +# testing +# routing_table = ods_to_json_routing_dict() diff --git a/nexusparser/tools/dataconverter/readers/example/reader.py b/nexusparser/tools/dataconverter/readers/example/reader.py new file mode 100644 index 000000000..1bae2a2f0 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/example/reader.py @@ -0,0 +1,59 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""An example reader implementation for the DataConverter.""" +from typing import Tuple +import json + +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader + + +class ExampleReader(BaseReader): + """An example reader implementation for the DataConverter.""" + + # pylint: disable=too-few-public-methods + + # Whitelist for the NXDLs that the reader supports and can process + supported_nxdls = ["NXtest"] + + def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: + """Reads data from given file and returns a filled template dictionary""" + data: dict = {} + + if not file_paths: + raise Exception("No input files were given to Example Reader.") + + for file_path in file_paths: + file_extension = file_path[file_path.rindex("."):] + with open(file_path, "r") as input_file: + if file_extension == ".json": + data = json.loads(input_file.read()) + + for k in template.keys(): + # The entries in the template dict should correspond with what the dataconverter + # outputs with --generate-template for a provided NXDL file + field_name = k[k.rfind("/") + 1:] + if field_name[0] != "@": + template[k] = data[field_name] + if f"{field_name}_units" in data.keys() and f"{k}/@units" in template.keys(): + template[f"{k}/@units"] = data[f"{field_name}_units"] + + return template + + +# This has to be set to allow the convert script to use this reader. Set it to "MyDataReader". +READER = ExampleReader diff --git a/nexusparser/tools/dataconverter/readers/mpes/reader.py b/nexusparser/tools/dataconverter/readers/mpes/reader.py new file mode 100644 index 000000000..a4ace1559 --- /dev/null +++ b/nexusparser/tools/dataconverter/readers/mpes/reader.py @@ -0,0 +1,199 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +"""MPES reader implementation for the DataConverter.""" + +from typing import Tuple +import h5py +import json +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +import xarray as xr + +default_units = { + 'X': 'step', + 'Y': 'step', + 't': 'step', + 'tofVoltage': 'V', + 'extractorVoltage': 'V', + 'extractorCurrent': 'A', + 'cryoTemperature': 'K', + 'sampleTemperature': 'K', + 'dldTimeBinSize': 'ns', + 'delay': 'ps', + 'timeStamp': 's', + 'E': 'eV', + 'kx': '1/A', + 'ky': '1/A'} + + +def res_to_xarray(res, binNames, binAxes, metadata=None): + """ creates a BinnedArray (xarray subclass) out of the given np.array + Parameters: + res: np.array + nd array of binned data + binNames (list): list of names of the binned axes + binAxes (list): list of np.arrays with the values of the axes + Returns: + ba: BinnedArray (xarray) + an xarray-like container with binned data, axis, and all available metadata + """ + dims = binNames + coords = {} + for name, vals in zip(binNames, binAxes): + coords[name] = vals + + xres = xr.DataArray(res, dims=dims, coords=coords) + + for name in binNames: + try: + xres[name].attrs['unit'] = default_units[name] + except KeyError: + pass + + xres.attrs['units'] = 'counts' + xres.attrs['long_name'] = 'photoelectron counts' + + if metadata is not None: + xres.attrs['metadata'] = metadata + + return xres + + +def h5_to_xarray(faddr, mode='r'): + """ Rear xarray data from formatted hdf5 file + Args: + faddr (str): complete file name (including path) + mode (str): hdf5 read/write mode + Returns: + xarray (xarray.DataArray): output xarra data + """ + with h5py.File(faddr, mode) as h5File: + # Reading data array + try: + data = h5File['binned']['BinnedData'] + except KeyError: + print("Wrong Data Format, data not found") + raise + + # Reading the axes + axes = [] + binNames = [] + + try: + for axis in h5File['axes']: + axes.append(h5File['axes'][axis]) + binNames.append(h5File['axes'][axis].attrs['name']) + except KeyError: + print("Wrong Data Format, axes not found") + raise + + # load metadata + if 'metadata' in h5File: + def recursive_parse_metadata(node): + if isinstance(node, h5py.Group): + d = {} + for k, v in node.items(): + d[k] = recursive_parse_metadata(v) + + else: + d = node[...] + try: + d = d.item() + if isinstance(d, (bytes, bytearray)): + d = d.decode() + except ValueError: + pass + + return d + + metadata = recursive_parse_metadata(h5File['metadata']) + + xarray = res_to_xarray(data, binNames, axes, metadata) + return xarray + + +def iterate_dictionary(dic, key_string): + keys = key_string.split('/', 1) + if keys[0] in dic: + if len(keys) == 1: + return dic[keys[0]] + else: + return iterate_dictionary(dic[keys[0]], keys[1]) + else: + raise KeyError + + +class MPESReader(BaseReader): + + # pylint: disable=too-few-public-methods + + # Whitelist for the NXDLs that the reader supports and can process + supported_nxdls = ["NXmpes"] + + def read(self, template: dict = None, file_paths: Tuple[str] = None) -> dict: + """Reads data from given file and returns a filled template dictionary""" + + if not file_paths: + raise Exception("No input files were given to MPES Reader.") + + for file_path in file_paths: + + file_extension = file_path[file_path.rindex("."):] + + if file_extension == '.h5': + x_array_loaded = h5_to_xarray(file_path) + + elif file_extension == '.json': + with open(file_path, 'r') as f: + config_file_dict = json.load(f) + + for k, v in config_file_dict.items(): + + if isinstance(v, str) and ':' in v: + precursor = v.split(':')[0] + value = v[v.index(':') + 1:] + + # Filling in the data and axes along with units from xarray + if precursor == '@data': + try: + template[k] = eval("x_array_loaded." + value) + if k.split('/')[-1] == '@axes': + template[k] = list(template[k]) + + except NameError: + print(f"Incorrect naming syntax or the xarray doesn't contain entry corresponding to the path {k}") + except KeyError: + print(f"The xarray doesn't contain entry corresponding to the path {k}") + + # Filling in the metadata from xarray + elif precursor == '@attrs': + + try: # Tries to fill the metadata + template[k] = iterate_dictionary(x_array_loaded.attrs, value) + + except KeyError: + print(f"The xarray doesn't contain entry corresponding to the path {k}") + + else: + # Fills in the fixed metadata + template[k] = v + + return template + + +READER = MPESReader diff --git a/nexusparser/tools/dataconverter/writer.py b/nexusparser/tools/dataconverter/writer.py new file mode 100644 index 000000000..f68afd1ab --- /dev/null +++ b/nexusparser/tools/dataconverter/writer.py @@ -0,0 +1,143 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""The writer class for writing a Nexus file in accordance with a given NXDL.""" + +import copy +import logging +import sys +import xml.etree.ElementTree as ET + +import h5py +import numpy as np + +from nexusparser.tools.dataconverter import helpers +from nexusparser.tools import nexus + +logger = logging.getLogger(__name__) # pylint: disable=C0103 +logger.setLevel(logging.INFO) +logger.addHandler(logging.StreamHandler(sys.stdout)) + + +def does_path_exist(path, h5py_obj) -> bool: + """Returns true if the requested path exists in the given h5py object.""" + try: + h5py_obj[helpers.convert_data_dict_path_to_hdf5_path(path)] # pylint: disable=W0106 + return True + except KeyError: + return False + + +def is_not_data_empty(value) -> bool: + """Returns True if value is an Numpy array or not None.""" + if isinstance(value, np.ndarray) or value is not None: + return True + return False + + +def get_namespace(element) -> str: + """Extracts the namespace for elements in the NXDL""" + return element.tag[element.tag.index("{"):element.tag.rindex("}") + 1] + + +class Writer: + """The writer class for writing a Nexus file in accordance with a given NXDL. + + Args: + data (dict): Dictionary containing the data to convert. + nxdl_path (str): Path to the nxdl file to use during conversion. + output_path (str): Path to the output Nexus file. + + Attributes: + data (dict): Dictionary containing the data to convert. + nxdl_path (str): Path to the nxdl file to use during conversion. + output_path (str): Path to the output Nexus file. + output_nexus (h5py.File): The h5py file object to manipulate output file. + nxdl_data (dict): Stores xml data from given nxdl file to use during conversion. + nxs_namespace (str): The namespace used in the NXDL tags. Helps search for XML children. + """ + + def __init__(self, data: dict = None, nxdl_path: str = None, output_path: str = None): + """Constructs the necessary objects required by the Writer class.""" + self.data = data + self.nxdl_path = nxdl_path + self.output_path = output_path + self.output_nexus = h5py.File(self.output_path, "w") + self.nxdl_data = ET.parse(self.nxdl_path).getroot() + self.nxs_namespace = get_namespace(self.nxdl_data) + + def __nxdl_to_attrs(self, path: str = '/') -> dict: + """ + Return a dictionary of all the attributes at the given path in the NXDL and + the required attribute values that were requested in the NXDL from the data. + """ + nxdl_path = helpers.convert_data_converter_dict_to_nxdl_path(path) + elem = copy.deepcopy(nexus.get_node_at_nxdl_path(nxdl_path, elem=self.nxdl_data)) + if elem is None: + raise Exception(f"Attributes were not found for {path}. " + "Please check this entry in the template dictionary.") + + # Remove the name attribute as we only use it to name the HDF5 entry + if "name" in elem.attrib.keys(): + del elem.attrib["name"] + + # Fetch values for required attributes requested by the NXDL + for attr_name in elem.findall(f"{self.nxs_namespace}attribute"): + elem.attrib[attr_name.get('name')] = self.data[f"{path}/@{attr_name.get('name')}"] or '' + + return elem.attrib + + def ensure_and_get_parent_node(self, path: str) -> h5py.Group: + """Returns the parent if it exists for a given path else creates the parent group.""" + parent_path = path[0:path.rindex('/')] or '/' + parent_path_hdf5 = helpers.convert_data_dict_path_to_hdf5_path(parent_path) + if not does_path_exist(parent_path, self.output_nexus): + parent = self.ensure_and_get_parent_node(parent_path) + grp = parent.create_group(parent_path_hdf5) + attrs = self.__nxdl_to_attrs(parent_path) + if attrs is not None: + grp.attrs['NX_class'] = attrs["type"] + return grp + return self.output_nexus[parent_path_hdf5] + + def write(self): + """Writes the Nexus file with previously validated data from the reader with NXDL attrs.""" + for path, value in self.data.items(): + try: + if path[path.rindex('/') + 1:] == '@units': + continue + + entry_name = helpers.get_name_from_data_dict_entry(path[path.rindex('/') + 1:]) + + data = value if is_not_data_empty(value) else "" + + if entry_name[0] != "@": + grp = self.ensure_and_get_parent_node(path) + + dataset = grp.create_dataset(entry_name, data=data) + units_key = f"{path}/@units" + + if units_key in self.data.keys(): + dataset.attrs["units"] = self.data[units_key] + else: + dataset = self.ensure_and_get_parent_node(path) + dataset.attrs[entry_name[1:]] = data + except Exception as exception: + raise Exception(f"Unkown error occured writing the path: {path} " + f"with the following message: {str(exception)}") + + self.output_nexus.close() diff --git a/nexusparser/tools/nexus.py b/nexusparser/tools/nexus.py new file mode 100644 index 000000000..b8e79ddb1 --- /dev/null +++ b/nexusparser/tools/nexus.py @@ -0,0 +1,847 @@ +"""Read files from different format and print it in a standard Nexus format + +""" +# Nexus definitions in github: https://github.com/nexusformat/definitions +# to be cloned under os.environ['NEXUS_DEF_PATH'] + +from typing import Optional +import os +import xml.etree.ElementTree as ET +import re +import sys +import logging +import textwrap +import h5py + +# LOGGING_FORMAT = "%(levelname)s: %(message)s" +# stdout_handler = logging.StreamHandler(sys.stdout) +# stdout_handler.setLevel(logging.DEBUG) +# logging.basicConfig(level=logging.DEBUG, format=LOGGING_FORMAT, handlers=[stdout_handler]) +# logger = logging.getLogger() + + +# check for NEXUS definitions +def get_nexus_definitions_path(): + """Check NEXUS_DEF_PATH variable. +If it is empty, this function is filling it + +""" + try: + # either given by sys env + return os.environ['NEXUS_DEF_PATH'] + except BaseException: + # or it should be available locally under the dir 'definitions' + LOCAL_DIR = os.path.abspath(os.path.dirname(__file__)) + return os.path.join(LOCAL_DIR, f"..{os.sep}definitions") + + +def get_nx_class_path(hdf_node): + """Get the full path of an HDF5 node using nexus classes +in case of a field, end with the field name + +""" + + if hdf_node.name == '/': + return '' + if isinstance(hdf_node, h5py.Group): + return get_nx_class_path( + hdf_node.parent) + '/' + hdf_node.attrs['NX_class'] + if isinstance(hdf_node, h5py.Dataset): + return get_nx_class_path( + hdf_node.parent) + '/' + hdf_node.name.split('/')[-1] + return '' + + +def get_nxdl_entry(hdf_node): + """Get the nxdl application definition for an HDF5 node + +""" + + entry = hdf_node + while isinstance(entry, + h5py.Dataset) or entry.attrs['NX_class'] != 'NXentry': + entry = entry.parent + if entry.name == '/': + return 'NO NXentry found' + try: + nxdef = entry['definition'][()] + return nxdef.decode() + except KeyError: + return 'NO Definition referenced' + + +def get_nx_class(nxdl_elem): + """Get the nexus class for a NXDL node + +""" + try: + return nxdl_elem.attrib['type'] + except KeyError: + return 'NX_CHAR' + + +def get_nx_namefit(hdf_name, name): + """Checks if an HDF5 node name corresponds to a child of the NXDL element +uppercase letters in front can be replaced by arbitraty name, but +uppercase to lowercase match is preferred, +so such match is counted as a measure of the fit + +""" + # count leading capitals + counting = 0 + while counting < len(name) and name[counting] >= 'A' and name[counting] <= 'Z': + counting += 1 + # if potential fit + if counting == len(name) or hdf_name.endswith(name[counting:]): + # count the matching chars + fit = 0 + for i in range(max(counting, len(hdf_name))): + if hdf_name[i].upper() == name[i]: + fit += 1 + else: + break + # accept only full fits as better fits + if fit == max(counting, len(hdf_name)): + return fit + return 0 + # no fit + return -1 + + +def get_nx_classes(): + """Read base classes from the Nexus definition/base_classes folder + +""" + base_classes_list_files = os.listdir(os.path.join(get_nexus_definitions_path(), 'base_classes')) + nx_clss = sorted([str(s)[:-9] for s in base_classes_list_files]) + return nx_clss + + +def get_nx_units(): + """Read unit kinds from the Nexus definition/nxdlTypes.xsd file + +""" + filepath = f"{get_nexus_definitions_path()}{os.sep}nxdlTypes.xsd" + tree = ET.parse(filepath) + root = tree.getroot() + units_and_type_list = [] + for child in root: + for i in child.attrib.values(): + units_and_type_list.append(i) + flag = False + for line in units_and_type_list: + if line == 'anyUnitsAttr': + flag = True + nx_units = [] + elif 'NX' in line and flag is True: + nx_units.append(line) + elif line == 'primitiveType': + flag = False + else: + pass + return nx_units + + +def get_nx_attribute_type(): + """Read attribute types from the Nexus definition/nxdlTypes.xsd file + +""" + filepath = get_nexus_definitions_path() + '/nxdlTypes.xsd' + tree = ET.parse(filepath) + root = tree.getroot() + units_and_type_list = [] + for child in root: + for i in child.attrib.values(): + units_and_type_list.append(i) + flag = False + for line in units_and_type_list: + if line == 'primitiveType': + flag = True + nx_types = [] + elif 'NX' in line and flag is True: + nx_types.append(line) + elif line == 'anyUnitsAttr': + flag = False + else: + pass + return nx_types + + +def get_node_name(node): + '''Node - xml node +returns: + html documentation name + Either as specified by the 'name' or taken from the type (nx_class). + Note that if only class name is available, the NX prefix is removed and + the string is coverted to UPPER case. + +''' + if 'name' in node.attrib.keys(): + name = node.attrib['name'] + else: + name = node.attrib['type'] + if name.startswith('NX'): + name = name[2:].upper() + return name + + +def belongs_to(nxdl_elem, child, hdf_name): + """Checks if an HDF5 node name corresponds to a child of the NXDL element +uppercase letters in front can be replaced by arbitraty name, but +uppercase to lowercase match is preferred + +""" + # check if nameType allows different name + try: + name_any = bool(child.attrib['nameType'] == "any") + # if child.attrib['nameType'] == "any": + # name_any = True + # else: + # name_any = False + except KeyError: + name_any = False + childname = get_node_name(child) + nx_class_regex = re.compile(r"NX[a-z_]+") + name = hdf_name[2:].upper() if nx_class_regex.search(hdf_name) and 'name\ + ' not in child.attrib else hdf_name + # and no reserved words used + if name_any and name != 'doc' and name != 'enumeration': + # check if name fits + fit = get_nx_namefit(name, childname) + if fit < 0: + return False + for child2 in nxdl_elem: + if get_local_name_from_xml(child) != \ + get_local_name_from_xml(child2) or get_node_name(child2) == childname: + continue + # check if the name of another sibling fits better + fit2 = get_nx_namefit(name, get_node_name(child2)) + if fit2 > fit: + return False + # accept this fit + return True + if childname == name: + return True + return False + + +def get_local_name_from_xml(element): + """Helper function to extract the element tag without the namespace.""" + return element.tag[element.tag.rindex("}") + 1:] + + +def get_own_nxdl_child(nxdl_elem, name): + """Checks if an NXDL child node fits to the specific name""" + for child in nxdl_elem: + if get_local_name_from_xml(child) == 'group' and belongs_to(nxdl_elem, child, name): + # get_nx_class(child) == name: + return child + if get_local_name_from_xml(child) == 'field' and belongs_to(nxdl_elem, child, name): + return child + if get_local_name_from_xml(child) == 'attribute' and belongs_to(nxdl_elem, child, name): + return child + if get_local_name_from_xml(child) == 'doc' and name == 'doc': + return child + if get_local_name_from_xml(child) == 'enumeration' and name == 'enumeration': + return child + return None + + +def get_nxdl_child(nxdl_elem, name): + """Get the NXDL child node corresponding to a specific name +(e.g. of an HDF5 node,or of a documentation) +note that if child is not found in application definition, +it also checks for the base classes + +""" + own_child = get_own_nxdl_child(nxdl_elem, name) + if own_child is not None: + return own_child + # check in the base class + bc_name = get_nx_class(nxdl_elem) + # filter primitive types + if bc_name[2] == '_': + return None + bc_obj = ET.parse(f"{get_nexus_definitions_path()}{os.sep}base_classes{os.sep}{bc_name}.nxdl.xml").getroot() + return get_own_nxdl_child(bc_obj, name) + + +def get_required_string(nxdl_elem): + """Check for being required +REQUIRED, RECOMMENDED, OPTIONAL, NOT IN SCHEMA + +""" + if nxdl_elem is None: + return "<>" + is_optional = 'optional' in nxdl_elem.attrib.keys() \ + and nxdl_elem.attrib['optional'] == "true" + is_minoccurs = 'minOccurs' in nxdl_elem.attrib.keys() \ + and nxdl_elem.attrib['minOccurs'] == "0" + # is_required = 'required' in nxdl_elem.attrib.keys() and nxdl_elem.attrib['required'] == "true" + is_recommended = 'recommended' in nxdl_elem.attrib.keys() \ + and nxdl_elem.attrib['recommended'] == "true" + + if is_recommended: + return "<>" + if is_optional or is_minoccurs: + return "<>" + return "<>" + + # default optionality + # in BASE CLASSES: true + # in APPLICATIONS: false + + # if "base" in nxdl_elem.attrib and "base_classes" in nxdl_elem.base: # TODO: confirm with Sandor + # return "<>" + + +def chk_nxdataaxis_v2(hdf_node, name): + """Check if dataset is an axis + +""" + # check for being a Signal + own_signal = hdf_node.attrs.get('signal') + if own_signal is str and own_signal == "1": + LOGGER.info("Dataset referenced (v2) as NXdata SIGNAL") + # check for being an axis + own_axes = hdf_node.attrs.get('axes') + if own_axes is str: + axes = own_axes.split(':') + for i in len(axes): + if axes[i] and name == axes[i]: + LOGGER.info("Dataset referenced (v2) as NXdata AXIS #%d", i) + return None + ownpaxis = hdf_node.attrs.get('primary') + own_axis = hdf_node.attrs.get('axis') + assert own_axis is int, 'axis is not int type!' + # also convention v1 + if ownpaxis is int and ownpaxis == 1: + LOGGER.info("Dataset referenced (v2) as NXdata AXIS #%d", own_axis - 1) + return None + if not (ownpaxis is int and ownpaxis == 1): + LOGGER.info( + "Dataset referenced (v2) as NXdata (primary/alternative) AXIS #%d", own_axis - 1) + return None + return None + + +def chk_nxdataaxis(hdf_node, name, loger): + """NEXUS Data Plotting Standard v3: new version from 2014 + +""" + # check if it is a field in an NXdata node + if not isinstance(hdf_node, h5py.Dataset): + return None + parent = hdf_node.parent + if not parent or (parent and not parent.attrs.get('NX_class') == "NXdata"): + return None + # chk for Signal + signal = parent.attrs.get('signal') + if signal and name == signal: + loger.info("Dataset referenced as NXdata SIGNAL") + return None + # check for default Axes + axes = parent.attrs.get('axes') + if axes is str: + if name == axes: + loger.info("Dataset referenced as NXdata AXIS") + return None + elif axes is not None: + for i, j in enumerate(axes): + if name == j: + indices = parent.attrs.get(j + '_indices') + if indices is int: + loger.info("Dataset referenced as NXdata AXIS #%d" % indices) + else: + loger.info("Dataset referenced as NXdata AXIS #%d" % i) + return None + # check for alternative Axes + indices = parent.attrs.get(name + '_indices') + if indices is int: + loger.info("Dataset referenced as NXdata alternative AXIS #%d" % indices) + # check for older conventions + return chk_nxdataaxis_v2(hdf_node, name) + + +def get_nxdl_doc(hdf_node, loger, doc, attr=False): + """Get nxdl documentation for an HDF5 node (or its attribute) + +""" + nxdef = get_nxdl_entry(hdf_node) + nxdl_file_path = f"{get_nexus_definitions_path()}{os.sep}applications{os.sep}{nxdef}.nxdl.xml" + elem = ET.parse(nxdl_file_path).getroot() + nxdl_path = [elem] + path = get_nx_class_path(hdf_node) + req_str = None + for group in path.split('/')[1:]: + if group.startswith('NX'): + elem = get_nxdl_child(elem, group) + if elem is not None: + if doc: + loger.info("/" + group) + nxdl_path.append(elem) + else: + if doc: + loger.info("/" + group + " - IS NOT IN SCHEMA") + else: + if elem is not None: + elem = get_nxdl_child(elem, group) + nxdl_path.append(elem) + if elem is not None: + if attr: + if doc: + loger.info("/" + group) + else: + if doc: + loger.info("/" + group + ' [' + get_nx_class(elem) + ']') + else: + if doc: + loger.info("/" + group + " - IS NOT IN SCHEMA") + if elem is not None and attr: + # NX_class is a compulsory attribute for groups in a nexus file + # which should match the type of the corresponding NXDL element + if attr == 'NX_class' and not isinstance(hdf_node, h5py.Dataset): + elem = None + if doc: + loger.info("@" + attr + ' [NX_CHAR]') + # units category is a compulsory attribute for any fields + elif attr == 'units' and isinstance(hdf_node, h5py.Dataset): + req_str = "<>" + try: + # try to find if units is defined inside the field in the NXDL element + unit = elem.attrib[attr] + if doc: + loger.info("@" + attr + ' [' + unit + ']') + elem = None + nxdl_path.append(attr) + except KeyError: + # otherwise try to find if units is defined as a child of the NXDL element + elem = get_nxdl_child(elem, attr) + if elem is not None: + if doc: + loger.info("@" + attr + ' - [' + get_nx_class(elem) + ']') + nxdl_path.append(elem) + else: + # if no units category were defined in NXDL: + if doc: + loger.info("@" + attr + " - REQUIRED, but undefined unit category") + nxdl_path.append(attr) + # pass + # units for attributes can be given as ATTRIBUTENAME_units + elif attr.endswith('_units'): + # check for ATTRIBUTENAME_units in NXDL (normal) + elem2 = get_nxdl_child(elem, attr) + if elem2 is not None: + elem = elem2 + if doc: + loger.info("@" + attr + ' - [' + get_nx_class(elem) + ']') + nxdl_path.append(elem) + else: + # if not defined, check for ATTRIBUTENAME to see if the ATTRIBUTE + # is in the SCHEMA, but no units category were defined + elem2 = get_nxdl_child(elem, attr[:-6]) + if elem2 is not None: + req_str = '<>' + if doc: + loger.info("@" + attr + " - RECOMMENDED, but undefined unit category") + nxdl_path.append(attr) + else: + # otherwise: NOT IN SCHEMA + elem = elem2 + if doc: + loger.info("@" + attr + " - IS NOT IN SCHEMA") + # other attributes + else: + elem = get_nxdl_child(elem, attr) + if elem is not None: + if doc: + loger.info("@" + attr + ' - [' + get_nx_class(elem) + ']') + nxdl_path.append(elem) + else: + if doc: + loger.info("@" + attr + " - IS NOT IN SCHEMA") + + if (elem is None and req_str is None): + if doc: + loger.info("") + return ('None', None, None) + if req_str is None: + # check for being required + req_str = get_required_string(elem) + if doc: + loger.info(req_str) + if elem is not None: + # check for deprecation + dep_str = elem.attrib.get('deprecated') + if dep_str: + if doc: + loger.info("DEPRECATED - " + dep_str) + # check for enums + sdoc = get_nxdl_child(elem, 'enumeration') + if sdoc is not None: + if doc: + loger.info("enumeration:") + for item in sdoc: + if get_local_name_from_xml(item) == 'item': + if doc: + loger.info("-> " + item.attrib['value']) + # check for NXdata references (axes/signal) + chk_nxdataaxis(hdf_node, path.split('/')[-1], loger) + # check for doc + sdoc = get_nxdl_child(elem, 'doc') + if doc: + loger.info(get_local_name_from_xml(sdoc) if sdoc is not None else "") + return (req_str, nxdef, nxdl_path) + + +def get_doc(node, ntype, nxhtml, nxpath): + """Get documentation + + """ + # URL for html documentation + anchor = '' + for n_item in nxpath: + anchor += n_item.lower() + "-" + anchor = ('https://manual.nexusformat.org/classes/', + nxhtml + "#" + anchor.replace('_', '-') + ntype) + if not ntype: + anchor = anchor[:-1] + + # RST documentation from the field 'doc' + try: + doc = node.doc.pyval + except BaseException: + doc = "" + + # enums + (index, enums) = get_enums(node) + if index: + enum_str = "\n " + ("Possible values:" + if len(enums.split(',')) > 1 + else "Obligatory value:") + "\n " + enums + "\n" + else: + enum_str = "" + + return anchor, doc + enum_str + + +def print_doc(node, ntype, level, nxhtml, nxpath): + """Print documentation +""" + anchor, doc = get_doc(node, ntype, nxhtml, nxpath) + print(" " * (level + 1) + anchor) + + preferred_width = 80 + level * 2 + wrapper = textwrap.TextWrapper(initial_indent=' ' * (level + 1), width=preferred_width, + subsequent_indent=' ' * (level + 1), expand_tabs=False, + tabsize=0) + # doc=node.find('doc') + if doc is not None: + # for par in doc.text.split('\n'): + for par in doc.split('\n'): + print(wrapper.fill(par)) + # print(doc.text if doc is not None else "") + + +def get_namespace(element) -> str: + """Extracts the namespace for elements in the NXDL""" + return element.tag[element.tag.index("{"):element.tag.rindex("}") + 1] + + +def get_enums(node): + """ + makes list of enumerations, if node contains any. + Returns comma separated STRING of enumeration values, if there are enum tag, + otherwise empty string. + """ + # collect item values from enumeration tag, if any + namespace = get_namespace(node) + enums = [] + for enumeration in node.findall(f"{namespace}enumeration"): + for item in enumeration.findall(f"{namespace}item"): + enums.append(item.attrib["value"]) + enums = ','.join(enums) + if enums != "": + return (True, '[' + enums + ']') + # if there is no enumeration tag, returns empty string + return (False, "") + + +def get_node_at_nxdl_path(nxdl_path: str = None, + nx_name: str = None, + elem: Optional[ET.Element] = None): + """Returns an ET.Element for the given path. + +This function either takes the name for the Nexus Application Definition +we are looking for or the root elem from a previously loaded NXDL file +and finds the corresponding XML element with the needed attributes. + +""" + if elem is None: + nxdl_file_path = f"{get_nexus_definitions_path()}{os.sep}applications{os.sep}{nx_name}.nxdl.xml" + elem = ET.parse(nxdl_file_path).getroot() + for group in nxdl_path.split('/')[1:]: + elem = get_nxdl_child(elem, group) + if elem is None: + raise Exception(f"Attributes were not found for {nxdl_path}. " + "Please check this entry in the template dictionary.") + return elem + + +def process_node(hdf_node, hdf_path, parser, logger, doc=True): + """ + #processes an hdf5 node + #- it logs the node found and also checks for its attributes + #- retrieves the corresponding nxdl documentation + #TODO: + # - follow variants + # - NOMAD parser: store in NOMAD + """ + if isinstance(hdf_node, h5py.Dataset): + logger.info('===== FIELD (/%s): %s' % (hdf_path, hdf_node)) + val = str(hdf_node[()]).split('\n') if len(hdf_node.shape) <= 1 else str( + hdf_node[0]).split('\n') + logger.info('value: %s %s' % (val[0], "..." if len(val) > 1 else '')) + else: + logger.info('===== GROUP (/%s [%s::%s]): %s' % + (hdf_path, get_nxdl_entry(hdf_node), + get_nx_class_path(hdf_node), hdf_node)) + (req_str, nxdef, nxdl_path) = get_nxdl_doc(hdf_node, logger, doc) + if parser is not None and isinstance(hdf_node, h5py.Dataset): + parser(hdf_path, hdf_node, nxdef, nxdl_path, val) + for key, value in hdf_node.attrs.items(): + logger.info('===== ATTRS (/%s@%s)' % (hdf_path, key)) + val = str(value).split('\n') + logger.info('value: %s %s' % (val[0], "..." if len(val) > 1 else '')) + (req_str, nxdef, nxdl_path) = get_nxdl_doc(hdf_node, logger, doc, attr=key) + if parser is not None and 'NOT IN SCHEMA' not in req_str and 'None' not in req_str: + parser(hdf_path, hdf_node, nxdef, nxdl_path, val) + + +def get_default_plotable(root, logger): + """Get default plotable + +""" + logger.info('========================') + logger.info('=== Default Plotable ===') + logger.info('========================') + # v3 from 2014 + + # nxentry + nxentry = None + default_nxentry_group_name = root.attrs.get("default") + if default_nxentry_group_name: + try: + nxentry = root[default_nxentry_group_name] + except KeyError: + nxentry = None + if not nxentry: + nxentry = entry_helper(root) + if not nxentry: + logger.info('No NXentry has been found') # TODO the code always falls here, solve it + return + logger.info('') + logger.info('NXentry has been identified: ' + nxentry.name) + # process_node(nxentry, None, False) + # nxdata + nxdata = None + default_nxdata_group_name = nxentry.attrs.get("default") + if default_nxdata_group_name: + try: + nxdata = nxentry[default_nxdata_group_name] + except BaseException: + nxdata = None + if not nxdata: + nxdata = nxdata_helper(nxentry) + if not nxdata: + logger.info('No NXdata group has been found') + return + logger.info('') + logger.info('NXdata group has been identified: ' + nxdata.name) + process_node(nxdata, nxdata.name, None, logger, False) + # signal + signal = None + signal_dataset_name = nxdata.attrs.get("signal") + try: + signal = nxdata[signal_dataset_name] + except BaseException: + signal = None + if not signal: + signal = signal_helper(nxdata) + if not signal: + logger.info('No Signal has been found') + return + logger.info('') + logger.info('Signal has been identified: ' + signal.name) + process_node(signal, signal.name, None, logger, False) + dim = len(signal.shape) + # axes + axes = [] + axis_helper(dim, nxdata, signal, axes, logger) + + +def entry_helper(root): + """Check entry related data + +""" + nxentries = [] + for key in root.keys(): + if (isinstance(root[key], h5py.Group) and root[key].attrs.get('NX_class\ + ') and root[key].attrs['NX_class'] == "NXentry"): + nxentries.append(root[key]) + # v3: as there was no selection given, only 1 nxentry shall exists + # v2: take any + if len(nxentries) >= 1: + return nxentries[0] + return None + + +def nxdata_helper(nxentry): + """Check if nxentry hdf5 object has a NX_class and, if it contains NXdata, +return its value + +""" + lnxdata = [] + for key in nxentry.keys(): + if isinstance(nxentry[key], h5py.Group) and nxentry[key].attrs.get('NX_class\ + ') and nxentry[key].attrs['NX_class'] == "NXdata": + lnxdata.append(nxentry[key]) + # v3: as there was no selection given, only 1 nxdata shall exists + # v2: take any + if len(lnxdata) >= 1: + return lnxdata[0] + return None + + +def signal_helper(nxdata): + """Check signal related data + +""" + signals = [] + for key in nxdata.keys(): + if isinstance(nxdata[key], h5py.Dataset): + signals.append(nxdata[key]) + # v3: as there was no selection given, only 1 data field shall exists + if len(signals) == 1: + return signals[0] + # v2: select the one with an attribute signal="1" attribute + if len(signals) > 1: + for sig in signals: + if sig.attrs.get("signal") and sig.attrs.get("signal\ + ") is str and sig.attrs.get("signal") == "1": + return sig + return None + + +def axis_helper(dim, nxdata, signal, axes, logger): + """Check axis related data + +""" + for a_item in range(dim): + ax_list = [] + # primary axes listed in attribute axes + ax_datasets = nxdata.attrs.get("axes") + try: + # single axis is defined + if ax_datasets is str: + # explicite definition of dimension number + ind = nxdata.attrs.get(ax_datasets + '_indices') + if ind and ind is int: + if ind == a_item: + ax_list.append(nxdata[nxdata[ax_datasets]]) + # positional determination of the dimension number + elif a_item == 0: + ax_list.append(nxdata[nxdata[ax_datasets]]) + # multiple axes are listed + else: + # explicite definition of dimension number + for aax in ax_datasets: + ind = nxdata.attrs.get(aax + '_indices') + if ind and ind is int: + if ind == a_item: + ax_list.append(nxdata[nxdata[aax]]) + # positional determination of the dimension number + if not ax_list: + ax_list.append(nxdata[ax_datasets[a_item]]) + except BaseException: + pass + # check for corresponding AXISNAME_indices + for attr in nxdata.attrs.keys(): + if attr.endswith('_indices') and nxdata.sttrs[attr] == a_item: + ax_list.append(nxdata[attr.split('_indices')[0]]) + # v2 + # check for ':' separated axes defined in Signal + if not ax_list: + try: + ax_datasets = signal.attrs.get("axes").split(':') + ax_list.append(nxdata[ax_datasets[a_item]]) + except BaseException: + pass + # check for axis/primary specifications + if not ax_list: + # find those with attribute axis= actual dimension number + lax = [] + for key in nxdata.keys(): + if isinstance(nxdata[key], h5py.Dataset): + try: + if nxdata[key].attrs['axis'] == a_item + 1: + lax.append(nxdata[key]) + except BaseException: + pass + if len(lax) == 1: + ax_list.append(lax[0]) + # if there are more alternatives, prioritise the one with an attribute primary="1" + elif len(lax) > 1: + for sax in lax: + if sax.attrs.get('primary') and sax.attrs.get('primary') == 1: + ax_list.insert(0, sax) + else: + ax_list.append(sax) + axes.append(ax_list) + logger.info('') + logger.info('For Axis #%d, %d axes have been identified: %s\ + ' % (a_item, len(ax_list), str(ax_list))) + + +class HandleNexus: + """documentation + +""" + def __init__(self, logger, args): + self.logger = logger + self.input_file_name = args[0] if len( + # args) >= 1 else 'wcopy/from_dallanto_master_from_defs.h5' + # args) >= 1 else 'ARPES/201805_WSe2_arpes.nxs' + args) >= 1 else 'tests/data/nexus_test_data/201805_WSe2_arpes.nxs' + self.parser = None + self.in_file = None + + def visit_node(self, hdf_name, hdf_node): + """Function called by h5py that iterates on each node of hdf5file. + + It allows h5py visititems function to visit nodes. + + """ + hdf_path = '/' + hdf_name + process_node(hdf_node, hdf_path, self.parser, self.logger) + + def process_nexus_master_file(self, parser): + """ + Process a nexus master file by processing all its nodes and their attributes + + """ + self.parser = parser + self.in_file = h5py.File(self.input_file_name, 'r') + self.in_file.visititems(self.visit_node) + get_default_plotable(self.in_file, self.logger) + self.in_file.close() + + +if __name__ == '__main__': + LOGGING_FORMAT = "%(levelname)s: %(message)s" + STDOUT_HANDLER = logging.StreamHandler(sys.stdout) + STDOUT_HANDLER.setLevel(logging.DEBUG) + logging.basicConfig(level=logging.DEBUG, format=LOGGING_FORMAT, handlers=[STDOUT_HANDLER]) + LOGGER = logging.getLogger() + NEXUS_HELPER = HandleNexus(LOGGER, sys.argv[1:]) + NEXUS_HELPER.process_nexus_master_file(None) diff --git a/nexusparser/tools/read_nexus.py b/nexusparser/tools/read_nexus.py deleted file mode 100644 index 4276825ba..000000000 --- a/nexusparser/tools/read_nexus.py +++ /dev/null @@ -1,679 +0,0 @@ -# Nexus definitions in github: https://github.com/nexusformat/definitions -# to be cloned under os.environ['NEXUS_DEF_PATH'] - -import os -import h5py -import sys -from lxml import etree, objectify -import logging -import subprocess -import textwrap - -# LOGGING_FORMAT = "%(levelname)s: %(message)s" -# stdout_handler = logging.StreamHandler(sys.stdout) -# stdout_handler.setLevel(logging.DEBUG) -# logging.basicConfig(level=logging.DEBUG, format=LOGGING_FORMAT, handlers=[stdout_handler]) -# logger = logging.getLogger() - -# check for NEXUS definitions -try: - # either given by sys env - nexusDefPath = os.environ['NEXUS_DEF_PATH'] -except BaseException: - # or it should be available locally under the dir 'definitions' - localDir = os.path.abspath(os.path.dirname(__file__)) - nexusDefPath = os.path.join(localDir, '../definitions') - - -def get_nx_class_path(hdfNode): - """ - #get the full path of an HDF5 node using nexus classes - #in case of a field, end with the field name - """ - - if hdfNode.name == '/': - return '' - elif isinstance(hdfNode, h5py.Group): - return get_nx_class_path( - hdfNode.parent) + '/' + hdfNode.attrs['NX_class'] - elif isinstance(hdfNode, h5py.Dataset): - return get_nx_class_path( - hdfNode.parent) + '/' + hdfNode.name.split('/')[-1] - return '' - - -def get_nxdl_entry(hdfNode): - """ #get the nxdl application definition for an HDF5 node """ - - entry = hdfNode - while isinstance(entry, - h5py.Dataset) or entry.attrs['NX_class'] != 'NXentry': - entry = entry.parent - if entry.name == '/': - return 'NO NXentry found' - try: - nxdef = entry['definition'][()] - return nxdef.decode() - except BaseException: - return 'NO Definition referenced' - - -def get_nx_class(nxdlElem): - """ #get the nexus class for a NXDL node """ - - try: - return nxdlElem.attrib['type'] - except BaseException: - return 'NX_CHAR' - - -def get_nx_namefit(hdfName, name): - """ - #checks if an HDF5 node name corresponds to a child of the NXDL element - #uppercase letters in front can be replaced by arbitraty name, but - #uppercase to lowercase match is preferred, - #so such match is counted as a measure of the fit - """ - # count leading capitals - ct = 0 - while ct < len(name) and name[ct] >= 'A' and name[ct] <= 'Z': - ct += 1 - # if potential fit - if ct == len(name) or hdfName.endswith(name[ct:]): - # count the matching chars - fit = 0 - for i in range(max(ct, len(hdfName))): - if hdfName[i].upper() == name[i]: - fit += 1 - else: - break - # accept only full fits as better fits - if fit == max(ct, len(hdfName)): - return fit - return 0 - # no fit - return -1 - - -def get_node_name(node): - ''' - node - xml node - returns: - html documentation name - Either as specified by the 'name' or taken from the type (nx_class). - Note that if only class name is available, the NX prefix is removed and - the string is coverted to UPPER case. - ''' - if 'name' in node.attrib.keys(): - name = node.attrib['name'] - else: - name = node.attrib['type'] - if name.startswith('NX'): - name = name[2:].upper() - return name - - -def belongs_to(nxdlElem, child, hdfName): - """ - #checks if an HDF5 node name corresponds to a child of the NXDL element - #uppercase letters in front can be replaced by arbitraty name, but - #uppercase to lowercase match is preferred - """ - - # check if nameType allows different name - try: - if child.attrib['nameType'] == "any": - nameAny = True - else: - nameAny = False - except BaseException: - nameAny = False - childname = get_node_name(child) - name = hdfName[2:].upper() if hdfName.startswith('NX') and 'name' not in child.attrib else hdfName - # and no reserved words used - if nameAny and name != 'doc' and name != 'enumeration': - # check if name fits - fit = get_nx_namefit(name, childname) - if fit < 0: - return False - for child2 in nxdlElem.getchildren(): - if etree.QName(child).localname != etree.QName(child2).localname or get_node_name(child2) == childname: - continue - # check if the name of another sibling fits better - fit2 = get_nx_namefit(name, get_node_name(child2)) - if fit2 > fit: - return False - # accept this fit - return True - else: - if childname == name: - return True - return False - - -def get_own_nxdl_child(nxdlElem, name): - """ - checks if an NXDL child node fits to the specific name - """ - for child in nxdlElem.getchildren(): - if etree.QName(child).localname == 'group' and belongs_to(nxdlElem, child, name): # get_nx_class(child) == name: - return child - if etree.QName(child).localname == 'field' and belongs_to(nxdlElem, child, name): - return child - if etree.QName(child).localname == 'attribute' and belongs_to(nxdlElem, - child, name): - return child - if etree.QName(child).localname == 'doc' and name == 'doc': - return child - if etree.QName( - child).localname == 'enumeration' and name == 'enumeration': - return child - return None - - -def get_nxdl_child(nxdlElem, name): - """ - #get the NXDL child node corresponding to a specific name - #(e.g. of an HDF5 node,or of a documentation) - #note that if child is not found in application definition, it also checks for the base classes - """ - - ownChild = get_own_nxdl_child(nxdlElem, name) - if ownChild is not None: - return ownChild - # check in the base class - bc_name = get_nx_class(nxdlElem) - # filter primitive types - if bc_name[2] == '_': - return None - bc = objectify.parse(nexusDefPath + '/base_classes/' + bc_name + '.nxdl.xml').getroot() - return get_own_nxdl_child(bc, name) - - -def get_required_string(nxdlElem): - """ - #check for being required - # REQUIRED, RECOMMENDED, OPTIONAL, NOT IN SCHEMA - """ - - if nxdlElem is None: - return "<>" - # if optionality is defined - elif ('optional' in nxdlElem.attrib.keys() and nxdlElem.attrib['optional'] == "true") or \ - ('minOccurs' in nxdlElem.attrib.keys() and nxdlElem.attrib['minOccurs'] == "0") or \ - ('required' in nxdlElem.attrib.keys() and nxdlElem.attrib['required'] == "false"): - return "<>" - elif ('optional' in nxdlElem.attrib.keys() and nxdlElem.attrib['optional'] == "false") or \ - ('minOccurs' in nxdlElem.attrib.keys() and int(nxdlElem.attrib['minOccurs']) > 0) or \ - ('required' in nxdlElem.attrib.keys() and nxdlElem.attrib['required'] == "true"): - return "<>" - # new expression for being recommended - elif 'recommended' in nxdlElem.attrib.keys() and nxdlElem.attrib['recommended'] == "true": - return "<>" - # default optionality - # in BASE CLASSES: true - # in APPLICATIONS: false - elif "base_classes" in nxdlElem.base: - return "<>" - return "<>" - - -def chk_NXdataAxis_v2(hdfNode, name): - # check for being a Signal - ownSignal = hdfNode.attrs.get('signal') - if ownSignal is str and ownSignal == "1": - logger.info("Dataset referenced (v2) as NXdata SIGNAL") - # check for being an axis - ownAxes = hdfNode.attrs.get('axes') - if ownAxes is str: - axes = ownAxes.split(':') - for i in len(axes): - if axes[i] and name == axes[i]: - logger.info("Dataset referenced (v2) as NXdata AXIS #%d" % i) - return - ownPAxis = hdfNode.attrs.get('primary') - ownAxis = hdfNode.attrs.get('axis') - if ownAxis is int: - # also convention v1 - if ownPAxis is int and ownPAxis == 1: - logger.info("Dataset referenced (v2) as NXdata AXIS #%d" % - ownAxis - 1) - return - else: - logger.info( - "Dataset referenced (v2) as NXdata (primary/alternative) AXIS #%d" - % ownAxis - 1) - return - - -def chk_NXdataAxis(hdfNode, name, logger): - """ - NEXUS Data Plotting Standard v3: new version from 2014 - """ - # check if it is a field in an NXdata node - if not isinstance(hdfNode, h5py.Dataset): - return - parent = hdfNode.parent - if not parent or (parent and not "NXdata" == parent.attrs.get('NX_class')): - return - # chk for Signal - signal = parent.attrs.get('signal') - if signal and name == signal: - logger.info("Dataset referenced as NXdata SIGNAL") - return - # check for default Axes - axes = parent.attrs.get('axes') - axisFnd = False - if axes is str: - if name == axes: - logger.info("Dataset referenced as NXdata AXIS") - return - elif axes is not None: - for i in range(len(axes)): - if name == axes[i]: - indices = parent.attrs.get(axes[i] + '_indices') - if indices is int: - logger.info("Dataset referenced as NXdata AXIS #%d" % - indices) - else: - logger.info("Dataset referenced as NXdata AXIS #%d" % i) - return - # check for alternative Axes - indices = parent.attrs.get(name + '_indices') - if indices is int: - logger.info("Dataset referenced as NXdata alternative AXIS #%d" % - indices) - # check for older conventions - return chk_NXdataAxis_v2(hdfNode, name) - - -def get_nxdl_doc(hdfNode, logger, doc, attr=False): - """get nxdl documentation for an HDF5 node (or its attribute)""" - - nxdef = get_nxdl_entry(hdfNode) - root = objectify.parse(nexusDefPath + "/applications/" + nxdef + ".nxdl.xml") - elem = root.getroot() - nxdlPath = [elem] - path = get_nx_class_path(hdfNode) - REQstr = None - for group in path.split('/')[1:]: - if group.startswith('NX'): - elem = get_nxdl_child(elem, group) - if elem is not None: - if doc: logger.info("/" + group) - nxdlPath.append(elem) - else: - if doc: logger.info("/" + group + " - IS NOT IN SCHEMA") - else: - if elem is not None: - elem = get_nxdl_child(elem, group) - nxdlPath.append(elem) - if elem is not None: - if attr: - if doc: logger.info("/" + group) - else: - if doc: logger.info("/" + group + ' [' + get_nx_class(elem) + ']') - else: - if doc: logger.info("/" + group + " - IS NOT IN SCHEMA") - if elem is not None and attr: - # NX_class is a compulsory attribute for groups in a nexus file - # which should match the type of the corresponding NXDL element - if attr == 'NX_class' and not isinstance(hdfNode, h5py.Dataset): - elem = None - if doc: logger.info("@" + attr + ' [NX_CHAR]') - # units category is a compulsory attribute for any fields - elif attr == 'units' and isinstance(hdfNode, h5py.Dataset): - REQstr = "<>" - try: - # try to find if units is deinfed inside the field in the NXDL element - unit = elem.attrib[attr] - if doc: logger.info("@" + attr + ' [' + unit + ']') - elem = None - nxdlPath.append(attr) - except BaseException: - # otherwise try to find if units is defined as a child of the NXDL element - elem = get_nxdl_child(elem, attr) - if elem is not None: - if doc: logger.info("@" + attr + ' - [' + get_nx_class(elem) + ']') - nxdlPath.append(elem) - else: - # if no units category were defined in NXDL: - if doc: logger.info("@" + attr + " - REQUIRED, but undefined unit category") - nxdlPath.append(attr) - pass - # units for attributes can be given as ATTRIBUTENAME_units - elif attr.endswith('_units'): - # check for ATTRIBUTENAME_units in NXDL (normal) - elem2 = get_nxdl_child(elem, attr) - if elem2 is not None: - elem = elem2 - if doc: logger.info("@" + attr + ' - [' + get_nx_class(elem) + ']') - nxdlPath.append(elem) - else: - # if not defined, check for ATTRIBUTENAME to see if the ATTRIBUTE is in the SCHEMA, but no units category were defined - elem2 = get_nxdl_child(elem, attr[:-6]) - if elem2 is not None: - REQstr = '<>' - if doc: logger.info("@" + attr + " - RECOMMENDED, but undefined unit category") - nxdlPath.append(attr) - else: - # otherwise: NOT IN SCHEMA - elem = elem2 - if doc: logger.info("@" + attr + " - IS NOT IN SCHEMA") - # other attributes - else: - elem = get_nxdl_child(elem, attr) - if elem is not None: - if doc: logger.info("@" + attr + ' - [' + get_nx_class(elem) + ']') - nxdlPath.append(elem) - else: - if doc: logger.info("@" + attr + " - IS NOT IN SCHEMA") - if elem is None and REQstr is None: - if doc: logger.info("") - return ('None', None, None, None) - else: - if REQstr is None: - # check for being required - REQstr = get_required_string(elem) - if doc: logger.info(REQstr) - if elem is not None: - # check for deprecation - depStr = elem.attrib.get('deprecated') - if depStr: - if doc: logger.info("DEPRECATED - " + depStr) - # check for enums - sdoc = get_nxdl_child(elem, 'enumeration') - if sdoc is not None: - if doc: logger.info("enumeration:") - for item in sdoc.getchildren(): - if etree.QName(item).localname == 'item': - if doc: logger.info("-> " + item.attrib['value']) - # check for NXdata references (axes/signal) - chk_NXdataAxis(hdfNode, path.split('/')[-1], logger) - # check for doc - sdoc = get_nxdl_child(elem, 'doc') - if doc: logger.info(sdoc if sdoc is not None else "") - return (REQstr, elem, nxdef, nxdlPath) - - -def get_doc(node, ntype, level, nxhtml, nxpath): - # URL for html documentation - anchor = '' - for n in nxpath: - anchor += n.lower() + "-" - anchor = 'https://manual.nexusformat.org/classes/' + nxhtml + "#" + anchor.replace('_', '-') + ntype - if len(ntype) == 0: - anchor = anchor[:-1] - - # RST documentation from the field 'doc' - try: - doc = node.doc.pyval - except BaseException: - doc = "" - - # enums - (o, enums) = get_enums(node) - if o: - enum_str = "\n " + ("Possible values:" if len(enums.split(',')) > 1 else "Obligatory value:") + "\n " + enums + "\n" - else: - enum_str = "" - - return anchor, doc + enum_str - - -def print_doc(node, ntype, level, nxhtml, nxpath): - anchor, doc = get_doc(node, ntype, level, nxhtml, nxpath) - print(" " * (level + 1) + anchor) - - preferredWidth = 80 + level * 2 - wrapper = textwrap.TextWrapper(initial_indent=' ' * (level + 1), width=preferredWidth, - subsequent_indent=' ' * (level + 1), expand_tabs=False, tabsize=0) - # doc=node.find('doc') - if doc is not None: - # for par in doc.text.split('\n'): - for par in doc.split('\n'): - print(wrapper.fill(par)) - # print(doc.text if doc is not None else "") - - -def get_enums(node): - """ - makes list of enumerations, if node contains any. - Returns comma separated STRING of enumeration values, if there are enum tag, - otherwise empty string. - """ - # collect item values from enumeration tag, if any - try: - for items in node.enumeration: - enums = [] - for values in items.findall('item'): - enums.append("'" + values.attrib['value'] + "'") - enums = ','.join(enums) - return (True, '[' + enums + ']') - # if there is no enumeration tag, returns empty string - except BaseException: - return (False, '') - - -def nxdl_to_attr_obj(nxdlPath): - """ - Finds the path entry in NXDL file - Grabs all the attrs in NXDL entry - Checks Nexus base application defs for missing attrs and adds them as well - returns attr as a Python obj that can be directly placed into the h5py library - """ - nxdef = nxdlPath.split(':')[0] - root = objectify.parse(nexusDefPath + "/applications/" + nxdef + ".nxdl.xml") - elem = root.getroot() - path = nxdlPath.split(':')[1] - for group in path.split('/')[1:]: - elem = get_nxdl_child(elem, group) - return elem - - -def process_node(hdfNode, parser, logger, doc=True): - """ - #processes an hdf5 node - #- it logs the node found and also checks for its attributes - #- retrieves the corresponding nxdl documentation - #TODO: - # - follow variants - # - NOMAD parser: store in NOMAD - """ - hdfPath = hdfNode.name - if isinstance(hdfNode, h5py.Dataset): - logger.info('===== FIELD (/%s): %s' % (hdfPath, hdfNode)) - val = str(hdfNode[()]).split('\n') if len(hdfNode.shape) <= 1 else str( - hdfNode[0]).split('\n') - logger.info('value: %s %s' % (val[0], "..." if len(val) > 1 else '')) - else: - logger.info('===== GROUP (/%s [%s::%s]): %s' % - (hdfPath, get_nxdl_entry(hdfNode), - get_nx_class_path(hdfNode), hdfNode)) - (REQstr, elem, nxdef, nxdlPath) = get_nxdl_doc(hdfNode, logger, doc) - if parser is not None and isinstance(hdfNode, h5py.Dataset): - parser(hdfPath, hdfNode, nxdef, nxdlPath, val) - for k, v in hdfNode.attrs.items(): - logger.info('===== ATTRS (/%s@%s)' % (hdfPath, k)) - val = str(v).split('\n') - logger.info('value: %s %s' % (val[0], "..." if len(val) > 1 else '')) - (REQstr, elem, nxdef, nxdlPath) = get_nxdl_doc(hdfNode, logger, doc, attr=k) - if parser is not None and 'NOT IN SCHEMA' not in REQstr and 'None' not in REQstr: - parser(hdfPath, hdfNode, nxdef, nxdlPath, val) - - -def get_default_plotable(root, parser, logger): - logger.info('========================') - logger.info('=== Default Plotable ===') - logger.info('========================') - # v3 from 2014 - - # nxentry - nxentry = None - default_nxentry_group_name = root.attrs.get("default") - if default_nxentry_group_name: - try: - nxentry = root[default_nxentry_group_name] - except BaseException: - nxentry = None - if not nxentry: - nxentries = [] - for key in root.keys(): - if isinstance(root[key], h5py.Group) and root[key].attrs.get('NX_class') and root[key].attrs['NX_class'] == "NXentry": - nxentries.append(root[key]) - # v3: as there was no selection given, only 1 nxentry shall exists - # v2: take any - if len(nxentries) >= 1: - nxentry = nxentries[0] - if not nxentry: - logger.info('No NXentry has been found') - return - logger.info('') - logger.info('NXentry has been identified: ' + nxentry.name) - # process_node(nxentry, None, False) - # nxdata - nxdata = None - default_nxdata_group_name = nxentry.attrs.get("default") - if default_nxdata_group_name: - try: - nxdata = nxentry[default_nxdata_group_name] - except BaseException: - nxdata = None - if not nxdata: - lnxdata = [] - for key in nxentry.keys(): - if isinstance(nxentry[key], h5py.Group) and nxentry[key].attrs.get('NX_class') and nxentry[key].attrs['NX_class'] == "NXdata": - lnxdata.append(nxentry[key]) - # v3: as there was no selection given, only 1 nxdata shall exists - # v2: take any - if len(lnxdata) >= 1: - nxdata = lnxdata[0] - if not nxdata: - logger.info('No NXdata group has been found') - return - logger.info('') - logger.info('NXdata group has been identified: ' + nxdata.name) - process_node(nxdata, None, logger, False) - # signal - signal = None - signal_dataset_name = nxdata.attrs.get("signal") - try: - signal = nxdata[signal_dataset_name] - except BaseException: - signal = None - if not signal: - signals = [] - for key in nxdata.keys(): - if isinstance(nxdata[key], h5py.Dataset): - signals.append(nxdata[key]) - # v3: as there was no selection given, only 1 data field shall exists - if len(signals) == 1: - signal = signals[0] - # v2: select the one with an attribute signal="1" attribute - elif len(signals) > 1: - for s in signals: - if s.attrs.get("signal") and s.attrs.get("signal") is str and s.attrs.get("signal") == "1": - signal = s - break - if not signal: - logger.info('No Signal has been found') - return - logger.info('') - logger.info('Signal has been identified: ' + signal.name) - process_node(signal, None, logger, False) - dim = len(signal.shape) - # axes - axes = [] - for a in range(dim): - ax = [] - # primary axes listed in attribute axes - ax_datasets = nxdata.attrs.get("axes") - try: - # single axis is defined - if ax_datasets is str: - # explicite definition of dimension number - ind = nxdata.attrs.get(ax_datasets + '_indices') - if ind and ind is int: - if ind == a: - ax.append(nxdata[nxdata[ax_datasets]]) - # positional determination of the dimension number - elif a == 0: - ax.append(nxdata[nxdata[ax_datasets]]) - # multiple axes are listed - else: - # explicite definition of dimension number - for aax in ax_datasets: - ind = nxdata.attrs.get(aax + '_indices') - if ind and ind is int: - if ind == a: - ax.append(nxdata[nxdata[aax]]) - # positional determination of the dimension number - if len(ax) == 0: - ax.append(nxdata[ax_datasets[a]]) - except BaseException: - pass - # check for corresponding AXISNAME_indices - for attr in nxdata.attrs.keys(): - if attr.endswith('_indices') and nxdata.sttrs[attr] == a: - ax.append(nxdata[attr.split('_indices')[0]]) - # v2 - # check for ':' separated axes defined in Signal - if len(ax) == 0: - try: - ax_datasets = signal.attrs.get("axes").split(':') - ax.append(nxdata[ax_datasets[a]]) - except BaseException: - pass - # check for axis/primary specifications - if len(ax) == 0: - # find those with attribute axis= actual dimension number - lax = [] - for key in nxdata.keys(): - if isinstance(nxdata[key], h5py.Dataset): - try: - if nxdata[key].attrs['axis'] == a + 1: - lax.append(nxdata[key]) - except BaseException: - pass - if len(lax) == 1: - ax.append(lax[0]) - # if there are more alternatives, prioritise the one with an attribute primary="1" - elif len(lax) > 1: - for sax in lax: - if sax.attrs.get('primary') and sax.attrs.get('primary') == 1: - ax.insert(0, sax) - else: - ax.append(sax) - axes.append(ax) - logger.info('') - logger.info('For Axis #%d, %d axes have been identified: %s' % (a, len(ax), str(ax))) - - -class HandleNexus: - def __init__(self, logger, args): - self.logger = logger - self.input_file_name = args[0] if len( - # args) >= 1 else 'wcopy/from_dallanto_master_from_defs.h5' - # args) >= 1 else 'ARPES/201805_WSe2_arpes.nxs' - args) >= 1 else 'tests/data/nexus_test_data/201805_WSe2_arpes.nxs' - - def visit_node(self, hdfPath, hdfNode): - process_node(hdfNode, self.parser, self.logger) - - def process_nexus_master_file(self, parser): - """ Process a nexus master file by processing all its nodes and their attributes""" - self.parser = parser - self.in_file = h5py.File(self.input_file_name, 'r') - self.in_file.visititems(self.visit_node) - get_default_plotable(self.in_file, self.parser, self.logger) - self.in_file.close() - - -if __name__ == '__main__': - LOGGING_FORMAT = "%(levelname)s: %(message)s" - stdout_handler = logging.StreamHandler(sys.stdout) - stdout_handler.setLevel(logging.DEBUG) - logging.basicConfig(level=logging.DEBUG, format=LOGGING_FORMAT, handlers=[stdout_handler]) - logger = logging.getLogger() - nexus_helper = HandleNexus(logger, sys.argv[1:]) - nexus_helper.process_nexus_master_file(None) diff --git a/nexusparser/tools/yaml2nxdl/NXmpes_core_draft.yml b/nexusparser/tools/yaml2nxdl/NXmpes_core_draft.yml deleted file mode 100644 index 1d485a824..000000000 --- a/nexusparser/tools/yaml2nxdl/NXmpes_core_draft.yml +++ /dev/null @@ -1,193 +0,0 @@ -#pincelli at fhi-berlin.mpg.de, 11/2021 -#a draft version of a NeXus application definition for arpes, -#the existing NXarpes is too restrictive, this application definition aims at generalizing it -#to be agnostic of the experimental details. -#the draft uses the application example of a simple 2D slice through the k-space, the elementary unit of -#arpes measurements. -#It uses only existing NeXus base classes. It is designed to be extended by other application definitions -# with higher granularity in the data description. - -name: NXmpes_core # Decided to use "core" and not "base" to avoid confusion with "base class". This is the most general (core) appdef. -doc: This is the most general application definition for multidimensional photoelectron spectroscopy. -symbols: - doc: The symbols used in the schema to specify e.g. dimensions of arrays - nfa: Number of fast axes (acquired simutaneously) e.g. emission angle, kinetic energy - nsa: Number of slow axes (acquired scanning a physical quantity) e.g. lens voltage, photon energy or temperature - nx: Number of points in the first angular direction - ne: Number of points in the energy dispersion direction -category: application # Defaults "exists" to "required" -#draft the application definition -(NXentry): - \@entry: - doc: "NeXus convention is to use \"entry1\", \"entry2\", for analysis software to locate each entry." - title: - start_time(NX_DATE_TIME): - definition: - \@version: # New approach of NIAC: version controlled application definitions. - doc: Official NeXus NXDL schema to which this file conforms. - enumeration: [NXmpes_core] - (NXinstrument): - (NXsource): - type: - name: - probe: - enumeration: [x-ray,ultraviolet] - (NXbeam): # Describes the beam at the sample. - doc: Properties of the beam at the sample. - distance(NX_NUMBER): - doc: Distance of the point of evaluation of the beam from the sample. - unit: NX_LENGTH - incident_energy(NX_NUMBER): - doc: Incident photon energy. - unit: NX_ENERGY - incident_energy_spread(NX_NUMBER): # Ahead of base class - exists: recommended - doc: FWHM energy linewidth of the incident photons. - unit: NX_ENERGY - # Not in NIAC. incident_wavelength_spread exists but is uncomfortable for photoemission people. - incident_polarization(NX_NUMBER): - exists: recommended - doc: Incident polarization specified as a Stokes vector. - exists: optional - unit: NX_ANY - dimensions: - rank: 1 - dim: [[1, 4]] - # In NIAC "incident_polarization" is a 2-vector of floats. - # It is not explained but looks like a real-valued Jones vector, which - # cannot describe circular or partially polarized. - # Extended to a 4-vector of floats. - # It is then meant to be represented as a Stokes vector. - (NXelectronanalyser): - description: - doc: Free text description of the type of detector. - energy_resolution(NX_NUMBER): # Ahead of base class - doc: Energy resolution of the analyser with the current setting. - unit: NX_ENERGY - momentum_resolution(NX_NUMBER): # Ahead of base class - doc: Momentum resolution of the analyser with the current setting. - unit: NX_WAVENUMBER - fast_axes: - doc: List of the axes that are acquired symultaneously by the detector - dimensions: - rank: 1 - dim: [[1,nfa]] - slow_axes: - doc: List of the axes that are acquired by scanning a physical parameter, listed in order of decreasing speed. - dimensions: - rank: 1 - dim: [[1,nsa]] - # Examples: Fermi surface maps at every step of a temperature ramp. - # With an hemispherical: - # fast_axes: [energy,kx] - # slow_axes: [ky,temperature] - # With a tof: - # fast_axes: [energy, kx, ky] - # slow_axes: [temperature] - # axes can be less abstract than this, i.e. [detector_x, detector_y] and [manipulator_angle, temperature] - (NXcollectionlens): - scheme: #Ahead of base class - doc: Scheme of collector lens. - enumeration: [Standard, Deflector, PEEM, Momentum Microscope] - lens_mode: - exists: recommended - doc: Labelling of a standard lens setting - projection: - doc: The space projected in the angularly dispersive directions, i.e. real or reciprocal - enumeration: [real, reciprocal] - (NXaperture): # Ahead of base class - exists: recommended - doc: aperture generating the momentum and/or energy filtering - description: - enumeration: [slit,pinhole,iris] - shape: - description: - doc: Shape of the aperture, curved or straight for horizontal slits, square or round for pinhole etc. - enumeration: [curved, straight, circle, square, hexagon, octagon, bladed] - size(NX_NUMBER): - doc: The relevant dimension for the aperture (slit width, pinhole diameter etc.) - unit: NX_LENGTH - (NXenergydispersion): - scheme: - doc: Energy dispersion scheme employed. - enumeration: [tof, hemispherical, cylindrical mirror, display mirror, retarding grid] - pass_energy(NX_NUMBER): - doc: energy of the electrons on the mean path of the analyser - unit: NX_ENERGY - energy_scan_mode: # Ahead of base class - doc: Way of scanning the energy axis (fixed or sweep) - enumeration: [fixed,sweep] - (NXdetector): - amplifier_type: - doc: Type of electron amplifier. - enumeration: [MCP, channeltron] # channeltron might be used for some 1D applications such as spin detectors. - detector_type: - doc: Description of the detector type. - enumeration: [DLD,Phosphor+CCD,Phosphor+CMOS,ECMOS] - sensor_pixels(NX_INT): # Ahead of base class - doc: Number of raw active element in each dimension. Important for swept scans. - dimensions: - rank: 1 - dim: [[1, 2]] - (NXdata): # Raw signal without calibrated axes - exists: recommended - \@signal: raw # There is an object named raw that contains the signal - raw(NX_NUMBER): # There is a block of numbers named raw. - (NXprocess): - calculated_kx(NX_FLOAT): - exists: recommended - doc: calibrated kx momentum axis - unit: NX_WAVENUMBER - dimensions: - rank: 1 - dim: [[1, nx]] - calculated_energy(NX_FLOAT): - exists: recommended - doc: calibrated energy axis - unit: NX_ENERGY - dimensions: - rank: 1 - dim: [[1, ne]] - (NXdistortion): - applied(NX_BOOLEAN): - doc: Has a distortion correction been applied? - (NXregistration): - applied(NX_BOOLEAN): - doc: Has an image registration been applied? - energy_calibration(NXcalibration): - applied(NX_BOOLEAN): - doc: Has an energy calibration been applied? - (NXcalibration): - applied(NX_BOOLEAN): - doc: Has a momentum calibration been applied? - (NXsample): - name: - doc: Simple and descriptive name of the sample - chemical_formula: - doc: Chemical formula of the sample - sample_history: - exists: optional - doc: Ideally, a reference to the location or a unique identifier or other metadata file. In the case that is not available, free-text description. - preparation_date(NX_DATE_TIME): - exists: recommended - doc: ISO 8601 date of preparation of the sample for the ARPES experiment (i.e. cleaving, last annealing). - unit: NX_TIME - description: - doc: Free-text surface preparation technique for the ARPES experiment, i.e. UHV cleaving, in-situ growth, sputtering/annealing etc. - temperature(NX_NUMBER): - doc: Temperature of the sample - unit: NX_TEMPERATURE - situation: [vacuum] - pressure(NX_NUMBER): - doc: Residual gas pressure at the sample - unit: NX_PRESSURE - (NXdata): - \@signal: data # There is an object named data that contains the signal - \@energy_indices: # There is an axis (to be specified) that represents energy - \@kx_indices: # There is an axis (to be specified) that represents the first parallel momentum direction - data(NX_NUMBER): # There is a block of numbers named data. -# NXdata structure is extremeley free here to provide a low entry barrier for data parsing in the core appdef. -# Will be restricted further in extending appdefs. -# If there is no rebinning between raw data and plottable data, one can use links -# to link the data in NXinstrument:NXelectronanalyser:NXdetector:NXdata:Raw -# and the axes in NXprocess:calculated_kx and NXprocess:calculated_energy diff --git a/nexusparser/tools/yaml2nxdl/README.md b/nexusparser/tools/yaml2nxdl/README.md index 169c73048..82538c64a 100644 --- a/nexusparser/tools/yaml2nxdl/README.md +++ b/nexusparser/tools/yaml2nxdl/README.md @@ -1,24 +1,55 @@ -#Yaml to nxdl converter +# YAML to NXDL converter and NXDL to YAML converter + +**Tools purpose**: Offer a simple YAML-based schema to describe NeXus instances. These can be NeXus application definitions, or classes such as base or contributed classes. Users create NeXus instances by writing a YAML file which details a hierarchy of data/metadata elements. +The reverse conversion is also implemented. + +**How the tool works**: +- yaml2nxdl.py +1. Reads the user-specified NeXus instance that the YML input file represents as a nested dictionary. +2. Creates an instantiated NXDL schema XML tree by walking the dictionary nest. +3. Write the tree into a properly formatted NXDL XML schema file to disk. + +- nxdl2yaml.py +1. Reads the user-specified NeXus instance that the NXDL input file represents as a nested dictionary. +2. Creates a YML file walking the dictionary nest. +3. Optionally, if --append-to-base argument is given, + the NXDL input file is interpreted as an extension of a base class and the entries contained in it + are appended below a standard Nexus base class. + You need to specify both your XML input file (.nxdl.xml) and Nexus class (no extension). + Both .yml and .nxdl.xml file of the extended class are printed. -This tool is composed of several steps: +```console +user@box:~$ python yaml2nxdl.py -a) read the user-specific experimental information as a yml file +Usage: ./yaml2nxdl.py [OPTIONS] -b) create an instantiated NXDL schema XML tree +Options: + --input-file TEXT The path to the input data file to read. + --verbose Addictional std output info is printed to help debugging. + --help Show this message and exit. -c) write the NXDL XML file to file -```console -user@box:~$ python yaml2nxdl.py +user@box:~$ python nxdl2yaml.py -Usage: ./yaml2nxdl.py [OPTIONS] +Usage: ./nxdl2yaml.py [OPTIONS] Options: - --input_file TEXT The path to the input data file to read. (Repeat for - more than one file.) - --help Show this message and exit. + --input-file TEXT The path to the input data file to read. + --append-to-base TEXT Parse xml file and append to specified base class, + write the base class name with no extension. + --help Show this message and exit. ``` -The tool is reading a yml file manually defined in the 'fnm' variable in yaml2nxdl.py - +**Rule set**: From transcoding YAML files we need to follow several rules. +* Named NeXus groups, which are instances of NeXus classes especially base or contributed classes. Creating (NXbeam) is a simple example of a request to define a group named according to NeXus default rules. mybeam1(NXbeam) or mybeam2(NXbeam) are examples how to create multiple named instances at the same hierarchy level. +* Members of groups so-called fields. A simple example of a member is voltage. Here the datatype is implied automatically as the default NeXus NX_CHAR type. By contrast, voltage(NX_FLOAT) can be used to instantiate a member of class which should be of NeXus type NX_FLOAT. +* And attributes or either groups or fields. Names of attributes have to be preceeded by \@ to mark them as attributes. + +**Special keywords**: Several keywords can be used as childs of groups, fields, and attributes to specify the members of these. Groups, fields and attributes are nodes of the XML tree. +* *doc*: A human-readable description/docstring +* *exists* A statement if an entry is more than optional. Options are recommended, required, [min, 1, max, infty] numbers like here 1 can be replaced by uint or infty to indicate no restriction on how frequently the entry can occur inside the NXDL schema at the same hierarchy level. +* *link* Define links between nodes. +* *units* A statement introducing NeXus-compliant NXDL units arguments, like NX_VOLTAGE +* *dimensions* Details which dimensional arrays to expect +* *enumeration* Python list of strings which are considered as recommended entries to choose from. diff --git a/nexusparser/tools/yaml2nxdl/__init__.py b/nexusparser/tools/yaml2nxdl/__init__.py new file mode 100644 index 000000000..c1273314b --- /dev/null +++ b/nexusparser/tools/yaml2nxdl/__init__.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +""" +# Load paths +""" +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import os +import sys +sys.path.insert(0, '..') +sys.path.append(os.path.dirname(os.path.realpath(__file__))) + +# from nexusparser.tools.yaml2nxdl import yaml2nxdl +# from nexusparser.tools.yaml2nxdl import yaml2nxdl_recursive_build +# from nexusparser.tools.yaml2nxdl import yaml2nxdl_read_yml_file +# from nexusparser.tools.yaml2nxdl import yaml2nxdl_utils diff --git a/nexusparser/tools/yaml2nxdl/nxdl2yaml.py b/nexusparser/tools/yaml2nxdl/nxdl2yaml.py new file mode 100755 index 000000000..011bc77d5 --- /dev/null +++ b/nexusparser/tools/yaml2nxdl/nxdl2yaml.py @@ -0,0 +1,349 @@ +#!/usr/bin/env python3 +"""The xml2yml tool is going backward from xml to yaml file. +It also has the --append-to-base option that allows to append +the content of a user provided input file at the bottom of an existing Nexus base class, +to allow for generation of new extended base classes files + +""" +import os +import xml.etree.ElementTree as ET +from typing import List +import click +from click.testing import CliRunner +import nexusparser.tools.yaml2nxdl.yaml2nxdl as yml2nxdl + + +def handle_group_or_field(depth, node, file_out): + """Handle all the possible attributes that come along a field or group + +""" + if "name" in node.attrib and "type" in node.attrib: + file_out.write( + '{indent}{name}({value1}):\n'.format( + indent=depth * ' ', + name=node.attrib['name'] or '', + value1=node.attrib['type'] or '')) + if "name" in node.attrib and "type" not in node.attrib: + file_out.write( + '{indent}{name}:\n'.format( + indent=depth * ' ', + name=node.attrib['name'] or '')) + if "name" not in node.attrib and "type" in node.attrib: + file_out.write( + '{indent}({type}):\n'.format( + indent=depth * ' ', + type=node.attrib['type'] or '')) + if "minOccurs" in node.attrib and "maxOccurs" in node.attrib: + file_out.write( + '{indent}exists: [min, {value1}, max, {value2}]\n'.format( + indent=(depth + 1) * ' ', + value1=node.attrib['minOccurs'] or '', + value2=node.attrib['maxOccurs'] or '')) + if "minOccurs" in node.attrib \ + and "maxOccurs" not in node.attrib \ + and node.attrib['minOccurs'] == "1": + file_out.write( + '{indent}{name}: required \n'.format( + indent=(depth + 1) * ' ', + name='exists')) + if "recommended" in node.attrib and node.attrib['recommended'] == "true": + file_out.write( + '{indent}exists: recommended\n'.format( + indent=(depth + 1) * ' ')) + if "units" in node.attrib: + file_out.write( + '{indent}unit: {value}\n'.format( + indent=(depth + 1) * ' ', + value=node.attrib['units'] or '')) + + +def handle_dimension(depth, node, file_out): + """Handle the dimension field + +""" + file_out.write( + '{indent}{tag}:\n'.format( + indent=depth * ' ', + tag=node.tag.split("}", 1)[1])) + file_out.write( + '{indent}rank: {rank}\n'.format( + indent=(depth + 1) * ' ', + rank=node.attrib['rank'])) + dim_list = '' + for child in list(node): + tag = child.tag.split("}", 1)[1] + if tag == ('dim'): + dim_list = dim_list + '[{index}, {value}], '.format( + index=child.attrib['index'], + value=child.attrib['value']) + file_out.write( + '{indent}dim: [{value}]\n'.format( + indent=(depth + 1) * ' ', + value=dim_list[:-2] or '')) + + +def handle_attributes(depth, node, file_out): + """Handle the attributes parsed from the xml file + +""" + file_out.write( + '{indent}{escapesymbol}{key}:\n'.format( + indent=depth * ' ', + escapesymbol=r'\@', + key=node.attrib['name'])) + + +def handle_enumeration(depth, node, file_out): + """Handle the enumeration field parsed from the xml file + +""" + file_out.write( + '{indent}{tag}:'.format( + indent=depth * ' ', + tag=node.tag.split("}", 1)[1])) + enum_list = '' + for child in list(node): + tag = child.tag.split("}", 1)[1] + if tag == ('item'): + enum_list = enum_list + '{value}, '.format( + value=child.attrib['value']) + file_out.write( + ' [{enum_list}]\n'.format( + enum_list=enum_list[:-2] or '')) + + +def handle_not_root_level_doc(depth, node, file_out): + """Handle docs field along the yaml file + +""" + file_out.write( + '{indent}{tag}: "{text}"\n'.format( + indent=depth * ' ', + tag=node.tag.split("}", 1)[1], + text=node.text.strip().replace('\"', '\'') if node.text else '')) + + +class Nxdl2yaml(): + """Parse XML file and print a YML file + +""" + def __init__( + self, + symbol_list: List[str], + root_level_definition: List[str], + root_level_doc='', + root_level_symbols=''): + self.append_flag = True + self.found_definition = False + self.jump_symbol_child = False + self.root_level_doc = root_level_doc + self.root_level_symbols = root_level_symbols + self.root_level_definition = root_level_definition + self.symbol_list = symbol_list + + def handle_symbols(self, depth, node): + """Handle symbols field and its childs + + """ + self.root_level_symbols = '{indent}{tag}: {text}'.format( + indent=0 * ' ', + tag=node.tag.split("}", 1)[1], + text=node.text.strip() if node.text else '') + depth += 1 + for child in list(node): + tag = child.tag.split("}", 1)[1] + if tag == ('doc'): + self.symbol_list.append( + '{indent}{tag}: "{text}"'.format( + indent=1 * ' ', + tag=child.tag.split("}", 1)[1], + text=child.text.strip().replace('\"', '\'') if child.text else '')) + elif tag == ('symbol'): + self.symbol_list.append( + '{indent}{key}: "{value}"'.format( + indent=1 * ' ', + key=child.attrib['name'], + value=child.attrib['doc'] or '')) + + def handle_definition(self, node): + """Handle definition group and its attributes + + """ + for item in node.attrib: + if 'schemaLocation' not in item \ + and 'name' not in item \ + and 'extends' not in item \ + and 'type' not in item: + self.root_level_definition.append( + '{key}: {value}'.format( + key=item, + value=node.attrib[item] or '')) + if 'name' in node.attrib.keys(): + self.root_level_definition.append( + '({value}):'.format( + value=node.attrib['name'] or '')) + + def handle_root_level_doc(self, node): + """Handle the documentation field found at root level + +""" + for child in list(node): + tag = child.tag.split("}", 1)[1] + if tag == ('doc'): + self.root_level_doc = '{indent}{tag}: "{text}"'.format( + indent=0 * ' ', + tag=child.tag.split("}", 1)[1], + text=child.text.strip().replace('\"', '\'') if child.text else '') + node.remove(child) + + def print_root_level_doc(self, file_out): + """Print at the root level of YML file \ +the general documentation field found in XML file + + """ + file_out.write( + '{indent}{root_level_doc}\n'.format( + indent=0 * ' ', + root_level_doc=self.root_level_doc)) + self.root_level_doc = '' + + def print_root_level_info(self, depth, file_out): + """Print at the root level of YML file \ +the information stored as definition attributes in the XML file + +""" + if depth > 0 \ + and [s for s in self.root_level_definition if "category: application" in s]\ + or depth == 1 \ + and [s for s in self.root_level_definition if "category: base" in s]: + if self.root_level_symbols: + file_out.write( + '{indent}{root_level_symbols}\n'.format( + indent=0 * ' ', + root_level_symbols=self.root_level_symbols)) + for symbol in self.symbol_list: + file_out.write( + '{indent}{symbol}\n'.format( + indent=0 * ' ', + symbol=symbol)) + if self.root_level_definition: + for defs in self.root_level_definition: + file_out.write( + '{indent}{defs}\n'.format( + indent=0 * ' ', + defs=defs)) + self.found_definition = False + + def recursion_in_xml_tree(self, depth, node, output_yml): + """Descend lower level in xml tree. If we are in the symbols branch, \ +the recursive behaviour is not triggered as we already handled the symbols' childs +""" + if self.jump_symbol_child is True: + self.jump_symbol_child = False + else: + for child in list(node): + Nxdl2yaml.xmlparse(self, output_yml, child, depth) + + def xmlparse(self, output_yml, node, depth): + """Main of the nxdl2yaml converter. +It parses XML tree, +then prints recursively each level of the tree + + """ + print(depth, node.attrib) + with open(output_yml, "a") as file_out: + tag = node.tag.split("}", 1)[1] + if tag == ('definition'): + self.found_definition = True + Nxdl2yaml.handle_definition(self, node) + if depth == 0 and not self.root_level_doc: + Nxdl2yaml.handle_root_level_doc(self, node) + if tag == ('doc') and depth != 1: + handle_not_root_level_doc(depth, node, file_out) + if tag == ('symbols'): + Nxdl2yaml.handle_symbols(self, depth, node) + self.jump_symbol_child = True + # End of root level definition parsing. Print root-level definitions in file + if self.root_level_doc \ + and self.append_flag is True \ + and (depth in (0, 1)): + Nxdl2yaml.print_root_level_doc(self, file_out) + if self.found_definition is True and self.append_flag is True: + Nxdl2yaml.print_root_level_info(self, depth, file_out) + # End of print root-level definitions in file + if tag in ('field', 'group') and depth != 0: + handle_group_or_field(depth, node, file_out) + if tag == ('enumeration'): + handle_enumeration(depth, node, file_out) + if tag == ('attribute'): + handle_attributes(depth, node, file_out) + if tag == ('dimensions'): + handle_dimension(depth, node, file_out) + depth += 1 + # Write nested nodes + Nxdl2yaml.recursion_in_xml_tree(self, depth, node, output_yml) + + +def print_yml(input_file): + """Parse an XML file provided as input and print a YML file + +""" + output_yml = input_file[:-9] + '_parsed.yml' + if os.path.isfile(output_yml): + os.remove(output_yml) + my_file = Nxdl2yaml([], []) + depth = 0 + tree = ET.parse(input_file) + my_file.xmlparse(output_yml, tree.getroot(), depth) + + +def append_yml(input_file, append_to_base): + """Append to an existing Nexus base class new elements provided in YML input file \ +and print both an XML and YML file of the extended base class. +Note: the input file name must match one existing Nexus base class to be appended + +""" + output_yml = input_file[:-9] + '_appended.yml' + if os.path.isfile(output_yml): + os.remove(output_yml) + local_dir = os.path.abspath(os.path.dirname(__file__)) + nexus_def_path = os.path.join(local_dir, '../../definitions') + base_classes_list_files = os.listdir(os.path.join(nexus_def_path, 'base_classes')) + assert [s for s in base_classes_list_files if append_to_base.strip() == s.strip('.nxdl.xml')], \ + 'Your base class extension does not match any existing Nexus base classes' + base_class = os.path.join(nexus_def_path + '/base_classes', append_to_base + '.nxdl.xml') + nexus_file = Nxdl2yaml([], []) + depth = 0 + tree = ET.parse(base_class) + nexus_file.xmlparse(output_yml, tree.getroot(), depth) + my_file = Nxdl2yaml([], [], False) # False print of definition: it's already on top of file + depth = 0 + tree = ET.parse(input_file) + my_file.xmlparse(output_yml, tree.getroot(), depth) + back_to_xml = CliRunner().invoke(yml2nxdl.yaml2nxdl, ['--input-file', output_yml]) + assert back_to_xml.exit_code == 0 + + +@click.command() +@click.option( + '--input-file', + help='The path to the xml-formatted input data file to read and create \ +a YAML file from.' +) +@click.option( + '--append-to-base', + help='Parse xml file and append to base class, given that the xml file has same name \ +of an existing base class' +) +def launch_nxdl2yml(input_file: str, append_to_base: str): + """Helper function that triggers either the parsing or the appending routines + +""" + if not append_to_base: + print_yml(input_file) + else: + append_yml(input_file, append_to_base) + + +if __name__ == '__main__': + launch_nxdl2yml() # pylint: disable=no-value-for-parameter diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl.py b/nexusparser/tools/yaml2nxdl/yaml2nxdl.py old mode 100644 new mode 100755 index 086da1195..ea19219ed --- a/nexusparser/tools/yaml2nxdl/yaml2nxdl.py +++ b/nexusparser/tools/yaml2nxdl/yaml2nxdl.py @@ -1,111 +1,120 @@ #!/usr/bin/env python3 +"""Main file of yaml2nxdl tool. +Users create NeXus instances by writing a YAML file +which details a hierarchy of data/metadata elements + +""" # -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# pylint: disable=E1101 -import os -import sys -import yaml -from lxml import etree -from yaml2nxdl_utils import nx_base_clss, nx_cand_clss, nx_unit_idnt, nx_unit_typs -from yaml2nxdl_utils import nx_type_keys, nx_attr_idnt -# check duplicates Types with no Name in read_user_appdef: https://stackoverflow.com/questions/33490870/parsing-yaml-in-python-detect-duplicated-keys -from yaml2nxdl_read_user_yml_appdef import read_user_appdef -from yaml2nxdl_recursive_build import recursive_build - -from typing import Tuple +import xml.etree.ElementTree as ET +from xml.dom import minidom import click +from nexusparser.tools.yaml2nxdl import yaml2nxdl_read_yml_file as read +from nexusparser.tools.yaml2nxdl import yaml2nxdl_recursive_build as recursive_build + + +def pretty_print_xml(xml_root, output_xml): + """Print better human-readable idented and formatted xml file +using built-in libraries and add preceding XML processing instruction + + """ + dom = minidom.parseString(ET.tostring(xml_root, encoding='utf-8', method='xml')) + sibling = dom.createProcessingInstruction( + 'xml-stylesheet', 'type="text/xsl" href="nxdlformat.xsl"') + root = dom.firstChild + dom.insertBefore(sibling, root) + xml_string = dom.toprettyxml() + with open(output_xml, "w") as file_out: + file_out.write(xml_string) + @click.command() @click.option( - '--input_file', - #default=['example.yml'], - multiple=True, - help='The path to the input data file to read. (Repeat for more than one file.)' + '--input-file', + help='The path to the yaml-formatted input data file to read and create \ +a NXDL XML file from. (Repeat for more than one file.)' ) -def yaml2nxdl(input_file: Tuple[str]): - # add check if file exists - # step1: read the user-specific application definition which was written as a yml file - yml = read_user_appdef(input_file[0]) - # print('Read YAML schema file') - - # step2a: create an instantiated NXDL schema XML tree, begin with the header add XML schema/namespaces - attr_qname = etree.QName( - "http://www.w3.org/2001/XMLSchema-instance", "schemaLocation") - rt = etree.Element('definition', - {attr_qname: 'http://definition.nexusformat.org/nxdl/nxdl.xsd'}, - nsmap={None: 'http://definition.nexusformat.org/nxdl/3.1', - 'xsi': 'http://www.w3.org/2001/XMLSchema-instance'} - ) - # , - # 'schemaLocation'}) ###############àà - # step2b: user-defined attributes for the root group - if 'name' in yml.keys(): - rt.set('name', yml['name']) - del yml['name'] - else: - raise ValueError('ERROR: name: keyword not specified !') - pi = etree.ProcessingInstruction( - "xml-stylesheet", text='type="text/xsl" href="nxdlformat.xsl"') - rt.addprevious(pi) - # evaluate whether we handle an application definition, a contributed or base class - if 'category' in yml.keys(): - if yml['category'] == 'application': - rt.set('category', 'application') - rt.set('extends', 'NXentry') - elif yml['category'] == 'contributed': - rt.set('category', 'contributed') - rt.set('extends', 'NXobject') - elif yml['category'] == 'base': - rt.set('category', 'base') - rt.set('extends', 'NXobject') - else: - raise ValueError( - 'Top-level keyword category exists in the yml but one of these: application, contributed, base !') - del yml['category'] - rt.set('type', 'group') - else: - raise ValueError( - 'Top-level keyword category does not exist in the yml !') - # step2c: docstring - if 'doc' in yml.keys(): - rt.set('doc', yml['doc']) - del yml['doc'] +@click.option( + '--verbose', + is_flag=True, + default=False, + help='Print in standard output keywords and value types to help \ +possible issues in yaml files' +) +def yaml2nxdl(input_file: str, verbose: bool): + """Main of the yaml2nxdl converter, creates XML tree, +namespace and schema, then evaluates a dictionary +nest of groups recursively and fields or (their) attributes as childs of the groups + + """ + yml_appdef = read.yml_reader(input_file) + + print('input-file: ' + input_file) + print('application/base contains the following root-level entries:') + print(list(yml_appdef.keys())) + xml_root = ET.Element( + 'definition', { + 'xmlns': 'http://definition.nexusformat.org/nxdl/3.1', + 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:schemaLocation': 'http://www.w3.org/2001/XMLSchema-instance' + } + ) + + assert 'category' in yml_appdef.keys(), 'Required root-level keyword category is missing!' + assert yml_appdef['category'] in ['application', 'base'], 'Only \ +application and base are valid categories!' + assert 'doc' in yml_appdef.keys(), 'Required root-level keyword doc is missing!' + + xml_root.set('extends', 'NXobject') + xml_root.set('type', 'group') + if yml_appdef['category'] == 'application': + xml_root.set('category', 'application') + del yml_appdef['category'] else: - raise ValueError('Top-level docstring does not exist in the yml !') - if 'symbols' in yml.keys(): - syms = etree.SubElement(rt, 'symbols') - if 'doc' in yml['symbols'].keys(): - syms.set('doc', yml['symbols']['doc']) - del yml['symbols']['doc'] - for kk, vv in iter(yml['symbols'].items()): - sym = etree.SubElement(syms, 'sym') - sym.set('name', kk) - sym.set('doc', vv) - del yml['symbols'] - # do not throw in the case of else just accept that we do not have symbols - - # step3: walk the dictionary nested in yml to create an instantiated NXDL schema XML tree rt - recursive_build(rt, yml) - - # step4: write the tree to a properly formatted NXDL XML file to disk - nxdl = etree.ElementTree(rt) - nxdl.write(input_file[0] + '.nxdl.xml', pretty_print=True, - xml_declaration=True, encoding="utf-8") - print('Parsed YAML to NXDL successfully') + xml_root.set('category', 'base') + del yml_appdef['category'] + + assert isinstance(yml_appdef['doc'], str) and yml_appdef['doc'] != '', 'Doc \ +has to be a non-empty string!' + doctag = ET.SubElement(xml_root, 'doc') + doctag.text = yml_appdef['doc'] + del yml_appdef['doc'] -# tests -# fnm = 'NXmpes_core_draft.yml' -# fnm = 'NXtest_links.yml' -# fnm = 'NXarpes.yml' -# fnm = 'NXmx.yml' -# fnm = 'NXem_base_draft.yml' -# fnm = 'NXellipsometry_base_draft.yml' -# fnm = NXapm_draft.yml + if 'symbols' in yml_appdef.keys(): + recursive_build.xml_handle_symbols(xml_root, yml_appdef['symbols']) + del yml_appdef['symbols'] -# how to use the parser as a component -# cv = yml2nxdl( fnm ).parse() + assert len(yml_appdef.keys()) == 1, 'Accepting at most keywords: category, \ +doc, symbols, and NX... at root-level!' + keyword = list(yml_appdef.keys())[0] # which is the only one + assert (keyword[0:3] == '(NX' and keyword[-1:] == ')' and len(keyword) > 4), 'NX \ +keyword has an invalid pattern, or is too short!' + xml_root.set('name', keyword[1:-1]) + recursive_build.recursive_build(xml_root, yml_appdef[keyword], verbose) + + pretty_print_xml(xml_root, input_file[:-4] + '.nxdl.xml') + print('Parsed YAML to NXDL successfully') if __name__ == '__main__': - # logging.basicConfig(level=logging.DEBUG) yaml2nxdl().parse() # pylint: disable=no-value-for-parameter diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl_read_user_yml_appdef.py b/nexusparser/tools/yaml2nxdl/yaml2nxdl_read_user_yml_appdef.py deleted file mode 100644 index a336f12cb..000000000 --- a/nexusparser/tools/yaml2nxdl/yaml2nxdl_read_user_yml_appdef.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Created on Mon Nov 22 17:43:45 2021 - -@author: kuehbach -""" - -import os, sys -import yaml -from lxml import etree - -def read_user_appdef(fnm): - with open(fnm) as stream: - try: - return yaml.safe_load(stream) - #print(yml) - #rt = etree.Element('description') - except yaml.YAMLError as exc: - print(exc) - return None \ No newline at end of file diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl_read_yml_file.py b/nexusparser/tools/yaml2nxdl/yaml2nxdl_read_yml_file.py new file mode 100644 index 000000000..b9d929c27 --- /dev/null +++ b/nexusparser/tools/yaml2nxdl/yaml2nxdl_read_yml_file.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +""" +Function to read a yaml file +""" +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import yaml + + +def yml_reader(inputfile): + """ + Yaml module based reading of .yml file + """ + with open(inputfile) as stream: + try: + return yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) + return None diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl_recursive_build.py b/nexusparser/tools/yaml2nxdl/yaml2nxdl_recursive_build.py index 176aabebb..6d32399a8 100644 --- a/nexusparser/tools/yaml2nxdl/yaml2nxdl_recursive_build.py +++ b/nexusparser/tools/yaml2nxdl/yaml2nxdl_recursive_build.py @@ -1,238 +1,351 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Created on Mon Nov 22 17:48:21 2021 +"""Creates an instantiated NXDL schema XML tree by walking the dictionary nest -@author: kuehbach """ -import os, sys -import yaml -from lxml import etree -from yaml2nxdl_utils import nx_name_type_resolving -from yaml2nxdl_utils import nx_base_clss, nx_cand_clss, nx_unit_idnt, nx_unit_typs -from yaml2nxdl_utils import nx_type_keys, nx_attr_idnt - -def xml_handle_docstring(obj, k, v): - """ - Xml attribute on existing object node in an xml tree - """ - obj.set('doc', str(v)) +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import xml.etree.ElementTree as ET +from nexusparser.tools.yaml2nxdl import yaml2nxdl_utils + + +def xml_handle_doc(obj, value: str): + """This function creates a 'doc' element instance, and appends it to an existing element -def xml_handle_units(obj, k, v): - """ - Xml attribute on existing object node in an xml tree """ - obj.set('units', v) + doctag = ET.SubElement(obj, 'doc') + doctag.text = value + + +def xml_handle_units(obj, value): + """This function creates a 'units' element instance, and appends it to an existing element -def xml_handle_exists(obj, k, v): """ - Xml attribute on existing object node in an xml tree + obj.set('units', value) + + +def xml_handle_exists(obj, value): + """This function creates an 'exists' element instance, and appends it to an existing element + """ - if v != None: - if isinstance(v,list): #handle [] - if len(v) == 2: - if v[0] == 'min': - obj.set('minOccurs', str(v[1])) - if v[0] == 'max': - obj.set('maxOccurs', str(v[1])) - elif len(v) == 4: - if v[0] == 'min' and v[2] == 'max': - obj.set('minOccurs', str(v[1])) - if str(v[3]) != 'infty': - obj.set('maxOccurs', str(v[3])) - else: - obj.set('maxOccurs', 'unbounded') - else: - raise ValueError('exists keyword needs to go either with optional, recommended, a list with two entries either [min, ] or [max, ], or a list of four entries [min, , max, ] !') + assert value is not None, 'xml_handle_exists, value must not be None!' + if isinstance(value, list): + if len(value) == 2 and value[0] == 'min': + obj.set('minOccurs', str(value[1])) + elif len(value) == 2 and value[0] == 'max': + obj.set('maxOccurs', str(value[1])) + elif len(value) == 4 and value[0] == 'min' and value[2] == 'max': + obj.set('minOccurs', str(value[1])) + if str(value[3]) != 'infty': + obj.set('maxOccurs', str(value[3])) else: - raise ValueError('exists keyword needs to go either with optional, recommended, a list with two entries either [min, ] or [max, ], or a list of four entries [min, , max, ] !') + obj.set('maxOccurs', 'unbounded') + elif len(value) == 4 and (value[0] != 'min' or value[2] != 'max'): + raise ValueError('exists keyword needs to go either with an optional \ +[recommended] list with two entries either [min, ] or \ +[max, ], or a list of four entries [min, , max, ] !') else: - if v == 'optional': - obj.set('optional', 'true') - elif v == 'recommended': - obj.set('recommended', 'true') - elif v == 'required': - obj.set('minOccurs', '1') - else: - obj.set('minOccurs', '0') + raise ValueError('exists keyword needs to go either with optional, \ +recommended, a list with two entries either [min, ] or \ +[max, ], or a list of four entries [min, , max, ] !') else: - raise ValueError('exists keyword found but value is None !') + if value == 'optional': + obj.set('optional', 'true') + elif value == 'recommended': + obj.set('recommended', 'true') + elif value == 'required': + obj.set('minOccurs', '1') + else: + obj.set('minOccurs', '0') + + +def xml_handle_group(verbose, obj, value, keyword_name, keyword_type): + """The function deals with group instances + +""" + grp = ET.SubElement(obj, 'group') + if keyword_name != '': # use the custom name for the group + grp.set('name', keyword_name) + grp.set('type', keyword_type) + if isinstance(value, dict) and value != {}: + recursive_build(grp, value, verbose) + + +def xml_handle_dimensions(obj, value: dict): + """This function creates a 'dimensions' element instance, and appends it to an existing element -def xml_handle_dimensions(obj, k, v): - """ - Xml attribute on existing object node in an xml tree """ - if v != None: - if isinstance(v,dict): - if 'rank' in v and 'dim' in v: - dims = etree.SubElement(obj, 'dimensions') - dims.set('rank', str(v['rank'])) - for m in v['dim']: - if isinstance(m, list): - if len(m) >= 2: - dim = etree.SubElement(dims, 'dim') - dim.set('index', str(m[0])) - dim.set('value', str(m[1])) - if len(m) == 3: - if m[2] == 'optional': - dim.set('required', 'false') - else: - print('WARNING: '+k+' dimensions with len(3) list with non-optional argument, unexpected case !') - else: - raise ValueError('WARNING: '+k+' dimensions list item needs to have at least two members !' ) - else: - raise ValueError('exists keyword found, value is dict but has no keys rank and dim !') - else: - raise ValueError('exists keyword found but value is not a dictionary !') - else: - raise ValueError('exists keyword found but value is None !') + assert 'rank' in value.keys() and 'dim' in value.keys(), 'xml_handle_dimensions \ +rank and/or dim not keys in value dict!' + dims = ET.SubElement(obj, 'dimensions') + dims.set('rank', str(value['rank'])) + for element in value['dim']: + assert isinstance(element, list), 'xml_handle_dimensions, element is not a list!' + assert len(element) >= 2, 'xml_handle_dimensions, list element has less than two entries!' + dim = ET.SubElement(dims, 'dim') + dim.set('index', str(element[0])) + dim.set('value', str(element[1])) + if len(element) == 3: + assert element[2] == 'optional', 'xml_handle_dimensions element is \ +a list with unexpected number of entries!' + dim.set('required', 'false') + + +def xml_handle_enumeration(obj, value: list): + """This function creates an 'enumeration' element instance, +and appends it to an existing element -def xml_handle_enumeration(obj, k, v): """ - Xml attribute on existing object node in an xml tree + enum = ET.SubElement(obj, 'enumeration') + assert len(value) >= 1, 'xml_handle_enumeration, value must not be an empty list!' + for element in value: + itm = ET.SubElement(enum, 'item') + itm.set('value', str(element)) + + +def xml_handle_link(obj, keyword, value): + """If we have an NXDL link we decode the name attribute from (link)[:-6] + """ - enum = etree.SubElement(obj, 'enumeration') - #assume we get a list as the value argument - if v != None: - if isinstance(v, list): - for m in v: - itm = etree.SubElement(enum, 'item') - itm.set('value', str(m)) + if len(keyword[:-6]) >= 1 and isinstance(value, dict) and 'target' in value.keys(): + if isinstance(value['target'], str) and len(value['target']) >= 1: + lnk = ET.SubElement(obj, 'link') + lnk.set('name', keyword[:-6]) + lnk.set('target', value['target']) else: - raise ValueError('ERROR: '+k+' we found an enumeration key-value pair but the value is not an ordinary Python list !') + raise ValueError(keyword + ' value for target member of a link is invalid !') else: - raise ValueError('ERROR: '+k+' we found an enumeration key-value pair but the value is None !') + raise ValueError(keyword + ' the formatting of what seems to be a link \ +is invalid in the yml file !') + + +def xml_handle_symbols(obj, value: dict): + """Handle a set of NXDL symbols as a child to obj -def xml_handle_links(obj, k, v): - """ - Xml attribute on existing object node in an xml tree """ - #if we have a link we decode the name attribute from (link)[:-6] - if len(k[:-6]) >= 1 and isinstance(v,dict) and 'target' in v.keys(): - if isinstance(v['target'],str) and len(v['target']) >= 1: - lnk = etree.SubElement(obj, 'link') - lnk.set('name', k[:-6]) - lnk.set('target', v['target']) - else: - raise ValueError(k+' value for target member of a link is invalid !') + assert len(list(value.keys())) >= 1, 'xml_handle_symbols, symbols tables must not be empty!' + syms = ET.SubElement(obj, 'symbols') + if 'doc' in value.keys(): + doctag = ET.SubElement(syms, 'doc') + doctag.text = value['doc'] + for kkeyword, vvalue in value.items(): + if kkeyword != 'doc': + assert vvalue is not None and isinstance(vvalue, str), 'Put a comment in doc string!' + sym = ET.SubElement(syms, 'symbol') + sym.set('name', kkeyword) + sym.set('doc', vvalue) + + +def check_keyword_variable(verbose, keyword_name, keyword_type, value): + """Check whether both keyword_name and keyword_type are empty, and complains if it is the case + +""" + if verbose: + print(keyword_name + '(' + keyword_type + ') value:', str(type(value))) + if keyword_name == '' and keyword_type == '': + raise ValueError('Found an improper YML key !') + + +def helper_keyword_type(kkeyword_type): + """This function is returning a value of keyword_type if it belong to NX_TYPE_KEYS + +""" + if kkeyword_type in yaml2nxdl_utils.NX_TYPE_KEYS: + return kkeyword_type + return None + + +def verbose_flag(verbose, keyword, value): + """Verbose stdout printing for nested levels of yaml file, if verbose flag is active + +""" + if verbose: + print(' key:', keyword, 'value:', str(type(value))) + + +def second_nested_level_handle(verbose, fld, value): + """When a second dictionary is found inside a value, a new cycle of handlings is run + +""" + if isinstance(value, dict): + for kkeyword, vvalue in iter(value.items()): + verbose_flag(verbose, kkeyword, vvalue) + if kkeyword[0:2] == yaml2nxdl_utils.NX_ATTR_IDNT: + attr = ET.SubElement(fld, 'attribute') + # attributes may also come with an nx_type specifier + # which we need to decipher first + kkeyword_name, kkeyword_type = \ + yaml2nxdl_utils.nx_name_type_resolving(kkeyword[2:]) + attr.set('name', kkeyword_name) + # typ = 'NX_CHAR' + typ = helper_keyword_type(kkeyword_type) or 'NX_CHAR' + attr.set('type', typ) + if isinstance(vvalue, dict): + for kkkeyword, vvvalue in iter(vvalue.items()): + third_nested_level_handle(verbose, attr, kkeyword, kkkeyword, vvvalue) + elif kkeyword == 'doc': + xml_handle_doc(fld, vvalue) + elif kkeyword == yaml2nxdl_utils.NX_UNIT_IDNT: + xml_handle_units(fld, vvalue) + elif kkeyword == 'exists': + xml_handle_exists(fld, vvalue) + elif kkeyword == 'dimensions': + xml_handle_dimensions(fld, vvalue) + elif kkeyword == 'enumeration': + xml_handle_enumeration(fld, vvalue) + elif kkeyword == 'link': + fld.set('link', '') + else: + raise ValueError(kkeyword, ' faced unknown situation !') + + +def third_nested_level_handle(verbose, attr, kkeyword, kkkeyword, vvvalue): + """When a third dictionary is found inside a value, a new cycle of handlings is run + +""" + verbose_flag(verbose, kkkeyword, vvvalue) + if kkkeyword == 'doc': + xml_handle_doc(attr, vvvalue) + elif kkkeyword == 'exists': + xml_handle_exists(attr, vvvalue) + elif kkkeyword == 'enumeration': + xml_handle_enumeration(attr, vvvalue) else: - raise ValueError(k+' the formatting of what seems to be a link is invalid in the yml file !') + raise ValueError( + kkeyword, kkkeyword, ' attribute handling !') -def recursive_build(obj, dct): - """ - obj is the current node where we want to append to, - dct is a dictionary object which represents the content of the child in the nested set of dictionaries - """ - for k, v in iter(dct.items()): - #print('Processing key '+k+' value v is a dictionary '+str(isinstance(v,dict))) - kName, kType = nx_name_type_resolving(k) - print('kName: '+kName+' kType: '+kType) - if kName == '' and kType == '': - raise ValueError('ERROR: Found an improper YML key !') - elif kType in nx_base_clss or kType in nx_cand_clss or kType not in nx_type_keys: - #we can be sure we need to instantiate a new group - grp = etree.SubElement(obj, 'group') - if kName != '': #use the custom name for the group - grp.set('name', kName) - else: - if kType != '': - grp.set('name', kType) - grp.set('type', kType) - if v != None: - if isinstance(v,dict): - if v != {}: - recursive_build(grp, v) - elif kName[0:2] == nx_attr_idnt: #check if obj qualifies as an attribute identifier - attr = etree.SubElement(obj, 'attribute') - attr.set('name', kName[2:]) - if v != None: - if isinstance(v,dict): - for kk, vv in iter(v.items()): - if kk == 'name': - attr.set('name', vv) - elif kk == 'doc': - attr.set('doc', vv) - elif kk == 'type': - attr.set('type', vv.upper()) - elif kk == 'enumeration': - xml_handle_enumeration(attr,kk, vv) - else: - raise ValueError(kk+' facing an unknown situation while processing attributes of an attribute !') - #handle special keywords (symbols), assumed that you do not encounter further symbols nested inside - elif k == 'doc': - xml_handle_docstring(obj, k, v) - elif k == 'enumeration': - xml_handle_enumeration(obj, k, v) - elif k == 'dimensions': - xml_handle_dimensions(obj, k, v) - elif k == 'exists': - xml_handle_exists(obj, k, v) - elif k[-6:] == '(link)': - xml_handle_links(obj, k, v) - #base/cand classes, attributes, and special keywords (symbols) handled, so only members of nexus classe remain to handle, which will populate xml fields - elif kName != '': - typ = 'NX_CHAR' - if kType in nx_type_keys: - typ = kType - #assume type is NX_CHAR, a NeXus default assumption if in doubt - fld = etree.SubElement(obj, 'field') - fld.set('name', kName) - fld.set('type', typ) - if v != None: #a field may have subordinated attributes - if isinstance(v,dict): - for kk, vv in iter(v.items()): - #print(kk+' field-attribute handling') - #if vv != None: - # print('field-attribute handling'+kk+' is taken!') - if kk[0:2] == nx_attr_idnt: - attr = etree.SubElement(fld, 'attribute') - #attributes may also come with an nx_type specifier which we need to decipher first - kkName, kkType = nx_name_type_resolving(kk[2:]) - attr.set('name', kkName) - typ = 'NX_CHAR' - if kkType in nx_type_keys: - typ = kkType - attr.set('type', typ) - if vv != None: - if isinstance(vv,dict): - for kkk, vvv in iter(vv.items()): - if kkk == 'doc': - attr.set('doc', vvv) - elif kkk == 'exists': - xml_handle_exists(attr, kkk, vvv) - elif kkk == 'enumeration': - xml_handle_enumeration(attr, kkk, vvv) - else: - raise ValueError(k+' '+kk+' '+kkk+' attribute handling !') - elif kk == 'doc': - fld.set('doc', str(vv)) - elif kk == nx_unit_idnt: - xml_handle_units(fld, kk, vv) - elif kk == 'exists': - xml_handle_exists(fld, kk, vv) - elif kk == 'dimensions': - xml_handle_dimensions(fld, kk, vv) - elif kk == 'enumeration': - xml_handle_enumeration(fld, kk, vv) - elif kk == 'link': - fld.set('link', '') - else: - raise ValueError(k+' '+kk+' faced unknown situation !') +def attribute_attributes_handle(verbose, obj, value, keyword_name): + """Handle the attributes found connected to attribute field""" + # as an attribute identifier + attr = ET.SubElement(obj, 'attribute') + attr.set('name', keyword_name[2:]) + if value is not None: + assert isinstance(value, dict), 'the keyword is an attribute, \ +its value must be a dict!' + for kkeyword, vvalue in iter(value.items()): + verbose_flag(verbose, kkeyword, vvalue) + if kkeyword == 'name': + attr.set('name', vvalue) + elif kkeyword == 'doc': + xml_handle_doc(attr, vvalue) + elif kkeyword == 'type': + attr.set('type', vvalue.upper()) + elif kkeyword == 'enumeration': + xml_handle_enumeration(attr, vvalue) + elif kkeyword == 'exists': + xml_handle_exists(attr, vvalue) else: - if k == 'type': - print(k+' facing a type where we would not expect it!') - elif k == 'doc': - xml_handle_docstring(fld, k, v) - elif k == nx_unit_idnt: - xml_handle_units(fld, k, v) - elif k[0:2] == nx_attr_idnt: #attribute of a field - raise ValueError(k+' unknown attribute of a field case coming from no dict !') - elif k == 'exists': - xml_handle_exists(fld, k, v) - elif k == 'dimensions': - raise ValueError(k+' unknown dimensions of a field case coming from no dict !') - #else: - # pass - else: - raise ValueError(k+' faces a completely unknown symbol!') + raise ValueError(kkeyword + ' facing an unknown situation \ +while processing attributes of an attribute ! Node tag:', obj.tag, 'Node content:', obj.attrib) +# handle special keywords (symbols), +# assumed that you do not encounter further symbols nested inside + + +def second_level_attributes_handle(fld, keyword, value): + """If value is not a dictionary, this function handles the attributes of a nested field + +""" + if not isinstance(value, dict): + if keyword == 'doc': + xml_handle_doc(fld, value) + elif keyword == yaml2nxdl_utils.NX_UNIT_IDNT: + xml_handle_units(fld, value) + elif keyword[0:2] == yaml2nxdl_utils.NX_ATTR_IDNT: # attribute of a field + raise ValueError(keyword, ' unknown attribute \ + of a field case coming from no dict !') + elif keyword == 'exists': + xml_handle_exists(fld, value) + elif keyword == 'dimensions': + raise ValueError(keyword, ' unknown dimensions \ + of a field case coming from no dict !') + else: + pass + + +def not_empty_keyword_name_handle(obj, keyword_type, keyword_name): + """Handle a field in yaml file. +When a keyword is NOT: +symbol, +NX baseclass member, +attribute (\\@), +doc, +enumerations, +dimension, +exists, +then the not empty keyword_name is a field! +This simple function will define a new node of xml tree + +""" + typ = 'NX_CHAR' + if keyword_type in yaml2nxdl_utils.NX_TYPE_KEYS + yaml2nxdl_utils.NX_NEW_DEFINED_CLASSES: + typ = keyword_type + # assume type is NX_CHAR, a NeXus default assumption if in doubt + fld = ET.SubElement(obj, 'field') + fld.set('name', keyword_name) + fld.set('type', typ) + return fld + + +def recursive_build(obj, dct, verbose): + """obj is the current node of the XML tree where we want to append to, + dct is a dictionary object which represents the content of a child to obj + dct may contain further dictionary nests, representing NXDL groups, + which trigger recursive processing + NXDL fields may contain attributes but trigger no recursion so attributes are leafs. + + """ + for keyword, value in iter(dct.items()): + keyword_name, keyword_type = yaml2nxdl_utils.nx_name_type_resolving(keyword) + + check_keyword_variable(verbose, keyword_name, keyword_type, value) + print('keyword_name:', keyword_name, 'keyword_type', keyword_type) + if keyword[-6:] == '(link)': + xml_handle_link(obj, keyword, value) + + elif keyword_type == '' and keyword_name == 'symbols': + # print(value.key(), type(value.key()), value.value(), type(value.value())) + xml_handle_symbols(obj, value) + + elif (keyword_type in yaml2nxdl_utils.NX_CLSS) or \ + (keyword_type not in yaml2nxdl_utils.NX_TYPE_KEYS + [''] + yaml2nxdl_utils. + NX_NEW_DEFINED_CLASSES): + # we can be sure we need to instantiate a new group + xml_handle_group(verbose, obj, value, keyword_name, keyword_type) + + elif keyword_name[0:2] == yaml2nxdl_utils.NX_ATTR_IDNT: # check if obj qualifies + attribute_attributes_handle(verbose, obj, value, keyword_name) + elif keyword == 'doc': + xml_handle_doc(obj, value) + + elif keyword == 'enumeration': + xml_handle_enumeration(obj, value) + + elif keyword == 'dimensions': + xml_handle_dimensions(obj, value) + + elif keyword == 'exists': + xml_handle_exists(obj, value) + + elif keyword_name != '': + fld = not_empty_keyword_name_handle(obj, keyword_type, keyword_name) + second_nested_level_handle(verbose, fld, value) + second_level_attributes_handle(fld, keyword, value) + else: + pass diff --git a/nexusparser/tools/yaml2nxdl/yaml2nxdl_utils.py b/nexusparser/tools/yaml2nxdl/yaml2nxdl_utils.py index 1d09d4eca..597811d3c 100644 --- a/nexusparser/tools/yaml2nxdl/yaml2nxdl_utils.py +++ b/nexusparser/tools/yaml2nxdl/yaml2nxdl_utils.py @@ -1,55 +1,52 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- """ -Created on Mon Nov 22 17:41:08 2021 -@author: kuehbach +Some utilities used in recursive_build function """ +# -*- coding: utf-8 -*- +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# - -import os, sys -import yaml -from lxml import etree +from nexusparser.tools import nexus def nx_name_type_resolving(tmp): """ - extracts the eventually custom name {optional_string} an type {nexus_type} from a YML section string. - YML section string syntax: optional_string(nexus_type) + extracts the eventually custom name {optional_string} + and type {nexus_type} from a YML section string. + YML section string syntax: optional_string(nexus_type) """ - if tmp.count('(') == 1 and tmp.count(')') == 1: - #we can safely assume that every valid YML key resolves - #either an nx_ (type, base, candidate) class contains only 1 '(' and ')' - idxStart = tmp.index('(') - idxEnd = tmp.index(')',idxStart+1) - typ = tmp[idxStart+1:idxEnd] - nam = tmp.replace('('+typ+')','') + if tmp.count('(') == 1 and tmp.count(')') == 1: + # we can safely assume that every valid YML key resolves + # either an nx_ (type, base, candidate) class contains only 1 '(' and ')' + index_start = tmp.index('(') + index_end = tmp.index(')', index_start + 1) + typ = tmp[index_start + 1:index_end] + nam = tmp.replace('(' + typ + ')', '') return nam, typ - #or a name for a member + # or a name for a member typ = '' nam = tmp return nam, typ -#https://manual.nexusformat.org/classes/base_classes/index.html#base-class-definitions -nx_base_clss = ['NXaperture', 'NXattenuator', 'NXbeam', 'NXbeam_stop', 'NXbending_magnet', 'NXcapillary', 'NXcite', - 'NXcollection', 'NXcollimator', 'NXcrystal', 'NXcylindrical_geometry', 'NXdata', 'NXdetector', - 'NXdetector_group', 'NXdetector_module', 'NXdisk_chopper', 'NXentry', 'NXenvironment', 'NXevent_data', - 'NXfermi_chopper', 'NXfilter', 'NXflipper', 'NXfresnel_zone_plate, ''NXgeometry', 'NXgrating', 'NXguide', - 'NXinsertion_device', 'NXinstrument', 'NXlog', 'NXmirror', 'NXmoderator', 'NXmonitor', 'NXmonochromator', - 'NXnote', 'NXobject', 'NXoff_geometry', 'NXorientation', 'NXparameters', 'NXpdb', 'NXpinhole', 'NXpolarizer', - 'NXpositioner', 'NXprocess', 'NXreflections', 'NXroot', 'NXsample', 'NXsample_component', 'NXsensor', 'NXshape', - 'NXslit', 'NXsource', 'NXsubentry', 'NXtransformations', 'NXtranslation', 'NXuser', 'NXvelocity_selector', - 'NXxraylens'] - -#https://manual.nexusformat.org/nxdl-types.html?highlight=nx_number -nx_type_keys = ['NX_BINARY', 'NX_BOOLEAN', 'NX_CHAR', 'NX_DATE_TIME', - 'NX_FLOAT', 'NX_INT', 'NX_NUMBER', 'NX_POSINT', 'NX_UINT', ''] -nx_attr_idnt = '\@' -nx_unit_idnt = 'unit' -nx_unit_typs = ['NX_ANGLE', 'NX_ANY', 'NX_AREA', 'NX_CHARGE', 'NX_CROSS_SECTION', 'NX_CURRENT', 'NX_DIMENSIONLESS', - 'NX_EMITTANCE', 'NX_ENERGY', 'NX_FLUX', 'NX_FREQUENCY', 'NX_LENGTH', 'NX_MASS', 'NX_MASS_DENSITY', - 'NX_MOLECULAR_WEIGHT', 'NX_PERIOD', 'NX_PER_AREA', 'NX_PER_LENGTH', 'NX_POWER', 'NX_PRESSURE', - 'NX_PULSES', 'NX_SCATTERING_LENGTH_DENSITY', 'NX_SOLID_ANGLE', 'NX_TEMPERATURE', 'NX_TIME', - 'NX_TIME_OF_FLIGHT', 'NX_TRANSFORMATION', 'NX_UNITLESS', 'NX_VOLTAGE', 'NX_VOLUME', 'NX_WAVELENGTH', - 'NX_WAVENUMBER'] -nx_cand_clss = ['NXem_lens', 'NXem_c3c5corr','NXem_deflector','NXem_stage'] +NX_CLSS = nexus.get_nx_classes() +NX_NEW_DEFINED_CLASSES = ['NX_COMPLEX'] +NX_TYPE_KEYS = nexus.get_nx_attribute_type() +NX_ATTR_IDNT = '\\@' +NX_UNIT_IDNT = 'unit' +NX_UNIT_TYPS = nexus.get_nx_units() diff --git a/requirements.txt b/requirements.txt index 51256ef14..d3214e3ae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,17 @@ -lxml +click==7.1.2 +lxml==4.7.1 mypy==0.730 pylint==2.3.1 pylint_plugin_utils==0.5 -pycodestyle +pycodestyle==2.8.0 pytest==3.10.0 -pytest-timeout +pytest-timeout==1.4.2 pytest-cov==2.7.1 h5py==3.6.0 -python-json-logger +python-json-logger==2.0.2 +xarray==0.20.2 +pyaml==21.10.1 +numpy==1.21.2 +pandas==1.3.5 +odfpy==1.4.1 +ase==3.19.0 \ No newline at end of file diff --git a/setup.py b/setup.py index a80670971..50047db45 100644 --- a/setup.py +++ b/setup.py @@ -42,7 +42,7 @@ def main(): 'nexusparser.definitions': ['*.xsd'] }, include_package_data=True, - install_requires=['nomad-lab']) + install_requires=['nomad-lab', 'h5py', 'lxml', 'click']) if __name__ == '__main__': diff --git a/tests/data/nexus_test_data/Ref_nexus_test.log b/tests/data/nexus_test_data/Ref_nexus_test.log new file mode 100644 index 000000000..c912e5b5d --- /dev/null +++ b/tests/data/nexus_test_data/Ref_nexus_test.log @@ -0,0 +1,1385 @@ +DEBUG - Creating converter from 3 to 5 +INFO - ===== GROUP (//entry [NXarpes::/NXentry]): +INFO - /NXentry +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry@NX_class) +INFO - value: NXentry +INFO - /NXentry +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/collection_time): +INFO - value: 7200 +INFO - /NXentry +INFO - /collection_time [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/collection_time@units) +INFO - value: s +INFO - /NXentry +INFO - /collection_time +INFO - @units [NX_TIME] +INFO - ===== GROUP (//entry/data [NXarpes::/NXentry/NXdata]): +INFO - /NXentry +INFO - /NXdata +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/data@NX_class) +INFO - value: NXdata +INFO - /NXentry +INFO - /NXdata +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== ATTRS (//entry/data@axes) +INFO - value: ['angles' 'energies' 'delays'] +INFO - /NXentry +INFO - /NXdata +INFO - @axes - [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/data@signal) +INFO - value: data +INFO - /NXentry +INFO - /NXdata +INFO - @signal - [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/data/angles): +INFO - value: [-1.96735314 -1.91500657 -1.86266001 -1.81031344 -1.75796688 -1.70562031 ... +INFO - /NXentry +INFO - /NXdata +INFO - /angles [NX_NUMBER] +INFO - <> +INFO - Dataset referenced as NXdata AXIS #0 +INFO - doc +INFO - ===== ATTRS (//entry/data/angles@target) +INFO - value: /entry/instrument/analyser/angles +INFO - /NXentry +INFO - /NXdata +INFO - /angles +INFO - @target - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/data/angles@units) +INFO - value: 1/Å +INFO - /NXentry +INFO - /NXdata +INFO - /angles +INFO - @units - REQUIRED, but undefined unit category +INFO - ===== FIELD (//entry/data/data): +INFO - value: [[0. 0. 0. ... 0. 0. 0.] ... +INFO - /NXentry +INFO - /NXdata +INFO - /data [NX_NUMBER] +INFO - <> +INFO - Dataset referenced as NXdata SIGNAL +INFO - doc +INFO - ===== ATTRS (//entry/data/data@target) +INFO - value: /entry/instrument/analyser/data +INFO - /NXentry +INFO - /NXdata +INFO - /data +INFO - @target - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/data/data@units) +INFO - value: counts +INFO - /NXentry +INFO - /NXdata +INFO - /data +INFO - @units - REQUIRED, but undefined unit category +INFO - ===== FIELD (//entry/data/delays): +INFO - value: [-1.1 -1.08041237 -1.06082474 -1.04123711 -1.02164948 -1.00206186 ... +INFO - /NXentry +INFO - /NXdata +INFO - /delays [NX_NUMBER] +INFO - <> +INFO - Dataset referenced as NXdata AXIS #2 +INFO - doc +INFO - ===== ATTRS (//entry/data/delays@target) +INFO - value: /entry/instrument/analyser/delays +INFO - /NXentry +INFO - /NXdata +INFO - /delays +INFO - @target - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/data/delays@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXdata +INFO - /delays +INFO - @units - REQUIRED, but undefined unit category +INFO - ===== FIELD (//entry/data/energies): +INFO - value: [ 2.5 2.46917808 2.43835616 2.40753425 2.37671233 2.34589041 ... +INFO - /NXentry +INFO - /NXdata +INFO - /energies [NX_NUMBER] +INFO - <> +INFO - Dataset referenced as NXdata AXIS #1 +INFO - doc +INFO - ===== ATTRS (//entry/data/energies@target) +INFO - value: /entry/instrument/analyser/energies +INFO - /NXentry +INFO - /NXdata +INFO - /energies +INFO - @target - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/data/energies@units) +INFO - value: eV +INFO - /NXentry +INFO - /NXdata +INFO - /energies +INFO - @units - REQUIRED, but undefined unit category +INFO - ===== FIELD (//entry/definition): +INFO - value: b'NXarpes' +INFO - /NXentry +INFO - /definition [NX_CHAR] +INFO - <> +INFO - enumeration: +INFO - -> NXarpes +INFO - doc +INFO - ===== FIELD (//entry/duration): +INFO - value: 7200 +INFO - /NXentry +INFO - /duration [NX_INT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/duration@units) +INFO - value: s +INFO - /NXentry +INFO - /duration +INFO - @units [NX_TIME] +INFO - ===== FIELD (//entry/end_time): +INFO - value: b'2018-05-01T09:22:00+02:00' +INFO - /NXentry +INFO - /end_time [NX_DATE_TIME] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/entry_identifier): +INFO - value: b'Run 22118' +INFO - /NXentry +INFO - /entry_identifier [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/experiment_identifier): +INFO - value: b'F-20170538' +INFO - /NXentry +INFO - /experiment_identifier [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== GROUP (//entry/instrument [NXarpes::/NXentry/NXinstrument]): +INFO - /NXentry +INFO - /NXinstrument +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument@NX_class) +INFO - value: NXinstrument +INFO - /NXentry +INFO - /NXinstrument +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== GROUP (//entry/instrument/analyser [NXarpes::/NXentry/NXinstrument/NXdetector]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/analyser@NX_class) +INFO - value: NXdetector +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/acquisition_mode): +INFO - value: b'fixed' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /acquisition_mode [NX_CHAR] +INFO - <> +INFO - enumeration: +INFO - -> gated +INFO - -> triggered +INFO - -> summed +INFO - -> event +INFO - -> histogrammed +INFO - -> decimated +INFO - doc +INFO - ===== FIELD (//entry/instrument/analyser/amplifier_type): +INFO - value: b'MCP' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /amplifier_type - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/contrast_aperture): +INFO - value: b'Out' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /contrast_aperture - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/detector_type): +INFO - value: b'DLD' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /detector_type - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/dispersion_scheme): +INFO - value: b'Time of flight' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /dispersion_scheme - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/entrance_slit_setting): +INFO - value: 0 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /entrance_slit_setting - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/entrance_slit_shape): +INFO - value: b'straight' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /entrance_slit_shape - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/entrance_slit_size): +INFO - value: 750 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /entrance_slit_size - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/entrance_slit_size@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /entrance_slit_size - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/extractor_voltage): +INFO - value: 6030 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /extractor_voltage - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/extractor_voltage@units) +INFO - value: V +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /extractor_voltage - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/field_aperture_x): +INFO - value: -0.2 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /field_aperture_x - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/field_aperture_x@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /field_aperture_x - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/field_aperture_y): +INFO - value: 5.35 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /field_aperture_y - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/field_aperture_y@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /field_aperture_y - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/lens_mode): +INFO - value: b'20180430_KPEEM_M_-2.5_FoV6.2_rezAA_20ToF_focused.sav' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /lens_mode - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/magnification): +INFO - value: -1.5 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /magnification - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/pass_energy): +INFO - value: 20 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /pass_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/pass_energy@units) +INFO - value: eV +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /pass_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/projection): +INFO - value: b'reciprocal' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /projection - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/region_origin): +INFO - value: [0 0] +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /region_origin - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/region_size): +INFO - value: [ 80 146] +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /region_size - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/sensor_count): +INFO - value: 4 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /sensor_count - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/sensor_size): +INFO - value: [ 80 146] +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /sensor_size - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/time_per_channel): +INFO - value: 7200 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /time_per_channel - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/time_per_channel@units) +INFO - value: s +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /time_per_channel - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/analyser/working_distance): +INFO - value: 4 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /working_distance - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/analyser/working_distance@units) +INFO - value: mm +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXdetector +INFO - /working_distance - IS NOT IN SCHEMA +INFO - +INFO - ===== GROUP (//entry/instrument/beam_probe_0 [NXarpes::/NXentry/NXinstrument/NXbeam]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/beam_probe_0@NX_class) +INFO - value: NXbeam +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/beam_probe_0/distance): +INFO - value: 0 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /distance [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/beam_probe_0/distance@units) +INFO - value: cm +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /distance +INFO - @units [NX_LENGTH] +INFO - ===== FIELD (//entry/instrument/beam_probe_0/photon_energy): +INFO - value: 36.49699020385742 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /photon_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_probe_0/photon_energy@units) +INFO - value: eV +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /photon_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_probe_0/polarization_angle): +INFO - value: 0.0 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /polarization_angle - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_probe_0/polarization_angle@units) +INFO - value: deg +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /polarization_angle - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_probe_0/polarization_ellipticity): +INFO - value: 0.0 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /polarization_ellipticity - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_probe_0/pulse_duration): +INFO - value: 70 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /pulse_duration - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_probe_0/pulse_duration@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /pulse_duration - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_probe_0/size_x): +INFO - value: 500 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_x - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_probe_0/size_x@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_x - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_probe_0/size_y): +INFO - value: 200 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_y - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_probe_0/size_y@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_y - IS NOT IN SCHEMA +INFO - +INFO - ===== GROUP (//entry/instrument/beam_pump_0 [NXarpes::/NXentry/NXinstrument/NXbeam]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/beam_pump_0@NX_class) +INFO - value: NXbeam +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/average_power): +INFO - value: 6.21289 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /average_power - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/average_power@units) +INFO - value: uW +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /average_power - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/center_wavelength): +INFO - value: 800 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /center_wavelength - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/center_wavelength@units) +INFO - value: nm +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /center_wavelength - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/distance): +INFO - value: 0 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /distance [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/distance@units) +INFO - value: cm +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /distance +INFO - @units [NX_LENGTH] +INFO - ===== FIELD (//entry/instrument/beam_pump_0/fluence): +INFO - value: 5 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /fluence - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/fluence@units) +INFO - value: mJ/cm^2 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /fluence - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/photon_energy): +INFO - value: 1.55 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /photon_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/photon_energy@units) +INFO - value: eV +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /photon_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/polarization_angle): +INFO - value: nan +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /polarization_angle - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/polarization_angle@units) +INFO - value: deg +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /polarization_angle - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/polarization_ellipticity): +INFO - value: -1.0 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /polarization_ellipticity - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/pulse_duration): +INFO - value: 50 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /pulse_duration - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/pulse_duration@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /pulse_duration - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/pulse_energy): +INFO - value: 1.24258 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /pulse_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/pulse_energy@units) +INFO - value: nJ +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /pulse_energy - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/size_x): +INFO - value: 500 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_x - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/size_x@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_x - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/beam_pump_0/size_y): +INFO - value: 200 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_y - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/beam_pump_0/size_y@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXbeam +INFO - /size_y - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/energy_resolution): +INFO - value: 100 +INFO - /NXentry +INFO - /NXinstrument +INFO - /energy_resolution - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/energy_resolution@units) +INFO - value: meV +INFO - /NXentry +INFO - /NXinstrument +INFO - /energy_resolution - IS NOT IN SCHEMA +INFO - +INFO - ===== GROUP (//entry/instrument/manipulator [NXarpes::/NXentry/NXinstrument/NXpositioner]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/manipulator@NX_class) +INFO - value: NXpositioner +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/pos_x1): +INFO - value: 11.3 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_x1 - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/pos_x1@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_x1 - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/pos_x2): +INFO - value: 11.3 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_x2 - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/pos_x2@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_x2 - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/pos_y): +INFO - value: 7.2 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_y - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/pos_y@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_y - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/pos_z1): +INFO - value: 20.77 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_z1 - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/pos_z1@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_z1 - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/pos_z2): +INFO - value: 21.2 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_z2 - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/pos_z2@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_z2 - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/pos_z3): +INFO - value: 20.22 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_z3 - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/pos_z3@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /pos_z3 - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/sample_bias): +INFO - value: 29 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /sample_bias - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/sample_bias@target) +INFO - value: /entry/instrument/manipulator/sample_bias +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /sample_bias - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/sample_bias@units) +INFO - value: V +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /sample_bias - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/sample_temperature): +INFO - value: 300 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /sample_temperature - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/sample_temperature@target) +INFO - value: /entry/instrument/manipulator/sample_temperature +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /sample_temperature - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/manipulator/sample_temperature@units) +INFO - value: K +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /sample_temperature - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/manipulator/type): +INFO - value: b'Hexapod' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXpositioner +INFO - /type - IS NOT IN SCHEMA +INFO - +INFO - ===== GROUP (//entry/instrument/monochromator [NXarpes::/NXentry/NXinstrument/NXmonochromator]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/monochromator@NX_class) +INFO - value: NXmonochromator +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/monochromator/energy): +INFO - value: 36.49699020385742 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /energy [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/monochromator/energy@units) +INFO - value: eV +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /energy +INFO - @units [NX_ENERGY] +INFO - ===== FIELD (//entry/instrument/monochromator/energy_error): +INFO - value: 0.21867309510707855 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /energy_error [NX_FLOAT] +INFO - <> +INFO - DEPRECATED - see https://github.com/nexusformat/definitions/issues/820 +INFO - doc +INFO - ===== ATTRS (//entry/instrument/monochromator/energy_error@units) +INFO - value: eV +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /energy_error +INFO - @units [NX_ENERGY] +INFO - ===== GROUP (//entry/instrument/monochromator/slit [NXarpes::/NXentry/NXinstrument/NXmonochromator/NXslit]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /NXslit - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/monochromator/slit@NX_class) +INFO - value: NXslit +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /NXslit - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/monochromator/slit/y_gap): +INFO - value: 2000.04833984375 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /NXslit - IS NOT IN SCHEMA +INFO - /y_gap - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/monochromator/slit/y_gap@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXmonochromator +INFO - /NXslit - IS NOT IN SCHEMA +INFO - /y_gap - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/name): +INFO - value: b'HEXTOF @ PG-2, Flash' +INFO - /NXentry +INFO - /NXinstrument +INFO - /name [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== GROUP (//entry/instrument/source [NXarpes::/NXentry/NXinstrument/NXsource]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source@NX_class) +INFO - value: NXsource +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/source/bunch_distance): +INFO - value: 1 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_distance [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source/bunch_distance@units) +INFO - value: us +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_distance +INFO - @units [NX_TIME] +INFO - ===== FIELD (//entry/instrument/source/bunch_length): +INFO - value: 100 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_length [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source/bunch_length@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_length +INFO - @units [NX_TIME] +INFO - ===== FIELD (//entry/instrument/source/burst_distance): +INFO - value: 199.5 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_distance - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/source/burst_distance@units) +INFO - value: ms +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_distance - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source/burst_length): +INFO - value: 500 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_length - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/source/burst_length@units) +INFO - value: us +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_length - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source/burst_number_end): +INFO - value: 102680129 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_number_end - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source/burst_number_start): +INFO - value: 102644001 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_number_start - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source/current): +INFO - value: 1 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /current [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source/current@units) +INFO - value: uA +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /current +INFO - @units [NX_CURRENT] +INFO - ===== FIELD (//entry/instrument/source/energy): +INFO - value: 427 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /energy [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source/energy@units) +INFO - value: MeV +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /energy +INFO - @units [NX_ENERGY] +INFO - ===== FIELD (//entry/instrument/source/frequency): +INFO - value: 10 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /frequency [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source/frequency@units) +INFO - value: Hz +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /frequency +INFO - @units [NX_FREQUENCY] +INFO - ===== FIELD (//entry/instrument/source/mode): +INFO - value: b'Burst' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /mode [NX_CHAR] +INFO - <> +INFO - enumeration: +INFO - -> Single Bunch +INFO - -> Multi Bunch +INFO - doc +INFO - ===== FIELD (//entry/instrument/source/name): +INFO - value: b'FLASH' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /name [NX_CHAR] +INFO - <> +INFO - +INFO - ===== FIELD (//entry/instrument/source/number_of_bunches): +INFO - value: 500 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /number_of_bunches [NX_INT] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/instrument/source/number_of_bursts): +INFO - value: 1 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /number_of_bursts - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source/probe): +INFO - value: b'x-ray' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /probe [NX_CHAR] +INFO - <> +INFO - enumeration: +INFO - -> x-ray +INFO - +INFO - ===== FIELD (//entry/instrument/source/top_up): +INFO - value: True +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /top_up [NX_BOOLEAN] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/instrument/source/type): +INFO - value: b'Free Electron Laser' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /type [NX_CHAR] +INFO - <> +INFO - +INFO - ===== GROUP (//entry/instrument/source_pump [NXarpes::/NXentry/NXinstrument/NXsource]): +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source_pump@NX_class) +INFO - value: NXsource +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/bunch_distance): +INFO - value: 1 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_distance [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source_pump/bunch_distance@units) +INFO - value: us +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_distance +INFO - @units [NX_TIME] +INFO - ===== FIELD (//entry/instrument/source_pump/bunch_length): +INFO - value: 50 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_length [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source_pump/bunch_length@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /bunch_length +INFO - @units [NX_TIME] +INFO - ===== FIELD (//entry/instrument/source_pump/burst_distance): +INFO - value: 199.6 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_distance - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/source_pump/burst_distance@units) +INFO - value: ms +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_distance - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/burst_length): +INFO - value: 400 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_length - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/source_pump/burst_length@units) +INFO - value: us +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /burst_length - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/frequency): +INFO - value: 10 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /frequency [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/instrument/source_pump/frequency@units) +INFO - value: Hz +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /frequency +INFO - @units [NX_FREQUENCY] +INFO - ===== FIELD (//entry/instrument/source_pump/mode): +INFO - value: b'Burst' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /mode [NX_CHAR] +INFO - <> +INFO - enumeration: +INFO - -> Single Bunch +INFO - -> Multi Bunch +INFO - doc +INFO - ===== FIELD (//entry/instrument/source_pump/name): +INFO - value: b'User Laser @ FLASH' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /name [NX_CHAR] +INFO - <> +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/number_of_bunches): +INFO - value: 400 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /number_of_bunches [NX_INT] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/instrument/source_pump/number_of_bursts): +INFO - value: 1 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /number_of_bursts - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/probe): +INFO - value: b'NIR' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /probe [NX_CHAR] +INFO - <> +INFO - enumeration: +INFO - -> x-ray +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/rms_jitter): +INFO - value: 204.68816194453154 +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /rms_jitter - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/source_pump/rms_jitter@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /rms_jitter - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/source_pump/type): +INFO - value: b'OPCPA' +INFO - /NXentry +INFO - /NXinstrument +INFO - /NXsource +INFO - /type [NX_CHAR] +INFO - <> +INFO - +INFO - ===== FIELD (//entry/instrument/spatial_resolution): +INFO - value: 500 +INFO - /NXentry +INFO - /NXinstrument +INFO - /spatial_resolution - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/spatial_resolution@units) +INFO - value: um +INFO - /NXentry +INFO - /NXinstrument +INFO - /spatial_resolution - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/instrument/temporal_resolution): +INFO - value: 100 +INFO - /NXentry +INFO - /NXinstrument +INFO - /temporal_resolution - IS NOT IN SCHEMA +INFO - +INFO - ===== ATTRS (//entry/instrument/temporal_resolution@units) +INFO - value: fs +INFO - /NXentry +INFO - /NXinstrument +INFO - /temporal_resolution - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/run_cycle): +INFO - value: b'2018 User Run Block 2' +INFO - /NXentry +INFO - /run_cycle [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== GROUP (//entry/sample [NXarpes::/NXentry/NXsample]): +INFO - /NXentry +INFO - /NXsample +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/sample@NX_class) +INFO - value: NXsample +INFO - /NXentry +INFO - /NXsample +INFO - @NX_class [NX_CHAR] +INFO - +INFO - ===== FIELD (//entry/sample/chem_id_cas): +INFO - value: b'12067-46-8' +INFO - /NXentry +INFO - /NXsample +INFO - /chem_id_cas - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/chemical_name): +INFO - value: b'Tungsten diselenide' +INFO - /NXentry +INFO - /NXsample +INFO - /chemical_name - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/growth_method): +INFO - value: b'Chemical Vapor Deposition' +INFO - /NXentry +INFO - /NXsample +INFO - /growth_method - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/layer): +INFO - value: b'bulk' +INFO - /NXentry +INFO - /NXsample +INFO - /layer - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/name): +INFO - value: b'WSe2' +INFO - /NXentry +INFO - /NXsample +INFO - /name [NX_CHAR] +INFO - <> +INFO - doc +INFO - ===== FIELD (//entry/sample/preparation_method): +INFO - value: b'in-vacuum cleave' +INFO - /NXentry +INFO - /NXsample +INFO - /preparation_method - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/pressure): +INFO - value: 3.27e-10 +INFO - /NXentry +INFO - /NXsample +INFO - /pressure [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/sample/pressure@units) +INFO - value: mbar +INFO - /NXentry +INFO - /NXsample +INFO - /pressure +INFO - @units [NX_PRESSURE] +INFO - ===== FIELD (//entry/sample/purity): +INFO - value: 0.999 +INFO - /NXentry +INFO - /NXsample +INFO - /purity - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/state): +INFO - value: b'monocrystalline solid' +INFO - /NXentry +INFO - /NXsample +INFO - /state - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/surface_orientation): +INFO - value: b'0001' +INFO - /NXentry +INFO - /NXsample +INFO - /surface_orientation - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/sample/thickness): +INFO - value: 0.5 +INFO - /NXentry +INFO - /NXsample +INFO - /thickness [NX_FLOAT] +INFO - <> +INFO - doc +INFO - ===== ATTRS (//entry/sample/thickness@units) +INFO - value: mm +INFO - /NXentry +INFO - /NXsample +INFO - /thickness +INFO - @units [NX_LENGTH] +INFO - ===== FIELD (//entry/sample/vendor): +INFO - value: b'HQ Graphene' +INFO - /NXentry +INFO - /NXsample +INFO - /vendor - IS NOT IN SCHEMA +INFO - +INFO - ===== FIELD (//entry/start_time): +INFO - value: b'2018-05-01T07:22:00+02:00' +INFO - /NXentry +INFO - /start_time [NX_DATE_TIME] +INFO - <> +INFO - +INFO - ===== FIELD (//entry/title): +INFO - value: b'Excited-state dynamics of WSe2 in the Valence Band and Core-Levels' +INFO - /NXentry +INFO - /title [NX_CHAR] +INFO - <> +INFO - +INFO - ======================== +INFO - === Default Plotable === +INFO - ======================== +INFO - No NXentry has been found diff --git a/tests/data/tools/dataconverter/NXtest.nxdl.xml b/tests/data/tools/dataconverter/NXtest.nxdl.xml new file mode 100644 index 000000000..4c79370f5 --- /dev/null +++ b/tests/data/tools/dataconverter/NXtest.nxdl.xml @@ -0,0 +1,59 @@ + + + + This is a dummy NXDL to test out the dataconverter. + + + + This is a dummy NXDL to test out the dataconverter. + + + + + + + + + A dummy entry for a float value. + + + A dummy entry for a bool value. + + + A dummy entry for an int value. + + + A dummy entry for a positive int value. + + + A dummy entry for a char value. + + + A dummy entry for a date value. + + + + + + + + + + + + + A dummy entry to test optional parent check for required child. + + + A dummy entry to test optional parent check for required child. + + + + diff --git a/tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb b/tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb new file mode 100644 index 000000000..e3852ebae --- /dev/null +++ b/tests/data/tools/dataconverter/readers/apm/Apm.NeXus.Apm.Example.1.ipynb @@ -0,0 +1,606 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## nomad-parser-nexus demo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sprint5, APM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step -1: Set up dependencies for jupyterlab_h5web" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Instructions how to set up all dependencies to start a new virtualenv with a jupyterlab installation.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# instructions how to set up all dependencies to start a new virtualenv with a jupyterlab installation\n", + "# ! pip install virtualenv\n", + "# ! virtualenv --python=python3.7 .py37env\n", + "# ! source .py37env/bin/activate\n", + "\n", + "# install jupyter, jupyter-lab and web extensions\n", + "\n", + "#inside SPRINT5-JUPYTER-TEST-02, conda, python 3.7, jupyter, jupyterlab" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! pip install --upgrade nodejs && pip install ipywidgets h5py==3.5.0 h5glance==0.7 h5grove==0.0.8 jupyterlab[full]==2.3.0 jupyterlab_h5web[full]==0.0.11 punx==0.2.5 nexpy==0.14.1 silx[full] && jupyter lab build" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! jupyter nbextension enable --py widgetsnbextension" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! jupyter serverextension enable jupyterlab_h5web" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Restart the Jupyter kernel, or easier start the following code after you have setup these environment steps.

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 0: Installating and testing nomad-parser-nexus module" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! pip list && pip install --upgrade pip && pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --branch yaml2nxdl --recursive parser-nexus && cd parser-nexus && git status && pip install -r requirements.txt\n", + "# once yaml2nxdl was merged with master\n", + "# ! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive parser-nexus && cd parser-nexus && git status && pip install -r requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! cd parser-nexus && git status && git pull && pip install -r requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! cd parser-nexus && pip install -e .[all]\n", + "! pip list | grep nomad*\n", + "! pip list | grep nexus*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# in the above cells clear redundant commands based on todays history\n", + "! cd parser-nexus && pytest -sv tests" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### Step 1: Download atom probe example data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import shutil # unpacks in current path unless an additional path argument is provided\n", + "# http://dx.doi.org/10.5281/zenodo.5911240\n", + "# ! curl --output APM.LEAP.Datasets.1.zip https://zenodo.org/record/5911240/files/APM.LEAP.Datasets.1.zip\n", + "# shutil.unpack_archive('APM.LEAP.Datasets.1.zip')\n", + "# ! curl --output APM.LEAP.Datasets.2.zip https://zenodo.org/record/5911240/files/APM.LEAP.Datasets.2.zip\n", + "# shutil.unpack_archive('APM.LEAP.Datasets.2.zip')\n", + "! curl --output APM.LEAP.Datasets.3.zip https://zenodo.org/record/5911240/files/APM.LEAP.Datasets.3.zip\n", + "shutil.unpack_archive('APM.LEAP.Datasets.3.zip')\n", + "# remove obsolete example files\n", + "! rm -f R31_06365-v02.ELabFTW.12.json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

These files should serve exclusively as examples. Use always a triplett of files (for now), i.e. an (apt or pos or epos) plus an (rng or rrng), and the json file respectively.

" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### Step 2: Run atom-probe-microscopy-specific dataconverter/readers/apm on your atom probe example data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "PREFIX = \"parser-nexus/tests/data/tools/dataconverter/readers/apm/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using apm reader to convert the given files: \n", + "• parser-nexus/tests/data/tools/dataconverter/readers/apm/R31_06365-v02.pos\n", + "• parser-nexus/tests/data/tools/dataconverter/readers/apm/R31_06365-v02.rrng\n", + "• parser-nexus/tests/data/tools/dataconverter/readers/apm/ManuallyCollectedMetadata.json \n", + "Add metadata which come from other sources...\n", + "Add (optional) vendor file data...\n", + "Extracting data from POS file: parser-nexus/tests/data/tools/dataconverter/readers/apm/R31_06365-v02.pos\n", + "Add (optional) ranging data...\n", + "Extracting data from RRNG file: parser-nexus/tests/data/tools/dataconverter/readers/apm/R31_06365-v02.rrng\n", + "The output file generated: apm3.test.nxs\n" + ] + } + ], + "source": [ + "# ! python parser-nexus/nexusparser/tools/dataconverter/convert.py --reader apm --nxdl parser-nexus/nexusparser/definitions/applications/NXapm.nxdl.xml \\\n", + "# --input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/70_50_50.apt \\\n", + "# --input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/SeHoKim_R5076_44076_v02.rng \\\n", + "# --input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/ManuallyCollectedMetadata.json --output apm1.test.nxs\n", + "# ! python parser-nexus/nexusparser/tools/dataconverter/convert.py --reader apm --nxdl parser-nexus/nexusparser/definitions/applications/NXapm.nxdl.xml \\\n", + "# --input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/R18_53222_W_18K-v01.epos \\\n", + "# --input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/SeHoKim_R5076_44076_v02.rrng \\\n", + "# --input-file ManuallyCollectedMetadata.json --output apm2.test.nxs\n", + "! python parser-nexus/nexusparser/tools/dataconverter/convert.py --reader apm --nxdl parser-nexus/nexusparser/definitions/applications/NXapm.nxdl.xml \\\n", + "--input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/R31_06365-v02.pos \\\n", + "--input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/R31_06365-v02.rrng \\\n", + "--input-file parser-nexus/tests/data/tools/dataconverter/readers/apm/ManuallyCollectedMetadata.json --output apm3.test.nxs" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# ! python parser-nexus/nexusparser/tools/dataconverter/convert.py --reader em_nion --nxdl parser-nexus/nexusparser/definitions/applications/NXem_nion.nxdl.xml --input-file HAADF_01.npy --input-file HAADF_01.ELabFTW.dat --input-file HAADF_01.json --output nion.test.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The key take home message is that the above-specified command triggers the automatic creation of the HDF5 file**. This *.nxs file, is an HDF5 file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Inspect the HDF5/NeXus file apm.test.nxs using H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "config dir: /home/mkuehbach/.jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web \u001b[32mOK\u001b[0m\n", + "config dir: /home/mkuehbach/SPRINT5-JUPYTER-TEST-03/.pyenv/etc/jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web \u001b[32mOK\u001b[0m\n", + " jupyterlab \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab 2.3.0 \u001b[32mOK\u001b[0m\n", + "JupyterLab v2.3.0\n", + "Known labextensions:\n", + " app dir: /home/mkuehbach/SPRINT5-JUPYTER-TEST-03/.pyenv/share/jupyter/lab\n", + " jupyterlab-h5web v0.0.11 \u001b[32m enabled \u001b[0m \u001b[32mOK\u001b[0m\n" + ] + } + ], + "source": [ + "! jupyter serverextension list\n", + "! jupyter labextension list" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "from jupyterlab_h5web import H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# h5_file_name = 'PARAPROBE.Nanochem.Config.SimID.1.h5'\n", + "# h5_file_name = 'parser-nexus/tests/data/nexus_test_data/201805_WSe2_arpes.nxs'\n", + "h5_file_name = 'apm1.test.nxs'\n", + "h5_file_name = 'apm2.test.nxs'\n", + "h5_file_name = 'apm3.test.nxs'\n", + "# h5_file_name = 'nion.test.nxs'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is where the general template ends. Continue to fill the notebook based on
\n", + "**your own** post-processing of the *.nxs file, taking e.g. inspiration from
\n", + "sprints 2 and 3 in the nomad-remote-tools-hub mpcdf git repo." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "application/x-hdf5": "/home/mkuehbach/SPRINT5-JUPYTER-TEST-03/apm3.test.nxs", + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H5Web(h5_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Congratulations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4: Do e.g. some post-processing with apm1.test.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compute a mass-to-charge histogram and explore eventual ranging definitions that have also been carried over in the conversion step (step 6)." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.collections import PatchCollection\n", + "from matplotlib.patches import Rectangle\n", + "plt.rcParams['figure.figsize'] = [20, 10]\n", + "plt.rcParams['figure.dpi'] = 300\n", + "import h5py as h5\n", + "#needs shutils for decompressing zip archives, which is a default module/package in Python since >=v3.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Read mass-to-charge-state ratio values, create a histogram (\"mass spectrum\"), and mark ranges." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Array with mass-to-charge-state ratios loaded\n", + "27 iontypes were distinguished\n" + ] + } + ], + "source": [ + "# load data and ranges\n", + "hf = h5.File(h5_file_name, 'r')\n", + "mq = hf['entry/atom_probe/mass_to_charge_conversion/mass_to_charge'][:]\n", + "nions = np.uint32(hf['entry/atom_probe/ranging/number_of_iontypes'])\n", + "print('Array with mass-to-charge-state ratios loaded')\n", + "print(str(nions) + ' iontypes were distinguished')" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset ranging from [0.0, 100.0] Da.\n", + "Using a mass-to-charge-state ratio resolution of 0.01 Da.\n" + ] + } + ], + "source": [ + "# define binning\n", + "[mqmin, mqmax] = [0., 100.0] # Da np.max(mq)]\n", + "print('Dataset ranging from [' + str(mqmin) + ', ' + str(mqmax) +'] Da.')\n", + "mqincr = 0.01 #Da\n", + "print('Using a mass-to-charge-state ratio resolution of '+str(mqincr)+' Da.')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Histogram has 10001 bins.\n" + ] + } + ], + "source": [ + "# transform collection of mass-to-charge-state ratios into a histogram\n", + "hst1d = np.unique(np.uint64(np.floor((mq[np.logical_and(mq >= mqmin, mq <= mqmax)] - mqmin) / mqincr)), return_counts=True)\n", + "nbins = np.uint64((mqmax - mqmin) / mqincr + 1)\n", + "print('Histogram has ' + str(nbins) + ' bins.')" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass-to-charge-state histogram created.\n" + ] + } + ], + "source": [ + "# use matplotlib and numpy to plot histogram data \n", + "xy = np.zeros([nbins, 2], np.float64)\n", + "xy[:,0] = np.linspace(mqmin + mqincr, mqmax + mqincr, nbins, endpoint=True)\n", + "xy[:,1] = 0.5 # * np.ones([nbins], np.float64) # 0.5 to be able to plot logarithm you can not measure half an atom\n", + "for i in np.arange(0, len(hst1d[0])):\n", + " binidx = hst1d[0][i]\n", + " xy[binidx, 1] = hst1d[1][i]\n", + "print('Mass-to-charge-state histogram created.')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mass-to-charge-state histogram visualized.\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.5, 10099999.995)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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VrHTTjvF3nvvHdttt13fxO0HK1asiKuvvjqWL18eDz30UMyaNSu23Xbb2G+//eKpT31qr9OLiIh77rknrrvuuvjjH/8YDz/8cEyZMiW23nrr2GOPPWLfffeNmTNndnyOG2+8Ma677rp48MEHY+rUqfGkJz0pDj744Nhpp506iltGu29m6dKlcfPNN8f9998fjz76aGy33XZx4oknxuDg4IjHbNy4Ma6++uq47bbb4oEHHohp06bFrrvuGgsXLoytt9666zn+7ne/ixtvvDH++Mc/xsqVK2PrrbeOuXPnxiGHHFLI+VrVz/29V+1pvPr1GtcaT19J7Tq0ql/vB0NDQ3HuuedWtwcHB+PYY4+NwcHBOO644+Lzn/98REQ88sgj8b3vfS9OOOGEMWP+4Q9/iD/84Q8REXHAAQeMuu91110XERG77bZbbLHFFiPuV1lArJWYE9k111wTf/zjH6vbu+yySxx++OEtHfumN70prrzyyur2BRdcEKeccspmlV+K3v3ud8eVV14Z3/ve96plX//61+NDH/pQ7LHHHi3Hmahjay9YGIwJKc/zRRGxqLE8y7L5EbG07HwAAAAAAAAAAAAAAAAAAKATJ554YnVhsJUrV8YFF1wQr3nNa0Y95oILLoiVK1fWxWjX2rVr46KLLorvfve78bOf/ay6AEczkyZNiuc973lx6qmntrw4Q61f//rXccYZZ8RFF10U69evH3XfnXfeOV7ykpfEKaecEnvvvXdP4rZqp512irvvvntY+eLFi2Px4sUjHnf22WfHySefPGrsK664Ik4//fS44oorYuPGjU332W233eLtb397/M3f/E1MmTKlrdw79eijj8ZnP/vZWLRoUdx6660j7jd16tQ49NBD401velO88pWvHHUxn2a+8Y1vxOmnnx6/+93vmn7+rGc9Kz75yU/GIYcc0lK8Mtr9ZZddFkcccUR1+8Mf/nCcdtppsXHjxvj85z8fX/ziF2PZsmXDjnvVq14Vc+bMGVa+bt26+Ld/+7f4f//v/8VDDz3UNM9jjjkmPv7xj8e8efPirrvuip133rn6+UknnRSLFi1qKfdHH300zjzzzFi8eHHceeedTfeZNGlSLFy4MD7ykY/EwoULW4rbDd3q793st0W2p6LGl366xt3qK0Vdh25eg076Zb/fDy655JL4/e9/X91+4QtfGE94whMi4vGFSysLg0VELFq0qKWFwX79619Xv37GM54x4n6bNm2KG2+8ccz9amNOmzata/OAFF100UV123/1V38VWZa1dOxf/dVf1W1fdtll8dhjj3VlAdBU8kvVJz/5ybjwwgtjaGgoIiLyPI8vfvGL8alPfWrEY8p8VtjcDPQ6AQAAAAAAAAAAAAAAAAAAAEa3//77x4IFC6rboy020myfpz3tabHffvu1fd5DDjkkjjnmmPj6178+6i/6Rzy+8MZPfvKTOOKII+Jv//ZvR1yYpJmPfvSjceCBB8b3vve9MRfziYi4884743Of+1x8/etf70ncXlu/fn2ceOKJcdhhh8XPfvazUev6tttui/e85z2xYMGC+O1vf1tajhdeeGHsvPPO8cEPfnDURcEiHl/U6uKLL47XvOY1cfXVV7d8jvXr18frXve6OP7440dcFCwi4pe//GUcfvjhLS+wU1a7b/TnP/85jjjiiHjnO9/ZdKGjkdxzzz2x7777xkc+8pGmi4JV8vzWt74V++yzT1x++eXjzvGHP/xh7LrrrnHaaaeNuGBU5XyXXXZZHHroofHWt761o3ppVb/29161p/Hq52tcMZ6+ktp1aFUK94OIGDb+1i789ZznPCd23HHH6vbPfvazukXERlK7MNgBBxww4n4333xzrF69esz9amPus88+MXny5DFzmKiWLFlSt33wwQe3fOzcuXNjp512qm6vX78+brrppi5l9rh+zy9Vu+yyS7zsZS+rK7vgggtGPWaijq39wMJgAAAAAAAAAAAAAAAAAAAACTjxxBOrX1988cWj/vL9/fffHxdffHHTY9uxdu3aYWVz586NBQsWxEEHHRRPe9rTYssttxy2z3/+53/GW97ylpbO8ZWvfCVOPfXUGBoaqiufPXt2PO1pT4uDDjoonv70p8cOO+wQWZa1nHtRcXtt3bp18ZKXvCTOPffcYZ9tv/328YxnPCOe+tSnxuDgYN1nt956axxyyCFxww03FJ7jpz71qXjlK185bJGqLMtihx12iAMOOCD23XffmDt3bkfnOemkk+JrX/tadXurrbaKffbZJ/bff/+YM2dO3b6bNm2KN7/5zfGrX/1qzLhltPtGGzdujJe//OVx1VVXVcsq388+++zT9HwREX/4wx/iiCOOGLbIT5Zlscsuu8SBBx4Yu+yyS7WNr1y5Ml72speNa1Gg//qv/4qjjz46HnzwwbryGTNmxF577RXPfOYzY7fddouBgYFhxx1zzDGR53nb52xVP/f3XrSn8erna1wx3r6S0nVoVQr3g4iIRx55JL73ve9Vt2fNmhUvf/nLq9tZlsVrX/va6vbQ0FCcc845Y8atLOI1Z86c2HXXXUfc7/rrr69+PdrCYI899lh1kcn9999/zPNPZDfffHPd9t57793W8Y37N8brVL/nl7JXvvKVddt33nln3H333SPuPxHH1n6x+S5NCAB9Is/zpg+5WZZ19GKhErMxdiVmSi8pKYY2Up7aOq79uraO+7G+tZF6RV3HotuH+0y9FPtjs+uX53nTPPsp93Zf4vdT7qkpqp+nLNUxqghFjntlxa4t63TsKzvn0Ywn72636ZFyHi1eq8eMtd94zt1uDuM5pp/qutVji5wrlNGuG7/Osqy63fg9NsZvdr7GnNs5tp2cU41d1LNMK8bb/oruj92s66KU3c+Lip1CXTNcis/RQHvamat2Mq/tprLmqd2OnaJU66PMuXulrJvvLFrRaewic+7Gs3+RUn3nnqKi67pX7y3GE68MKT6DpdYfUx33IkbPLaW8U2jXEem17Yg0530p5lyR2n0m1bpOsS9GpDn2pXqfSU2qc5GU20eK/TFF2jZAOlL8mdJE97rXvS5OPfXU2LRpU2zatCm+9rWvxXvf+96m+5533nmxadOmiIiYNGlSnHDCCeM+77x58+LYY4+NF7/4xfGMZzwjtthii7rP8zyP//3f/40vfOEL8V//9V/V85599tnxspe9LF7xileMGHvdunXxgQ98oK7sVa96VZx66qmx//77D2tDq1atil/96lfxox/9KM4777zS447H1772tVizZk088MAD8brXva5a/oIXvCDe//73j3jc/Pnzm5b/4z/+Y/z0pz+tKzv66KPj9NNPj3322ada9qc//Sm+8pWvxIc//OFYs2ZNREQ8/PDDceyxx8aSJUti1qxZnXxbI7rggguGtcvtttsuPvjBD8axxx4bT3rSk+o+e/DBB+OSSy6Jb37zm/HDH/6w5fOce+65cccdd0RExIte9KL48Ic/HM961rOq13bTpk3xgx/8IP7mb/4mli9fXi3727/92/jlL385Zvwi230zX/7yl+OBBx6IiIjnP//5cfrpp8dBBx1UXYApz/O45JJLYvr06XXHvfWtb63WQ0TE5MmT433ve1+84x3vqFt47b777ovPfvaz8alPfSpWrVoVb3/729vK75JLLolTTjmlbuGtl73sZfHe9743nvOc58TkyX9ZvuJPf/pTfPnLX44zzjgjVq1aFRERF154YXz84x+Pv//7v2/rvK0oor93u98W1Z66mWc/X+Na4+0rEcVch263lXb0+/2g4tvf/nb1vJUcZ8yYUbfPCSecEB/96Eer24sXL45//Md/HDVuZWGzsRbxqiwMlmXZqPsuWbKk2v4354XB1qxZE/fcc09d2Q477NBWjMb9KwuudUO/55e6Zz3rWcPKbrjhhthxxx1HPKbsOdPmImv3h3WQsizL5kfE0sr20qVLuzJZAhivoaGhWLVqVaxevXrYZzNmzIjZs2cPWzG71biPPfZYDA0NDYs9Y8aMGBgYiJkzZ44rNhODNlKeSl1Xvq6t70pdR0Tf1bc2Uq+o61h0+3CfqZdif6zNubZs9erVdTlX9EvuzfKulEdE0xz7JffUFNXPU5bqGFWEIse9smLXlnU69pWdc6U8orNxr6g2PVLOo+XW6jFj7RcRbZ+7zLz7oa5bPTZieF12a65QRruuzbdi2rRp1f8tpvKD3srnjd9T4/kac66NPdax7eScauyinmUayyM6n++V1R+7WddFKfKZoMzYKdQ1w6X4HA20p525aifz2m4qa57a7dgpSrU+ypy718bv1juLxvKI7rfrInOuxIgY/7N/kVJ9556iouu6V+8t+nUenOIzWGr9MdVxL2L03KdPn173yxe1+i3vFNp1RHptOyLNeV+KOVekdp9Jta5T7IsRaY59qd5nUpPqXCTl9pFif0yRtg1srjZu3Bi33nprXdnuu+9et8BGv8nzvPoc0GhgYKBukZV29qU1O+20U9x9993V7T//+c8xZ86ciIg48sgj43/+538iImKfffaJG2+8sWmMBQsWxLJly6rH/OhHP4qIiBUrVsRWW21V3W/HHXeMu+66a8Rcrrzyyjj44INj0qRJLeV+8cUXx8te9rJYt25dREQ885nPHHURph/96Efxkpe8pLp94oknxuLFi1s61/r16+P3v/997LLLLqXF7cRdd90VO++8c3X7pJNOikWLFrUV41e/+lU861nPqluM75//+Z/j9NNPH/GY66+/Pp773OfGI488Ui1717veFZ/+9KfbOncrHnjggdhzzz1jxYoV1bKFCxfG97///WobHs0tt9wSM2bMiKc85SnDPrvsssviiCOOGFb+oQ99KD7ykY+MGnO//fareyezZMmSePrTnz7iMUW3+4iRv5+/+7u/i7POOqul8/7gBz+Il7/85dXtwcHB+N73vlfX9psd88pXvjI2btxYVz5ae1yxYkXstdde8Yc//CEiHh/bv/SlL8Ub3/jGUfO76aab4vDDD48//vGPERExZcqUuPvuu4ctDtepIvt7N/ptGe2p0zz7+Rp3o69EFH8dutFW2onR7/eDWgsXLoyrrrqquv3jH/84XvSiFw3b7+lPf3r85je/qW5fc8018exnP7vQ3Mp28skntzw+deLss8+Ok08+eVzH3nvvvTFv3rzq9uDgYKxbt66tOf2//Mu/xD//8z9Xt9/85jfHl770pXHl08/5NY5PY82ri9D43HDppZfG4YcfPu54eZ7HFltsEY8++mi17Mwzz4z3vOc9Tfcv4x43lqKet5ctWxYLFiyoLVqQ5/myjoK2wRtFAAAAAAAAAAAAAAAAAADoc3ke8dhj/hT1p2ZNjb534oknVr/+zW9+E0uWLBm2z/XXX19dFKzxmHYtXLiw5V/0j4j4q7/6q3j/+99f3b722mvjpptuGnH/W265pW777W9/e8vnmjJlyoiL+RQVt9fOOuusukVgXvrSl466CExExAEHHBD/9V//VVf25S9/OVauXNn1/D7zmc/ULQq2++67x49//OOWFgWLiHjqU5/adFGwkRx11FGjLgpWifmOd7yjruzHP/7xqMcU3e5HcvDBB8enPvWplvf/7Gc/W7f9wQ9+cNRFwSIiXvayl8U//MM/tJXXF77wheqCURER//qv/zrmglEREXvvvXfdokbr16+Pz33uc22duxX93t971Z7a0e/XuFG7fSUijevQjn6/H1TcfvvtdYuCbbvttvH85z+/6b7HH3983XYZC2gxXO2CUBGPL5jf7kK/lcXfR4rZiX7PL3VZlsUTnvCEurL7779/xP0n2tjaT/p3GXEAAAAAAAAAAAAAAAAAACAiIlavjvjEJ8o7X55H5HnzX7DPssf/jGfffvX+90c0rA/Qt44++ujYYost4pFHHomIiHPOOSf23Xffun1qF9LYcsst4+ijjy4xw4jXve51ccYZZ1S3r7nmmth7772b7rtmzZq67cHBwa7kUFTcXlqxYkX893//d3U7y7I488wzWzr21a9+dXz605+OX/ziFxER8dhjj8XXv/71OOWUU7qW3/r16+Pzn/98XdkXvvCFYYtvdNO//du/tbTfq1/96vjYxz5W3f71r3/d9Vzaafcj+chHPtLy4ib33XdfXHLJJdXtOXPmxN///d+3dOypp54a//Ef/9HSYkCbNm2K//iP/6huz5s3L9773ve2dJ6IiBe/+MWx3377xQ033BAREf/93/9dV0/dMBH7ezfaU6tSuMaN2ukrnSjzOrSj3+8HtWoXjouIOO6442Ly5ObL3bz2ta+NU089tbrg2be+9a349Kc/HdOmTSskN5prXCRrPPU/ffr0UWN2ot/zmwjmzJkTd999d3W72/XTr2Nrv7EwGAAAAAAAAAAAAAAAAAAAQCKmT58exx13XHz5y1+OiIivf/3r8YlPfCImTZoUEREbNmyIb3zjG9X9jzvuuNIX1Nh5553rtiuLxTQzd+7cuu3zzjsv9t9//45zKCpuL/385z+P9evXV7cPOeSQeOpTn9ry8W984xurC8FERFxxxRVdXQjm2muvjRUrVlS3FyxYEM997nO7Fr/R0572tJYXkViwYEFMnjw5Nm7cGBER9957b9fzaafdN7Pddtu1VV/XXHNNdfGciIhXvepVLff1GTNmxCtf+co4++yzx9z3xhtvjOXLl1e3X/Oa17S98NYLXvCCan389re/jYceeii22WabtmKMZiL2907bUztSuMa12u0rnSjzOrSj3+8HFXmex7nnnltXdsIJJ4y4/7x582LhwoVxxRVXRMTjC6BdeOGF8epXv7rrufXKBz7wgXjd615X+Hnmz58/7mPXrl1btz1lypS2Y0ydOrVuu3EBx070e34TwaxZs+q2a8ebbujXsbXfWBgMAAAAAAAAAAAAAAAAAAAgISeeeGJ1YbAHHngg/r//7/+LF7/4xRERcdFFF8VDDz1Ut2+3XHvttXHBBRfEkiVL4re//W2sWLEiVq1aVV1saSS1+TR67nOfG5MmTYpNmzZFRMRZZ50Va9eujfe9732xyy67jDvXouL20i9/+cu67XYXxnne855Xt127KEw3XHnllXXbRx55ZFfjN3rGM57R8r6Dg4MxZ86caltcuXJly8cW0e6becYznhFZlrW8/3XXXVe3ffDBB7d1voMPPrilhcEar2s79V4xb968uu2bb745Fi5c2HackaTU38tqT+1I4RrXarevNNOP16Ed/X4/qLj00kvj7rvvrm7vsssucdBBB416zPHHH19dGCwiYtGiRRNqYbC999675UUte6VxkcnxLAq1bt26UWN2ot/zmwhWrVpVt924kNpIUh9b+42FwQAAAAAAAAAAAAAAAAAAABJyyCGHxC677BJ33HFHREQsXry4ujDY4sWLq/vtuuuuccghh3R8viuvvDL+9m//Nn7zm9+M6/gVK1aM+NkOO+wQb3zjG+NLX/pStezzn/98fP7zn48DDjggnv/858ehhx4aBx10UGy99dYtn7OIuD/96U9bPv/zn//8lvdtVe3iKhER++yzT1vH77LLLjF79uzqYg/33ntv5Hlet8BOJ9/j7bffXrc9nsWF2rHtttu2tf/MmTOrC0+sWbNmzP2LbPfN7Lzzzm3tf99999Vt77XXXm0d3+r+N998c932cccd19Z5mvnTn/40rKyTtlfUONJNZbendpR1jbul3b5Sq5+vQzvKuB90w6JFi+q2jz/++DGPOfbYY+Md73hHbNiwISIiLr744rj//vtj++2372pujGzWrFl122vXrm07RuN9tjFmJ/o9v4mgcQHVsepnooyt/cbCYADQQ1mWxcyZM2P69OnDPhsYGBj3w1OWZTFjxozI83xY7Ercbj+YkRZtpDyVuo6IYfVd28/7rb61kXpFXcei24f7TL0U+2NtzhWV3Jtdw37JvVneEY/nXvm82TG0r6h+nrJUx6giFDnulRW7ohtjX9k5V84zUsx28+52mx4p59Fya/WYVvZr99zt5jCeY/qprts5tqi5Qhntujbf2s9mzpwZEY/Xe0RUP2/8npp9f7U518Ye69h2ck41dlHPMrW6Nd8rqz92s66LUuQzQZmxU6hrhkvxORpoTztz1U7mtd1U1jy127FTlGp9lDl3r43frXcWjbFHitNJ7CJzro3RD2NGs3On+M49RUXXda/eW/TrPDjFZ7DU+mOq417l/KPllkreKbTriPTadiWH1OZ9KeZckdp9JtW6TrEvRqQ59qV6n0lNqnORlNtHiv0xRdo2wPjNmBHx/veXd77HHwFGHsdqh7h29u1XIwzlfSvLsnj9618fp59+ekREfP/734+VK1fGhg0b4qKLLqru9/rXv77jc33xi1+MU045pfpcOB7r1q0b9fPPfvaz8Yc//CF+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hS98IW677bZRj/niF78Yn/zkJ9s6z4c+9KE477zzYuPGjS3tn+d5nHnmmXVlBxxwQGlxOzE4OBhPfepTq9tLliyJ22+/va0Y7373u2Ng4C/LBFx44YVxxhlnjHrMkiVL4s1vfnNd2Zvf/ObYYost2jp3K975znfG1ltvXd2+9dZb48UvfnGsWLGipeN/97vfxe9///uu59Wqstp9t7z73e+uq+9f/epXcdRRR424cM4DDzwQL3vZy+KGG25oa5x417veFdttt111+6qrropjjjkmVq5c2XKMxx57LD772c/GV77ylZaPaVWR/b2Tfltme+p0fOn3a9yJsq5DN8b4dvTj/WD16tVx/vnn15WdcMIJ4473rGc9K3bdddfq9saNG+O8885rO85vfvObOOWUU2K33XaL6dOnxxOf+MQ4/PDD45vf/GZERHzve9+LLMsiy7K46KKLxp3vRPP3f//3MWvWrOr25ZdfPupCUffdd9+w9vWud70rttlmmzHPddppp1WvQZZlcfjhh/dVfhPR2rVr40tf+lLss88+8alPfarusxkzZsT5558f22677YjHpzZnStHkXicABbkrIi5vUj4jLA4GAAAAAAAAAAAAAAAAAACj2m233eLZz352/PznP4+IiFWrVsWhhx4an/nMZ+IVr3hFTJ78l19Vv/HGG+Pf/u3f4tvf/nZEROy1115x8803t3Se//3f/40zzjgj3vve98YrX/nKOOqoo+LAAw+MJzzhCXX7DQ0NxTXXXBOnn356/PSnP62Wz5gxI44//vjS4nbqBS94QbVuNm3aFIceemi85S1viX322WfYom7z58+P7bffvu74ZzzjGfHud7+7blGjD33oQ7FkyZI47bTTYsGCBdXyP//5z/GVr3wlPvzhD8fq1aur5bvuuuuYi8eM1xOf+MRYtGhRHHXUUZHneUREXHHFFbHXXnvFBz/4wTj22GPrFh+KiHjwwQfjkksuiW984xtx0UUXxSWXXBJPecpTCslvLGW1+27Zdttt4zOf+Uy8/vWvr5b95Cc/iT322CNe85rXxCGHHBJbb711PPzww3HVVVfFN7/5zepCT29961vjC1/4Qkvn2XLLLeM73/lOPO95z4sNGzZERMT3v//9mD9/frz73e+OY489NubNmzfsuHvvvTd++ctfxgUXXBA/+MEP4pFHHokPf/jDXfjO6xXd38fbb8tuT52ML/1+jTtR5nXodIxvRz/eD84///xYtWpVdXvy5MkxderUuv7Wrv32269ugbXFixfHe97znpaO3bRpU3zgAx+IT3/60zE0NFQtX7t2bVx++eVx+eWXx4033hgzZ86sfrb//vuPO9eJZptttol//Md/jH/8x3+slp166qlxzz33xD/90z/F3LlzI+LxsfX73/9+vOtd74p77rmnuu/cuXPjve9974TI7+qrr441a9YMK7/xxhvrtteuXTtie587d27svffeLZ2vE9dff/2whTI3bNgQK1asiBUrVsRdd90Vv/jFL+K6666rGw8qtttuuzj//PPjOc95zqjnSW3OlKKsMpmGzUGWZfMjYmlle+nSpTF//vweZgRs7vI8j3Xr1sX69euHfTZlypSYOnXquP5nhjzPY/369dW/G+NmWVb9m82TNlKe2jpurO/aOu63+tZG6hV1HYtuH+4z9VLsj83quFLWLM9+yb1Z3pXyiGiaY7/knpqi+nnKUh2jilDkuFdW7MayTsa+snOulEd0Nu4V1aZHynm03Fo9Zqz9IqLtc5eZdz/UdavHRgyvy27NFcpo183OMzg4WP2HBI3fY2P8xu3GWLXbYx3bTs6pxi7qWaaxPKLz+V5Z/bGbdV2UIp8JyoydQl0zXIrP0UB72pmrdjKv7aay5qndjp2iVOujzLl7bVm33lk0lkd0v10XmXMlRsT4n/2LlOo79xQVXde9em/Rr/PgFJ/BUuuPqY57EaPnXvsurlG/5Z1Cu45Ir21HpDnvSzHnitTuM6nWdYp9MSLNsS/V+0xqUp2LpNw+UuyPKdK2gc3Vxo0b49Zbb60r23333et+Wbrf5HlefQ5olGXZsJ8ptbovrdlpp53i7rvvrm7/+c9/jjlz5nQl9ooVK2Krrbaqbu+4445x1113Nd33mmuuicMPP3zYvW7WrFmx++67x8DAQPz+97+PBx54oPrZzJkz48orr6xbWOOwww6Lyy67rOk5jj766LjwwguHlW+//faxzTbbxMyZM+Oxxx6LO++8Mx599NFh+33+85+Pt73tbaXF7dQtt9wST3/602Pt2rVj7nv22WfHySefPKx83bp18dKXvrTpwhNz586NuXPnxqpVq+KOO+4Ydu2e8IQnxE9+8pPCFz759Kc/He95z3uGjQ1ZlsW8efPiiU98YmzatCke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b3YN+yX3ZnlHPJ575fNmx9C+ovp5ylIdo4pQ5LhXVuyKbox9ZedcOc9IMdvNu9tteqScR8ut1WNa2a/dc7ebw3iO6ae6bufYouYKZbTr2nwrBgcHY9OmTRHxeL1XyirbjddstJxrY491bDs5pxq7qGeZWt2a75XVH7tZ10Up8pmgzNgp1DXDpfgcDbSnnblqJ/Pabiprntrt2ClKtT7KnLvXxu/WO4vG2CPF6SR2kTnXxuiHMaPZuVN8556iouu6V+8t+nUenOIzWGr9MdVxr3L+kXIbGBhIJu8U2nVEem27kkNq874Uc65I7T6Tal2n2Bcj0hz7Ur3PpCbVuUjK7SPF/pgibRsAALovz/OW554bNmyIk046qfpvNiMiTjrppOq7H4CUXX/99dWvDzzwwDH3//Wvfx0REfvuu29RKQGMS5bnea9zgNJkWTY/IpZWtpcuXRrz58/vYUYAAAAAAAAAAAAAAAAAwES3cePGuPXWW+vKdt999+p/oAcAndhvv/3i1FNPjaOPPjqmTJky4n533HFHvOENb4grrriiWjZ16tRYunRp7LbbbmWkClCot73tbfHFL34xIiIefvjh2HrrrUfc95Zbbok99tgjIiLe8573xJlnnllKjkB3FfW8vWzZsliwYEFt0YI8z5d1FLQN3hYAAAAAAAAAAAAAAAAAAAAAJGrJkiXx6le/OubMmRMvfOEL48ADD4wdd9wxZs2aFatWrYp77rknLrvssvjxj38cmzZtqjv2jDPOsCgYMGGsXr26+vWf//znURcG+8QnPlH9er/99is0L4B2WRgMAAAAAAAAAAAAAAAAAAAAIHErVqyIb33rW/Gtb32rpf3f+c53xnve856CswIoz3bbbVf9etmyZbHrrrs23e+nP/1pfOUrX6luWxgM6DcDvU4AAAAAAAAAAAAAAAAAAAAAgPF58pOf3Nb+O+ywQ5x99tnxmc98JgYGLDsBTBwHH3xw9euPfexjMTQ0NGyfyy+/PF71qldFnucRETF9+vTYc889S8sRoBWTe50AAAAAAAAAAAAAAAAAAAAAAONz7733xs9//vO49NJL49prr43bb789li9fHo8++mgMDAzEVlttFdtuu20cdNBB8bznPS+OPvromDJlSq/TBui6l7zkJbHDDjvEvffeG9dcc0286EUvine+850xd+7cuO++++I73/lO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c5RqPNL6eLqKdU50441Fn/Qf/oN0003Fwhfnz9u/3rLNu94l/et/LX3qU2NHst473iH9l//l6uvvfW9xPK5eLebs9Qel3/hG6eJF6U/+pJiT3XRTknDXuuWW4gH8X/7l4t/Pfrb0i79YPCDath3P2XOfW1w3/OQni3b90EPFfPtHf7SoA29+s73FW0I5c6bol3/6p4scSMVDhY88Ij3lKcUiL1/5Svp6/oY3FG3sK18pHrCOte277y7Gol/91WIxlUceKR70r3rVq6SvfrX4PuUFL1hdbC/Ligc+/82/KfL1lrcUZfzoj0rHx8X1vOpCA3XldzUf+UixnVtuKcabvouIv+Mdp9u+++5izPrDPyz6g2c+s1i04RnPKMaXPJde+cr2i3S+5jVFjJ/6VPEQ8UteUvSVjz9etJWDg+K1+uJqm4S4dj+mTd8blH3LRz5S7OOttxbXdO+5R/pTf0r6qZ8q2uCNN0of/nDxmdtvl77xG8POj970JunSpaI9vfKVy4u59nHbbUV7Se3lLy/G3c99rsjtU59a5PHHf7yIx/KicmfPFv3Ez/98kf+3vOX0mscP/dDY0Z163euK9vzlLxcLvoRawPdtb5NOToqyX/vaoq+oX+N629uKB87/5b8sPvO0pxX91Qc/KH3pS937lroXvUj64helz3xGevDB7QsxjOm1r5Uee6z9fn/DNxRz7gsXimN45kySMJc8/HAR72c/Kz3rWc0LMdS99a3F9ZhHHy3Gl+qiSbE1bfstbyle+9rXigUumha6HsN73iP92I8V4+xddxU5vuGG5cU2qm3skUeKNjbEvfcW+fjVXy3mMFevFv1C1blzRV/8vOcVY9bXfZ30O79TtOMXvEC6776iXl6+XIxD991X5P3DHy7GugcekH7pl9Zfdyj3+7HHTo+LVMzTYy5W+/a3F3FfvFjM4bosOLnp2v3OTnGN4id/sshplzGrvH557VqRy8Vi2DXN228/7Vt+8ieLzz78sPQ//o/L77v//iLve3vFnPLzny/G4N3doh997WuX3//CFxb97Kc/XfSxDz64/Ps77yz64l//9eXX3/526aMf7ZfzUPb2Tudmh4eri5xJm3P+ylcW86zPf75oF/WFxZus+97/Pe+RfvAHizYthf1ur7yv50d+pGib584V884YOR96b8073yn9o39UzGG3qZ6PnZxsvta4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wQAAAAAAAAAAAAAAAAAAAAAAAGBLEAwGAAAAAAAAAAAAAAAAAAAAAAAAW4BgMAAAAAAAAAAAAAAAAAAAAAAAANgCBIMBAAAAAAAAAAAAAAAAAAAAAADAFiAYDAAAAAAAAAAAAAAAAAAAAAAAALYAwWAAAAAAAAAAAAAAAAAAAAAAAACwBQgGAwAAAAAAAAAAAAAAAAAAAAAAgC1AMBgAAAAAAAAAAAAAAAAAAAAAAABsAYLBAAAAAAAAAAAAAAAAAAAAAAAAYAsQDAYAAAAAAAAAAAAAAAAAAAAAAABbgGAwAAAAAAAAAAAAAAAAAAAAAAAA2AIEgwEAAAAAAAAAAAAAAAAAAAAAAMAWIBgMAAAAAAAAAAAAAAAAAAAAAAAAtgDBYAAAAAAAAAAAAAAAAAAAAAAAALAFCAYDAAAAAAAAAAAAAAAAAAAAAACALUAwGAAAAAAAAAAAAAAAAAAAAAAAAGwBgsEAAAAAAAAAAAAAAAAAAAAAAABgCxAMBgAAAAAAAAAAAAAAAAAAAAAAAFuAYDAAAAAAAAAAAAAAAAAAAAAAAADYAgSDAQAAAAAAAAAAAAAAAAAAAAAAwBYgGAwAAAAAAAAAAAAAAAAAAAAAAAC2AMFgAAAAAAAAAAAAAAAAAAAAAAAAsAUIBgMAAAAAAAAAAAAAAAAAAAAAAIAtQDAYAAAAAAAAAAAAAAAAAAAAAAAAbAGCwQAAAAAAAAAAAAAAAAAAAAAAAGALEAwGAAAAAAAAAAAAAAAAAAAAAAAAW4BgMAAAAAAAAAAAAAAAAAAAAAAAANgC/n/+2vc7bssEGAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "[xmi, xmx, ymi, ymx] = [mqmin, 10**np.ceil(np.log10(mqmax)), 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", + "[xmi, xmx, ymi, ymx] = [mqmin, mqmax, 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", + "fig, cnts_over_mq = plt.subplots(1, 1)\n", + "plt.plot(xy[:, 0], xy[:, 1], color='blue', alpha=0.5, linewidth=1.0)\n", + "for i in np.arange(1,nions + 1):\n", + " # load ranges and plot them\n", + " ranges = hf['entry/atom_probe/ranging/peak_identification/ion' + str(i) + '/mass_to_charge_range'][:]\n", + " for min_max in ranges:\n", + " cnts_over_mq.vlines(min_max[0], 0, 1, transform=cnts_over_mq.get_xaxis_transform(), alpha=0.1, color='grey', linestyles='dotted')\n", + " cnts_over_mq.vlines(min_max[1], 0, 1, transform=cnts_over_mq.get_xaxis_transform(), alpha=0.1, color='grey', linestyles='dotted')\n", + " #rng = Rectangle((min_max[0], ymi), min_max[1] - min_max[0], ymx - ymi, edgecolor='r', facecolor=\"none\")\n", + "# plt.xticks([1, 2, 3, 4, 5, 6, 7, 8, 9], ['Min', '0.0025', '0.025', '0.25', '0.50', '0.75', '0.975', '0.9975', 'Max'])\n", + "plt.yscale('log')\n", + "plt.legend( [r'Mass-to-charge-state ratio $\\Delta\\frac{m}{q} = $'+str(mqincr)+' Da'], loc='upper right')\n", + "plt.xlabel(r'Mass-to-charge-state-ratio (Da)')\n", + "plt.ylabel(r'Counts')\n", + "print('Mass-to-charge-state histogram visualized.')\n", + "# scale bar with add margin to the bottom and top of the yaxis to avoid that lines fall on x axis\n", + "margin=0.01 # polishing the margins\n", + "plt.xlim([-margin * (xmx - xmi) + xmi, +margin * (xmx - xmi) + xmx])\n", + "plt.ylim([ymi, +margin * (ymx - ymi) + ymx])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "apm3.test.nxs.MassToChargeStateRatios.png stored to disk.\n" + ] + } + ], + "source": [ + "#plot the figure\n", + "figfn = h5_file_name + '.MassToChargeStateRatios.png'\n", + "fig.savefig(figfn, dpi=300, facecolor='w', edgecolor='w', orientation='landscape', format='png', \n", + " transparent=False, bbox_inches='tight', pad_inches=0.1, metadata=None)\n", + "#plt.close('all')\n", + "print(figfn + ' stored to disk.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### NEW ISSUES:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Add more sophisticated legend and names for iontypes\n", + "* Make the above plot interactive, maybe directly inside h5web or another ipywidget?\n", + "* Feel free to explore our paraprobe container in the north branch for more advanced processing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb b/tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb new file mode 100644 index 000000000..6699a967f --- /dev/null +++ b/tests/data/tools/dataconverter/readers/ellips/ELLIPSOMETRY.NeXus.READER.EXAMPLE.02.ipynb @@ -0,0 +1,2825 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## nomad-parser-nexus demo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add punchline." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step -1: Set up dependencies for jupyterlab_h5web" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# start with a fresh virtualenv\n", + "# ! pip install virtualenv\n", + "# ! virtualenv --python=python3.7 .py37env\n", + "# ! source .py37env/bin/activate\n", + "\n", + "# install jupyter, jupyter-lab and web extensions\n", + "\n", + "#inside SPRINT5-JUPYTER-TEST-02, conda, python 3.7, jupyter, jupyterlab" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! pip install --upgrade nodejs && pip install ipywidgets h5py==3.5.0 h5glance==0.7 h5grove==0.0.8 jupyterlab[full]==2.3.0 jupyterlab_h5web[full]==0.0.11 punx==0.2.5 nexpy==0.14.1 silx[full] && jupyter lab build" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! jupyter nbextension enable --py widgetsnbextension" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! jupyter serverextension enable jupyterlab_h5web" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Restart the Jupyter kernel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 0: Installating and testing nomad-parser-nexus module" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Package Version \n", + "-------------------- ---------\n", + "ansi2html 1.6.0 \n", + "anyio 3.5.0 \n", + "appdirs 1.4.4 \n", + "argon2-cffi 21.3.0 \n", + "argon2-cffi-bindings 21.2.0 \n", + "asteval 0.9.26 \n", + "attrs 21.4.0 \n", + "backcall 0.2.0 \n", + "bleach 4.1.0 \n", + "cached-property 1.5.2 \n", + "certifi 2021.10.8\n", + "cffi 1.15.0 \n", + "charset-normalizer 2.0.10 \n", + "cycler 0.11.0 \n", + "debugpy 1.5.1 \n", + "decorator 5.1.1 \n", + "defusedxml 0.7.1 \n", + "Deprecated 1.2.13 \n", + "entrypoints 0.3 \n", + "fabio 0.13.0 \n", + "fonttools 4.29.0 \n", + "future 0.18.2 \n", + "h5glance 0.7 \n", + "h5grove 0.0.8 \n", + "h5py 3.5.0 \n", + "hdf5plugin 3.2.0 \n", + "htmlgen 2.0.0 \n", + "idna 3.3 \n", + "importlib-metadata 4.10.1 \n", + "importlib-resources 5.4.0 \n", + "ipykernel 6.7.0 \n", + "ipython 7.31.1 \n", + "ipython-genutils 0.2.0 \n", + "ipywidgets 7.6.5 \n", + "jedi 0.18.1 \n", + "Jinja2 3.0.3 \n", + "json5 0.9.6 \n", + "jsonschema 4.4.0 \n", + "jupyter-client 7.1.2 \n", + "jupyter-core 4.9.1 \n", + "jupyter-server 1.13.4 \n", + "jupyterlab 2.3.0 \n", + "jupyterlab-h5web 0.0.11 \n", + "jupyterlab-pygments 0.1.2 \n", + "jupyterlab-server 1.2.0 \n", + "jupyterlab-widgets 1.0.2 \n", + "kiwisolver 1.3.2 \n", + "lmfit 1.0.3 \n", + "lxml 4.7.1 \n", + "Mako 1.1.6 \n", + "MarkupSafe 2.0.1 \n", + "matplotlib 3.5.1 \n", + "matplotlib-inline 0.1.3 \n", + "mistune 0.8.4 \n", + "nbclient 0.5.10 \n", + "nbconvert 6.4.1 \n", + "nbformat 5.1.3 \n", + "nest-asyncio 1.5.4 \n", + "NeXpy 0.14.1 \n", + "nexusformat 0.7.3 \n", + "nodejs 0.1.1 \n", + "notebook 6.4.8 \n", + "numpy 1.21.5 \n", + "optional-django 0.1.0 \n", + "orjson 3.6.6 \n", + "packaging 21.3 \n", + "pandocfilters 1.5.0 \n", + "parso 0.8.3 \n", + "pexpect 4.8.0 \n", + "pickleshare 0.7.5 \n", + "Pillow 9.0.0 \n", + "pip 20.0.2 \n", + "pkg-resources 0.0.0 \n", + "platformdirs 2.4.1 \n", + "prometheus-client 0.13.0 \n", + "prompt-toolkit 3.0.25 \n", + "ptyprocess 0.7.0 \n", + "punx 0.2.5 \n", + "pycparser 2.21 \n", + "PyGithub 1.55 \n", + "Pygments 2.11.2 \n", + "PyJWT 2.3.0 \n", + "pylatexenc 2.10 \n", + "PyNaCl 1.5.0 \n", + "pyopencl 2021.2.13\n", + "PyOpenGL 3.1.5 \n", + "pyparsing 3.0.7 \n", + "PyQt5 5.15.6 \n", + "PyQt5-Qt5 5.15.2 \n", + "PyQt5-sip 12.9.0 \n", + "pyRestTable 2020.0.3 \n", + "pyrsistent 0.18.1 \n", + "python-dateutil 2.8.2 \n", + "pytools 2021.2.9 \n", + "pyzmq 22.3.0 \n", + "qtconsole 5.2.2 \n", + "QtPy 2.0.0 \n", + "requests 2.27.1 \n", + "scipy 1.7.3 \n", + "Send2Trash 1.8.0 \n", + "setuptools 44.0.0 \n", + "silx 1.0.0 \n", + "six 1.16.0 \n", + "sniffio 1.2.0 \n", + "terminado 0.13.1 \n", + "testpath 0.5.0 \n", + "tornado 6.1 \n", + "traitlets 5.1.1 \n", + "typing-extensions 4.0.1 \n", + "uncertainties 3.1.6 \n", + "urllib3 1.26.8 \n", + "versioneer 0.21 \n", + "wcwidth 0.2.5 \n", + "webencodings 0.5.1 \n", + "websocket-client 1.2.3 \n", + "wheel 0.34.2 \n", + "widgetsnbextension 3.5.2 \n", + "wrapt 1.13.3 \n", + "zipp 3.7.0 \n", + "Collecting pip\n", + " Using cached pip-21.3.1-py3-none-any.whl (1.7 MB)\n", + "Installing collected packages: pip\n", + " Attempting uninstall: pip\n", + " Found existing installation: pip 20.0.2\n", + " Uninstalling pip-20.0.2:\n", + " Successfully uninstalled pip-20.0.2\n", + "Successfully installed pip-21.3.1\n", + "Looking in indexes: https://pypi.org/simple, https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple\n", + "Collecting nomad-lab==1.0.0\n", + " Downloading https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/files/d6e4ca0230ba10f27423cbbf42e95bc1fcb645ae94fbbc898f7b67c591872023/nomad-lab-1.0.0.tar.gz (1.6 MB)\n", + " |████████████████████████████████| 1.6 MB 1.9 MB/s \n", + "\u001b[?25h Installing build dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", + "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25hRequirement already satisfied: wheel in ./test/.py37env/lib/python3.7/site-packages (from nomad-lab==1.0.0) (0.34.2)\n", + "Requirement already satisfied: future==0.18.2 in ./test/.py37env/lib/python3.7/site-packages (from nomad-lab==1.0.0) (0.18.2)\n", + "Collecting pyyaml==6.0\n", + " Using cached PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (596 kB)\n", + "Collecting cachetools==4.2.4\n", + " Using cached cachetools-4.2.4-py3-none-any.whl (10 kB)\n", + "Collecting nptyping==1.4.4\n", + " Using cached nptyping-1.4.4-py3-none-any.whl (31 kB)\n", + "Collecting jmespath==0.10.0\n", + " Using cached jmespath-0.10.0-py2.py3-none-any.whl (24 kB)\n", + "Collecting aniso8601==7.0.0\n", + " Using cached aniso8601-7.0.0-py2.py3-none-any.whl (42 kB)\n", + "Collecting pytz==2021.1\n", + " Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)\n", + "Collecting requests==2.26.0\n", + " Using cached requests-2.26.0-py2.py3-none-any.whl (62 kB)\n", + "Collecting numpy==1.21.2\n", + " Using cached numpy-1.21.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)\n", + "Requirement already satisfied: pip in ./test/.py37env/lib/python3.7/site-packages (from nomad-lab==1.0.0) (21.3.1)\n", + "Collecting cython>=0.19\n", + " Using cached Cython-0.29.26-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (1.9 MB)\n", + "Collecting fastentrypoints==0.12\n", + " Using cached fastentrypoints-0.12-py3-none-any.whl (4.6 kB)\n", + "Collecting elasticsearch-dsl==6.4.0\n", + " Using cached elasticsearch_dsl-6.4.0-py2.py3-none-any.whl (49 kB)\n", + "Collecting ase==3.19.0\n", + " Using cached ase-3.19.0-py3-none-any.whl (2.1 MB)\n", + "Collecting orjson==3.6.0\n", + " Using cached orjson-3.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (236 kB)\n", + "Collecting docstring-parser==0.12\n", + " Using cached docstring_parser-0.12-py3-none-any.whl\n", + "Collecting python-keycloak==0.26.1\n", + " Using cached python_keycloak-0.26.1-py3-none-any.whl\n", + "Collecting click==7.1.2\n", + " Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)\n", + "Collecting Pint==0.17\n", + " Using cached Pint-0.17-py2.py3-none-any.whl (204 kB)\n", + "Collecting pydantic==1.8.2\n", + " Using cached pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl (10.1 MB)\n", + "Requirement already satisfied: scipy in ./test/.py37env/lib/python3.7/site-packages (from ase==3.19.0->nomad-lab==1.0.0) (1.7.3)\n", + "Requirement already satisfied: matplotlib in ./test/.py37env/lib/python3.7/site-packages (from ase==3.19.0->nomad-lab==1.0.0) (3.5.1)\n", + "Collecting elasticsearch<7.0.0,>=6.0.0\n", + " Using cached elasticsearch-6.8.2-py2.py3-none-any.whl (90 kB)\n", + "Requirement already satisfied: python-dateutil in ./test/.py37env/lib/python3.7/site-packages (from elasticsearch-dsl==6.4.0->nomad-lab==1.0.0) (2.8.2)\n", + "Requirement already satisfied: six in ./test/.py37env/lib/python3.7/site-packages (from elasticsearch-dsl==6.4.0->nomad-lab==1.0.0) (1.16.0)\n", + "Collecting typish>=1.7.0\n", + " Using cached typish-1.9.3-py3-none-any.whl (45 kB)\n", + "Requirement already satisfied: importlib-metadata in ./test/.py37env/lib/python3.7/site-packages (from Pint==0.17->nomad-lab==1.0.0) (4.10.1)\n", + "Requirement already satisfied: packaging in ./test/.py37env/lib/python3.7/site-packages (from Pint==0.17->nomad-lab==1.0.0) (21.3)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in ./test/.py37env/lib/python3.7/site-packages (from pydantic==1.8.2->nomad-lab==1.0.0) (4.0.1)\n", + "Collecting python-jose>=1.4.0\n", + " Using cached python_jose-3.3.0-py2.py3-none-any.whl (33 kB)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab==1.0.0) (1.26.8)\n", + "Requirement already satisfied: idna<4,>=2.5 in ./test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab==1.0.0) (3.3)\n", + "Requirement already satisfied: charset-normalizer~=2.0.0 in ./test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab==1.0.0) (2.0.10)\n", + "Requirement already satisfied: certifi>=2017.4.17 in ./test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab==1.0.0) (2021.10.8)\n", + "Collecting ecdsa!=0.15\n", + " Using cached ecdsa-0.17.0-py2.py3-none-any.whl (119 kB)\n", + "Collecting pyasn1\n", + " Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)\n", + "Collecting rsa\n", + " Using cached rsa-4.8-py3-none-any.whl (39 kB)\n", + "Requirement already satisfied: zipp>=0.5 in ./test/.py37env/lib/python3.7/site-packages (from importlib-metadata->Pint==0.17->nomad-lab==1.0.0) (3.7.0)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in ./test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab==1.0.0) (3.0.7)\n", + "Requirement already satisfied: cycler>=0.10 in ./test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab==1.0.0) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in ./test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab==1.0.0) (4.29.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in ./test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab==1.0.0) (1.3.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in ./test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab==1.0.0) (9.0.0)\n", + "Building wheels for collected packages: nomad-lab\n", + " Building wheel for nomad-lab (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for nomad-lab: filename=nomad_lab-1.0.0-py3-none-any.whl size=1857297 sha256=f9aa2475064d64f35fcbf95ba460155044efaaecb4901ac08ca275373f3406dd\n", + " Stored in directory: /home/cemm/.cache/pip/wheels/53/c9/cc/de44fd4f2ed2fc438c0461402d9516627538d926ad91ed8a89\n", + "Successfully built nomad-lab\n", + "Installing collected packages: pyasn1, rsa, numpy, ecdsa, typish, requests, python-jose, elasticsearch, pyyaml, pytz, python-keycloak, pydantic, Pint, orjson, nptyping, jmespath, fastentrypoints, elasticsearch-dsl, docstring-parser, cython, click, cachetools, ase, aniso8601, nomad-lab\n", + " Attempting uninstall: numpy\n", + " Found existing installation: numpy 1.21.5\n", + " Uninstalling numpy-1.21.5:\n", + " Successfully uninstalled numpy-1.21.5\n", + " Attempting uninstall: requests\n", + " Found existing installation: requests 2.27.1\n", + " Uninstalling requests-2.27.1:\n", + " Successfully uninstalled requests-2.27.1\n", + " Attempting uninstall: orjson\n", + " Found existing installation: orjson 3.6.6\n", + " Uninstalling orjson-3.6.6:\n", + " Successfully uninstalled orjson-3.6.6\n", + "Successfully installed Pint-0.17 aniso8601-7.0.0 ase-3.19.0 cachetools-4.2.4 click-7.1.2 cython-0.29.26 docstring-parser-0.12 ecdsa-0.17.0 elasticsearch-6.8.2 elasticsearch-dsl-6.4.0 fastentrypoints-0.12 jmespath-0.10.0 nomad-lab-1.0.0 nptyping-1.4.4 numpy-1.21.2 orjson-3.6.0 pyasn1-0.4.8 pydantic-1.8.2 python-jose-3.3.0 python-keycloak-0.26.1 pytz-2021.1 pyyaml-6.0 requests-2.26.0 rsa-4.8 typish-1.9.3\n" + ] + } + ], + "source": [ + "! pip list && pip install --upgrade pip && pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cloning into 'parser-nexus'...\n", + "remote: Enumerating objects: 1516, done.\u001b[K\n", + "remote: Counting objects: 100% (1516/1516), done.\u001b[K\n", + "remote: Compressing objects: 100% (780/780), done.\u001b[K\n", + "remote: Total 1516 (delta 911), reused 1253 (delta 652), pack-reused 0\u001b[K\n", + "Receiving objects: 100% (1516/1516), 3.24 MiB | 9.27 MiB/s, done.\n", + "Resolving deltas: 100% (911/911), done.\n", + "Submodule 'nexusparser/definitions' (https://github.com/FAIRmat-Experimental/nexus_definitions.git) registered for path 'nexusparser/definitions'\n", + "Cloning into '/home/cemm/NOMAD/parser-nexus/nexusparser/definitions'...\n", + "remote: Enumerating objects: 28146, done. \n", + "remote: Counting objects: 100% (1750/1750), done. \n", + "remote: Compressing objects: 100% (712/712), done. \n", + "remote: Total 28146 (delta 1371), reused 1327 (delta 1021), pack-reused 26396 \n", + "Receiving objects: 100% (28146/28146), 162.77 MiB | 9.10 MiB/s, done.\n", + "Resolving deltas: 100% (20535/20535), done.\n", + "Submodule path 'nexusparser/definitions': checked out '2798f71ea3099c3c20a2f7dc11b05074cc8fa8e3'\n", + "On branch yaml2nxdl\n", + "Your branch is up to date with 'origin/yaml2nxdl'.\n", + "\n", + "nothing to commit, working tree clean\n", + "Requirement already satisfied: click==7.1.2 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (7.1.2)\n", + "Requirement already satisfied: lxml==4.7.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (4.7.1)\n", + "Collecting mypy==0.730\n", + " Using cached mypy-0.730-cp37-cp37m-manylinux1_x86_64.whl (22.8 MB)\n", + "Collecting pylint==2.3.1\n", + " Using cached pylint-2.3.1-py3-none-any.whl (765 kB)\n", + "Collecting pylint_plugin_utils==0.5\n", + " Using cached pylint_plugin_utils-0.5-py3-none-any.whl\n", + "Collecting pycodestyle==2.8.0\n", + " Using cached pycodestyle-2.8.0-py2.py3-none-any.whl (42 kB)\n", + "Collecting pytest==3.10.0\n", + " Using cached pytest-3.10.0-py2.py3-none-any.whl (216 kB)\n", + "Collecting pytest-timeout==1.4.2\n", + " Using cached pytest_timeout-1.4.2-py2.py3-none-any.whl (10 kB)\n", + "Collecting pytest-cov==2.7.1\n", + " Using cached pytest_cov-2.7.1-py2.py3-none-any.whl (17 kB)\n", + "Collecting h5py==3.6.0\n", + " Using cached h5py-3.6.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.1 MB)\n", + "Collecting python-json-logger==2.0.2\n", + " Using cached python_json_logger-2.0.2-py3-none-any.whl (7.4 kB)\n", + "Collecting xarray==0.20.2\n", + " Using cached xarray-0.20.2-py3-none-any.whl (845 kB)\n", + "Collecting pyaml==21.10.1\n", + " Using cached pyaml-21.10.1-py2.py3-none-any.whl (24 kB)\n", + "Requirement already satisfied: numpy==1.21.2 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from -r requirements.txt (line 14)) (1.21.2)\n", + "Collecting pandas==1.3.5\n", + " Using cached pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.3 MB)\n", + "Collecting odfpy==1.4.1\n", + " Downloading odfpy-1.4.1.tar.gz (717 kB)\n", + " |████████████████████████████████| 717 kB 2.3 MB/s \n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25hRequirement already satisfied: ase==3.19.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from -r requirements.txt (line 17)) (3.19.0)\n", + "Collecting typed-ast<1.5.0,>=1.4.0\n", + " Using cached typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl (743 kB)\n", + "Requirement already satisfied: typing-extensions>=3.7.4 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from mypy==0.730->-r requirements.txt (line 3)) (4.0.1)\n", + "Collecting mypy-extensions<0.5.0,>=0.4.0\n", + " Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)\n", + "Collecting mccabe<0.7,>=0.6\n", + " Using cached mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)\n", + "Collecting isort<5,>=4.2.5\n", + " Using cached isort-4.3.21-py2.py3-none-any.whl (42 kB)\n", + "Collecting astroid<3,>=2.2.0\n", + " Using cached astroid-2.9.3-py3-none-any.whl (254 kB)\n", + "Collecting py>=1.5.0\n", + " Using cached py-1.11.0-py2.py3-none-any.whl (98 kB)\n", + "Collecting pluggy>=0.7\n", + " Using cached pluggy-1.0.0-py2.py3-none-any.whl (13 kB)\n", + "Requirement already satisfied: setuptools in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pytest==3.10.0->-r requirements.txt (line 7)) (44.0.0)\n", + "Requirement already satisfied: attrs>=17.4.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pytest==3.10.0->-r requirements.txt (line 7)) (21.4.0)\n", + "Collecting more-itertools>=4.0.0\n", + " Using cached more_itertools-8.12.0-py3-none-any.whl (54 kB)\n", + "Collecting atomicwrites>=1.0\n", + " Using cached atomicwrites-1.4.0-py2.py3-none-any.whl (6.8 kB)\n", + "Requirement already satisfied: six>=1.10.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pytest==3.10.0->-r requirements.txt (line 7)) (1.16.0)\n", + "Collecting coverage>=4.4\n", + " Downloading coverage-6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (207 kB)\n", + " |████████████████████████████████| 207 kB 9.6 MB/s \n", + "\u001b[?25hRequirement already satisfied: cached-property in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from h5py==3.6.0->-r requirements.txt (line 10)) (1.5.2)\n", + "Requirement already satisfied: importlib-metadata in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from xarray==0.20.2->-r requirements.txt (line 12)) (4.10.1)\n", + "Requirement already satisfied: PyYAML in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pyaml==21.10.1->-r requirements.txt (line 13)) (6.0)\n", + "Requirement already satisfied: pytz>=2017.3 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pandas==1.3.5->-r requirements.txt (line 15)) (2021.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pandas==1.3.5->-r requirements.txt (line 15)) (2.8.2)\n", + "Requirement already satisfied: defusedxml in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from odfpy==1.4.1->-r requirements.txt (line 16)) (0.7.1)\n", + "Requirement already satisfied: matplotlib in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from ase==3.19.0->-r requirements.txt (line 17)) (3.5.1)\n", + "Requirement already satisfied: scipy in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from ase==3.19.0->-r requirements.txt (line 17)) (1.7.3)\n", + "Collecting lazy-object-proxy>=1.4.0\n", + " Using cached lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (57 kB)\n", + "Requirement already satisfied: wrapt<1.14,>=1.11 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from astroid<3,>=2.2.0->pylint==2.3.1->-r requirements.txt (line 4)) (1.13.3)\n", + "Requirement already satisfied: zipp>=0.5 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from importlib-metadata->xarray==0.20.2->-r requirements.txt (line 12)) (3.7.0)\n", + "Requirement already satisfied: cycler>=0.10 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->-r requirements.txt (line 17)) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->-r requirements.txt (line 17)) (4.29.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->-r requirements.txt (line 17)) (9.0.0)\n", + "Requirement already satisfied: packaging>=20.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->-r requirements.txt (line 17)) (21.3)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->-r requirements.txt (line 17)) (3.0.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->-r requirements.txt (line 17)) (1.3.2)\n", + "Building wheels for collected packages: odfpy\n", + " Building wheel for odfpy (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for odfpy: filename=odfpy-1.4.1-py2.py3-none-any.whl size=160692 sha256=41dfa89fa978a3ae5f0513c823e3cb8117c7d0a479d3273dc3a82f14008c90ea\n", + " Stored in directory: /home/cemm/.cache/pip/wheels/e2/f4/5d/a68c656235d33455a1d0f78e877acddfa006907a6d52d7e6ee\n", + "Successfully built odfpy\n", + "Installing collected packages: typed-ast, lazy-object-proxy, py, pluggy, more-itertools, mccabe, isort, atomicwrites, astroid, pytest, pylint, pandas, mypy-extensions, coverage, xarray, python-json-logger, pytest-timeout, pytest-cov, pylint-plugin-utils, pycodestyle, pyaml, odfpy, mypy, h5py\n", + " Attempting uninstall: h5py\n", + " Found existing installation: h5py 3.5.0\n", + " Uninstalling h5py-3.5.0:\n", + " Successfully uninstalled h5py-3.5.0\n", + "Successfully installed astroid-2.9.3 atomicwrites-1.4.0 coverage-6.3 h5py-3.6.0 isort-4.3.21 lazy-object-proxy-1.7.1 mccabe-0.6.1 more-itertools-8.12.0 mypy-0.730 mypy-extensions-0.4.3 odfpy-1.4.1 pandas-1.3.5 pluggy-1.0.0 py-1.11.0 pyaml-21.10.1 pycodestyle-2.8.0 pylint-2.3.1 pylint-plugin-utils-0.5 pytest-3.10.0 pytest-cov-2.7.1 pytest-timeout-1.4.2 python-json-logger-2.0.2 typed-ast-1.4.3 xarray-0.20.2\n" + ] + } + ], + "source": [ + "! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --branch yaml2nxdl --recursive parser-nexus && cd parser-nexus && git status && pip install -r requirements.txt\n", + "# once yaml2nxdl was merged with master\n", + "# ! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive parser-nexus && cd parser-nexus && git status && pip install -r requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! cd parser-nexus && git status && git pull && pip install -r requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Obtaining file:///home/cemm/NOMAD/parser-nexus\n", + " Preparing metadata (setup.py) ... \u001b[?25ldone\n", + "\u001b[33mWARNING: nexusparser 1.0 does not provide the extra 'all'\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: click in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nexusparser==1.0) (7.1.2)\n", + "Requirement already satisfied: h5py in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nexusparser==1.0) (3.6.0)\n", + "Requirement already satisfied: lxml in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nexusparser==1.0) (4.7.1)\n", + "Requirement already satisfied: nomad-lab in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nexusparser==1.0) (1.0.0)\n", + "Requirement already satisfied: numpy>=1.14.5 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from h5py->nexusparser==1.0) (1.21.2)\n", + "Requirement already satisfied: cached-property in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from h5py->nexusparser==1.0) (1.5.2)\n", + "Requirement already satisfied: pydantic==1.8.2 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (1.8.2)\n", + "Requirement already satisfied: aniso8601==7.0.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (7.0.0)\n", + "Requirement already satisfied: cython>=0.19 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.29.26)\n", + "Requirement already satisfied: nptyping==1.4.4 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (1.4.4)\n", + "Requirement already satisfied: python-keycloak==0.26.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.26.1)\n", + "Requirement already satisfied: cachetools==4.2.4 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (4.2.4)\n", + "Requirement already satisfied: pyyaml==6.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (6.0)\n", + "Requirement already satisfied: future==0.18.2 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.18.2)\n", + "Requirement already satisfied: pip in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (21.3.1)\n", + "Requirement already satisfied: docstring-parser==0.12 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.12)\n", + "Requirement already satisfied: jmespath==0.10.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.10.0)\n", + "Requirement already satisfied: fastentrypoints==0.12 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.12)\n", + "Requirement already satisfied: requests==2.26.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (2.26.0)\n", + "Requirement already satisfied: pytz==2021.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (2021.1)\n", + "Requirement already satisfied: orjson==3.6.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (3.6.0)\n", + "Requirement already satisfied: wheel in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.34.2)\n", + "Requirement already satisfied: Pint==0.17 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (0.17)\n", + "Requirement already satisfied: ase==3.19.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (3.19.0)\n", + "Requirement already satisfied: elasticsearch-dsl==6.4.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nomad-lab->nexusparser==1.0) (6.4.0)\n", + "Requirement already satisfied: matplotlib in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from ase==3.19.0->nomad-lab->nexusparser==1.0) (3.5.1)\n", + "Requirement already satisfied: scipy in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from ase==3.19.0->nomad-lab->nexusparser==1.0) (1.7.3)\n", + "Requirement already satisfied: python-dateutil in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from elasticsearch-dsl==6.4.0->nomad-lab->nexusparser==1.0) (2.8.2)\n", + "Requirement already satisfied: six in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from elasticsearch-dsl==6.4.0->nomad-lab->nexusparser==1.0) (1.16.0)\n", + "Requirement already satisfied: elasticsearch<7.0.0,>=6.0.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from elasticsearch-dsl==6.4.0->nomad-lab->nexusparser==1.0) (6.8.2)\n", + "Requirement already satisfied: typish>=1.7.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from nptyping==1.4.4->nomad-lab->nexusparser==1.0) (1.9.3)\n", + "Requirement already satisfied: importlib-metadata in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from Pint==0.17->nomad-lab->nexusparser==1.0) (4.10.1)\n", + "Requirement already satisfied: packaging in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from Pint==0.17->nomad-lab->nexusparser==1.0) (21.3)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from pydantic==1.8.2->nomad-lab->nexusparser==1.0) (4.0.1)\n", + "Requirement already satisfied: python-jose>=1.4.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from python-keycloak==0.26.1->nomad-lab->nexusparser==1.0) (3.3.0)\n", + "Requirement already satisfied: charset-normalizer~=2.0.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab->nexusparser==1.0) (2.0.10)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab->nexusparser==1.0) (1.26.8)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab->nexusparser==1.0) (3.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from requests==2.26.0->nomad-lab->nexusparser==1.0) (2021.10.8)\n", + "Requirement already satisfied: rsa in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from python-jose>=1.4.0->python-keycloak==0.26.1->nomad-lab->nexusparser==1.0) (4.8)\n", + "Requirement already satisfied: pyasn1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from python-jose>=1.4.0->python-keycloak==0.26.1->nomad-lab->nexusparser==1.0) (0.4.8)\n", + "Requirement already satisfied: ecdsa!=0.15 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from python-jose>=1.4.0->python-keycloak==0.26.1->nomad-lab->nexusparser==1.0) (0.17.0)\n", + "Requirement already satisfied: zipp>=0.5 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from importlib-metadata->Pint==0.17->nomad-lab->nexusparser==1.0) (3.7.0)\n", + "Requirement already satisfied: cycler>=0.10 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab->nexusparser==1.0) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab->nexusparser==1.0) (4.29.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab->nexusparser==1.0) (9.0.0)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab->nexusparser==1.0) (3.0.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages (from matplotlib->ase==3.19.0->nomad-lab->nexusparser==1.0) (1.3.2)\n", + "Installing collected packages: nexusparser\n", + " Running setup.py develop for nexusparser\n", + "Successfully installed nexusparser-1.0\n", + "grep: nomad-parser-nexus: Is a directory\n", + "ERROR: Pipe to stdout was broken\n", + "Exception ignored in: <_io.TextIOWrapper name='' mode='w' encoding='UTF-8'>\n", + "BrokenPipeError: [Errno 32] Broken pipe\n", + "nexusformat 0.7.3\n", + "nexusparser 1.0 /home/cemm/NOMAD/parser-nexus\n" + ] + } + ], + "source": [ + "! cd parser-nexus && pip install -e .[all]\n", + "! pip list | grep nomad*\n", + "! pip list | grep nexus*" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m============================= test session starts ==============================\u001b[0m\n", + "platform linux -- Python 3.7.12, pytest-3.10.0, py-1.11.0, pluggy-1.0.0 -- /home/cemm/NOMAD/test/.py37env/bin/python\n", + "cachedir: .pytest_cache\n", + "rootdir: /home/cemm/NOMAD/parser-nexus, inifile:\n", + "plugins: timeout-1.4.2, anyio-3.5.0, cov-2.7.1\n", + "collected 56 items \u001b[0m\u001b[1m\n", + "\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.name-nexus_base_classes] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXobject.name-NXobject] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.nx_kind-group] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.defaultAttribute.nx_value.type-str] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.nx_attribute_default-*] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.NXdataGroup-*] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXdetector.real_timeField-*] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.NXdataGroup.nx_optional-True] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.nx_group_DATA.section_def.nx_kind-group] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.nx_group_DATA.section_def.nx_optional-True] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXentry.nx_group_DATA.section_def.nx_name.type-str] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXdetector.real_timeField.name-real_timeField] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXdetector.real_timeField.nx_type-NX_NUMBER] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXdetector.real_timeField.nx_units-NX_TIME] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXdetector.real_timeField.nx_unit-*] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[BASE_CLASSES.NXdetector.real_timeField.nx_value-*] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_assert_nexus_metainfo[APPLICATIONS.NXarpes.NXentryGroup.NXdataGroup.nx_optional-False] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_use_nexus_metainfo \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_use_nexus_metainfo_reflectivly[field] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_use_nexus_metainfo_reflectivly[attribute] \u001b[32mPASSED\u001b[0m\n", + "tests/test_nexus.py::test_get_nexus_classes_units_attributes \u001b[32mPASSED\u001b[0m\n", + "tests/test_parser.py::test_nexus Testing of nexus.py is SUCCESSFUL.\n", + "\u001b[32mPASSED\u001b[0m\n", + "tests/test_parser.py::test_example INFO: Hello NeXus World\n", + "INFO: ===== GROUP (//entry [NXarpes::/NXentry]): \n", + "INFO: /NXentry\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry@NX_class)\n", + "INFO: value: NXentry \n", + "INFO: /NXentry\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/collection_time): \n", + "INFO: value: 7200 \n", + "INFO: /NXentry\n", + "INFO: /collection_time [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.collection_time - 7200\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/collection_time@units)\n", + "INFO: value: s \n", + "INFO: /NXentry\n", + "INFO: /collection_time\n", + "INFO: @units [NX_TIME]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.collection_time.units - s\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/data [NXarpes::/NXentry/NXdata]): \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/data@NX_class)\n", + "INFO: value: NXdata \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/data@axes)\n", + "INFO: value: ['angles' 'energies' 'delays'] \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: @axes - [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.axes - ['angles' 'energies' 'delays']\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/data@signal)\n", + "INFO: value: data \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: @signal - [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.signal - data\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/data/angles): \n", + "INFO: value: [-1.96735314 -1.91500657 -1.86266001 -1.81031344 -1.75796688 -1.70562031 ...\n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /angles [NX_NUMBER]\n", + "INFO: <>\n", + "INFO: Dataset referenced as NXdata AXIS #0\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.VARIABLE - [-1.96735314 -1.91500657 -1.86266001 -1.81031344 -1.75796688 -1.70562031...\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/data/angles@target)\n", + "INFO: value: /entry/instrument/analyser/angles \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /angles\n", + "INFO: @target - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/data/angles@units)\n", + "INFO: value: 1/Å \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /angles\n", + "INFO: @units - REQUIRED, but undefined unit category\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.VARIABLE.units - 1/Å\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/data/data): \n", + "INFO: value: [[0. 0. 0. ... 0. 0. 0.] ...\n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /data [NX_NUMBER]\n", + "INFO: <>\n", + "INFO: Dataset referenced as NXdata SIGNAL\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.DATA - [[0. 0. 0. ... 0. 0. 0.]...\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/data/data@target)\n", + "INFO: value: /entry/instrument/analyser/data \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /data\n", + "INFO: @target - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/data/data@units)\n", + "INFO: value: counts \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /data\n", + "INFO: @units - REQUIRED, but undefined unit category\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.DATA.units - counts\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/data/delays): \n", + "INFO: value: [-1.1 -1.08041237 -1.06082474 -1.04123711 -1.02164948 -1.00206186 ...\n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /delays [NX_NUMBER]\n", + "INFO: <>\n", + "INFO: Dataset referenced as NXdata AXIS #2\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.VARIABLE - [-1.1 -1.08041237 -1.06082474 -1.04123711 -1.02164948 -1.00206186...\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/data/delays@target)\n", + "INFO: value: /entry/instrument/analyser/delays \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /delays\n", + "INFO: @target - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/data/delays@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /delays\n", + "INFO: @units - REQUIRED, but undefined unit category\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.VARIABLE.units - fs\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/data/energies): \n", + "INFO: value: [ 2.5 2.46917808 2.43835616 2.40753425 2.37671233 2.34589041 ...\n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /energies [NX_NUMBER]\n", + "INFO: <>\n", + "INFO: Dataset referenced as NXdata AXIS #1\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.VARIABLE - [ 2.5 2.46917808 2.43835616 2.40753425 2.37671233 2.34589041...\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/data/energies@target)\n", + "INFO: value: /entry/instrument/analyser/energies \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /energies\n", + "INFO: @target - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/data/energies@units)\n", + "INFO: value: eV \n", + "INFO: /NXentry\n", + "INFO: /NXdata\n", + "INFO: /energies\n", + "INFO: @units - REQUIRED, but undefined unit category\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.DATA.VARIABLE.units - eV\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/definition): \n", + "INFO: value: b'NXarpes' \n", + "INFO: /NXentry\n", + "INFO: /definition [NX_CHAR]\n", + "INFO: <>\n", + "INFO: enumeration:\n", + "INFO: -> NXarpes\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.definition - b'NXarpes'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/duration): \n", + "INFO: value: 7200 \n", + "INFO: /NXentry\n", + "INFO: /duration [NX_INT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.duration - 7200\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/duration@units)\n", + "INFO: value: s \n", + "INFO: /NXentry\n", + "INFO: /duration\n", + "INFO: @units [NX_TIME]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.duration.units - s\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/end_time): \n", + "INFO: value: b'2018-05-01T09:22:00+02:00' \n", + "INFO: /NXentry\n", + "INFO: /end_time [NX_DATE_TIME]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.end_time - b'2018-05-01T09:22:00+02:00'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/entry_identifier): \n", + "INFO: value: b'Run 22118' \n", + "INFO: /NXentry\n", + "INFO: /entry_identifier [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.entry_identifier - b'Run 22118'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/experiment_identifier): \n", + "INFO: value: b'F-20170538' \n", + "INFO: /NXentry\n", + "INFO: /experiment_identifier [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.experiment_identifier - b'F-20170538'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/instrument [NXarpes::/NXentry/NXinstrument]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument@NX_class)\n", + "INFO: value: NXinstrument \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== GROUP (//entry/instrument/analyser [NXarpes::/NXentry/NXinstrument/NXdetector]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/analyser@NX_class)\n", + "INFO: value: NXdetector \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/acquisition_mode): \n", + "INFO: value: b'fixed' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /acquisition_mode [NX_CHAR]\n", + "INFO: <>\n", + "INFO: enumeration:\n", + "INFO: -> gated\n", + "INFO: -> triggered\n", + "INFO: -> summed\n", + "INFO: -> event\n", + "INFO: -> histogrammed\n", + "INFO: -> decimated\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.DETECTOR.acquisition_mode - b'fixed'\n", + "Problem with storage!!!The value fixed is not an enum value for quantity nexus_base_classes.NXdetector.acquisition_modeField.nx_value:Quantity.\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/amplifier_type): \n", + "INFO: value: b'MCP' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /amplifier_type - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/contrast_aperture): \n", + "INFO: value: b'Out' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /contrast_aperture - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/detector_type): \n", + "INFO: value: b'DLD' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /detector_type - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/dispersion_scheme): \n", + "INFO: value: b'Time of flight' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /dispersion_scheme - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/entrance_slit_setting): \n", + "INFO: value: 0 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /entrance_slit_setting - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/entrance_slit_shape): \n", + "INFO: value: b'straight' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /entrance_slit_shape - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/entrance_slit_size): \n", + "INFO: value: 750 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /entrance_slit_size - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/entrance_slit_size@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /entrance_slit_size - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/extractor_voltage): \n", + "INFO: value: 6030 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /extractor_voltage - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/extractor_voltage@units)\n", + "INFO: value: V \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /extractor_voltage - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/field_aperture_x): \n", + "INFO: value: -0.2 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /field_aperture_x - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/field_aperture_x@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /field_aperture_x - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/field_aperture_y): \n", + "INFO: value: 5.35 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /field_aperture_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/field_aperture_y@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /field_aperture_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/lens_mode): \n", + "INFO: value: b'20180430_KPEEM_M_-2.5_FoV6.2_rezAA_20ToF_focused.sav' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /lens_mode - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/magnification): \n", + "INFO: value: -1.5 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /magnification - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/pass_energy): \n", + "INFO: value: 20 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /pass_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/pass_energy@units)\n", + "INFO: value: eV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /pass_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/projection): \n", + "INFO: value: b'reciprocal' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /projection - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/region_origin): \n", + "INFO: value: [0 0] \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /region_origin - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/region_size): \n", + "INFO: value: [ 80 146] \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /region_size - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/sensor_count): \n", + "INFO: value: 4 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /sensor_count - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/sensor_size): \n", + "INFO: value: [ 80 146] \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /sensor_size - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/analyser/time_per_channel): \n", + "INFO: value: 7200 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /time_per_channel - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/time_per_channel@units)\n", + "INFO: value: s \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /time_per_channel - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/analyser/working_distance): \n", + "INFO: value: 4 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /working_distance - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/analyser/working_distance@units)\n", + "INFO: value: mm \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXdetector\n", + "INFO: /working_distance - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== GROUP (//entry/instrument/beam_probe_0 [NXarpes::/NXentry/NXinstrument/NXbeam]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0@NX_class)\n", + "INFO: value: NXbeam \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/distance): \n", + "INFO: value: 0 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /distance [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.BEAM.distance - 0\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0/distance@units)\n", + "INFO: value: cm \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /distance\n", + "INFO: @units [NX_LENGTH]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.BEAM.distance.units - cm\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/photon_energy): \n", + "INFO: value: 36.49699020385742 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /photon_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0/photon_energy@units)\n", + "INFO: value: eV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /photon_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/polarization_angle): \n", + "INFO: value: 0.0 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /polarization_angle - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0/polarization_angle@units)\n", + "INFO: value: deg \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /polarization_angle - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/polarization_ellipticity): \n", + "INFO: value: 0.0 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /polarization_ellipticity - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/pulse_duration): \n", + "INFO: value: 70 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /pulse_duration - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0/pulse_duration@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /pulse_duration - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/size_x): \n", + "INFO: value: 500 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_x - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0/size_x@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_x - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_probe_0/size_y): \n", + "INFO: value: 200 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_probe_0/size_y@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== GROUP (//entry/instrument/beam_pump_0 [NXarpes::/NXentry/NXinstrument/NXbeam]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0@NX_class)\n", + "INFO: value: NXbeam \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/average_power): \n", + "INFO: value: 6.21289 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /average_power - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/average_power@units)\n", + "INFO: value: uW \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /average_power - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/center_wavelength): \n", + "INFO: value: 800 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /center_wavelength - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/center_wavelength@units)\n", + "INFO: value: nm \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /center_wavelength - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/distance): \n", + "INFO: value: 0 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /distance [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.BEAM.distance - 0\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/distance@units)\n", + "INFO: value: cm \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /distance\n", + "INFO: @units [NX_LENGTH]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.BEAM.distance.units - cm\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/fluence): \n", + "INFO: value: 5 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /fluence - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/fluence@units)\n", + "INFO: value: mJ/cm^2 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /fluence - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/photon_energy): \n", + "INFO: value: 1.55 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /photon_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/photon_energy@units)\n", + "INFO: value: eV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /photon_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/polarization_angle): \n", + "INFO: value: nan \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /polarization_angle - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/polarization_angle@units)\n", + "INFO: value: deg \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /polarization_angle - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/polarization_ellipticity): \n", + "INFO: value: -1.0 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /polarization_ellipticity - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/pulse_duration): \n", + "INFO: value: 50 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /pulse_duration - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/pulse_duration@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /pulse_duration - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/pulse_energy): \n", + "INFO: value: 1.24258 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /pulse_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/pulse_energy@units)\n", + "INFO: value: nJ \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /pulse_energy - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/size_x): \n", + "INFO: value: 500 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_x - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/size_x@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_x - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/beam_pump_0/size_y): \n", + "INFO: value: 200 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/beam_pump_0/size_y@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXbeam\n", + "INFO: /size_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/energy_resolution): \n", + "INFO: value: 100 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /energy_resolution - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/energy_resolution@units)\n", + "INFO: value: meV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /energy_resolution - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== GROUP (//entry/instrument/manipulator [NXarpes::/NXentry/NXinstrument/NXpositioner]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator@NX_class)\n", + "INFO: value: NXpositioner \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/pos_x1): \n", + "INFO: value: 11.3 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_x1 - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/pos_x1@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_x1 - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/pos_x2): \n", + "INFO: value: 11.3 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_x2 - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/pos_x2@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_x2 - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/pos_y): \n", + "INFO: value: 7.2 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/pos_y@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_y - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/pos_z1): \n", + "INFO: value: 20.77 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_z1 - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/pos_z1@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_z1 - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/pos_z2): \n", + "INFO: value: 21.2 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_z2 - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/pos_z2@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_z2 - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/pos_z3): \n", + "INFO: value: 20.22 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_z3 - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/pos_z3@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /pos_z3 - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/sample_bias): \n", + "INFO: value: 29 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /sample_bias - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/sample_bias@target)\n", + "INFO: value: /entry/instrument/manipulator/sample_bias \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /sample_bias - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/sample_bias@units)\n", + "INFO: value: V \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /sample_bias - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/sample_temperature): \n", + "INFO: value: 300 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /sample_temperature - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/sample_temperature@target)\n", + "INFO: value: /entry/instrument/manipulator/sample_temperature \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /sample_temperature - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/instrument/manipulator/sample_temperature@units)\n", + "INFO: value: K \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /sample_temperature - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/manipulator/type): \n", + "INFO: value: b'Hexapod' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXpositioner\n", + "INFO: /type - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/instrument/monochromator [NXarpes::/NXentry/NXinstrument/NXmonochromator]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/monochromator@NX_class)\n", + "INFO: value: NXmonochromator \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/monochromator/energy): \n", + "INFO: value: 36.49699020385742 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /energy [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.MONOCHROMATOR.energy - 36.49699020385742\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/monochromator/energy@units)\n", + "INFO: value: eV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /energy\n", + "INFO: @units [NX_ENERGY]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.MONOCHROMATOR.energy.units - eV\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/monochromator/energy_error): \n", + "INFO: value: 0.21867309510707855 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /energy_error [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: DEPRECATED - see https://github.com/nexusformat/definitions/issues/820\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.MONOCHROMATOR.energy_error - 0.21867309510707855\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/monochromator/energy_error@units)\n", + "INFO: value: eV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /energy_error\n", + "INFO: @units [NX_ENERGY]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.MONOCHROMATOR.energy_error.units - eV\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/instrument/monochromator/slit [NXarpes::/NXentry/NXinstrument/NXmonochromator/NXslit]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /NXslit - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== ATTRS (//entry/instrument/monochromator/slit@NX_class)\n", + "INFO: value: NXslit \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /NXslit - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/monochromator/slit/y_gap): \n", + "INFO: value: 2000.04833984375 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /NXslit - IS NOT IN SCHEMA\n", + "INFO: /y_gap - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/monochromator/slit/y_gap@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXmonochromator\n", + "INFO: /NXslit - IS NOT IN SCHEMA\n", + "INFO: /y_gap - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/name): \n", + "INFO: value: b'HEXTOF @ PG-2, Flash' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /name [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.name - b'HEXTOF @ PG-2, Flash'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/instrument/source [NXarpes::/NXentry/NXinstrument/NXsource]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/source@NX_class)\n", + "INFO: value: NXsource \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source/bunch_distance): \n", + "INFO: value: 1 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_distance [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_distance - 1\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/bunch_distance@units)\n", + "INFO: value: us \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_distance\n", + "INFO: @units [NX_TIME]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_distance.units - us\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/bunch_length): \n", + "INFO: value: 100 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_length [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_length - 100\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/bunch_length@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_length\n", + "INFO: @units [NX_TIME]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_length.units - fs\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/burst_distance): \n", + "INFO: value: 199.5 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_distance - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/burst_distance@units)\n", + "INFO: value: ms \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_distance - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source/burst_length): \n", + "INFO: value: 500 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_length - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/burst_length@units)\n", + "INFO: value: us \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_length - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source/burst_number_end): \n", + "INFO: value: 102680129 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_number_end - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/burst_number_start): \n", + "INFO: value: 102644001 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_number_start - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/current): \n", + "INFO: value: 1 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /current [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.current - 1\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/current@units)\n", + "INFO: value: uA \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /current\n", + "INFO: @units [NX_CURRENT]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.current.units - uA\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/energy): \n", + "INFO: value: 427 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /energy [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.energy - 427\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/energy@units)\n", + "INFO: value: MeV \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /energy\n", + "INFO: @units [NX_ENERGY]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.energy.units - MeV\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/frequency): \n", + "INFO: value: 10 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /frequency [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.frequency - 10\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source/frequency@units)\n", + "INFO: value: Hz \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /frequency\n", + "INFO: @units [NX_FREQUENCY]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.frequency.units - Hz\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/mode): \n", + "INFO: value: b'Burst' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /mode [NX_CHAR]\n", + "INFO: <>\n", + "INFO: enumeration:\n", + "INFO: -> Single Bunch\n", + "INFO: -> Multi Bunch\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.mode - b'Burst'\n", + "Problem with storage!!!The value Burst is not an enum value for quantity nexus_base_classes.NXsource.modeField.nx_value:Quantity.\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/name): \n", + "INFO: value: b'FLASH' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /name [NX_CHAR]\n", + "INFO: <>\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.name - b'FLASH'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/number_of_bunches): \n", + "INFO: value: 500 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /number_of_bunches [NX_INT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.number_of_bunches - 500\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/number_of_bursts): \n", + "INFO: value: 1 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /number_of_bursts - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/probe): \n", + "INFO: value: b'x-ray' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /probe [NX_CHAR]\n", + "INFO: <>\n", + "INFO: enumeration:\n", + "INFO: -> x-ray\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.probe - b'x-ray'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/top_up): \n", + "INFO: value: True \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /top_up [NX_BOOLEAN]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.top_up - True\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source/type): \n", + "INFO: value: b'Free Electron Laser' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /type [NX_CHAR]\n", + "INFO: <>\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.type - b'Free Electron Laser'\n", + "Problem with storage!!!The value Free Electron Laser is not an enum value for quantity nexus_applications.NXarpes.NXentryGroup.NXinstrumentGroup.NXsourceGroup.typeField.nx_value:Quantity.\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/instrument/source_pump [NXarpes::/NXentry/NXinstrument/NXsource]): \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump@NX_class)\n", + "INFO: value: NXsource \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source_pump/bunch_distance): \n", + "INFO: value: 1 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_distance [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_distance - 1\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump/bunch_distance@units)\n", + "INFO: value: us \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_distance\n", + "INFO: @units [NX_TIME]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_distance.units - us\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/bunch_length): \n", + "INFO: value: 50 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_length [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_length - 50\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump/bunch_length@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /bunch_length\n", + "INFO: @units [NX_TIME]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.bunch_length.units - fs\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/burst_distance): \n", + "INFO: value: 199.6 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_distance - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump/burst_distance@units)\n", + "INFO: value: ms \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_distance - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source_pump/burst_length): \n", + "INFO: value: 400 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_length - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump/burst_length@units)\n", + "INFO: value: us \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /burst_length - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source_pump/frequency): \n", + "INFO: value: 10 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /frequency [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.frequency - 10\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump/frequency@units)\n", + "INFO: value: Hz \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /frequency\n", + "INFO: @units [NX_FREQUENCY]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.frequency.units - Hz\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/mode): \n", + "INFO: value: b'Burst' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /mode [NX_CHAR]\n", + "INFO: <>\n", + "INFO: enumeration:\n", + "INFO: -> Single Bunch\n", + "INFO: -> Multi Bunch\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.mode - b'Burst'\n", + "Problem with storage!!!The value Burst is not an enum value for quantity nexus_base_classes.NXsource.modeField.nx_value:Quantity.\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/name): \n", + "INFO: value: b'User Laser @ FLASH' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /name [NX_CHAR]\n", + "INFO: <>\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.name - b'User Laser @ FLASH'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/number_of_bunches): \n", + "INFO: value: 400 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /number_of_bunches [NX_INT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.number_of_bunches - 400\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/number_of_bursts): \n", + "INFO: value: 1 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /number_of_bursts - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/probe): \n", + "INFO: value: b'NIR' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /probe [NX_CHAR]\n", + "INFO: <>\n", + "INFO: enumeration:\n", + "INFO: -> x-ray\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.probe - b'NIR'\n", + "Problem with storage!!!The value NIR is not an enum value for quantity nexus_applications.NXarpes.NXentryGroup.NXinstrumentGroup.NXsourceGroup.probeField.nx_value:Quantity.\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/source_pump/rms_jitter): \n", + "INFO: value: 204.68816194453154 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /rms_jitter - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/source_pump/rms_jitter@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /rms_jitter - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/source_pump/type): \n", + "INFO: value: b'OPCPA' \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /NXsource\n", + "INFO: /type [NX_CHAR]\n", + "INFO: <>\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.INSTRUMENT.SOURCE.type - b'OPCPA'\n", + "Problem with storage!!!The value OPCPA is not an enum value for quantity nexus_applications.NXarpes.NXentryGroup.NXinstrumentGroup.NXsourceGroup.typeField.nx_value:Quantity.\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/instrument/spatial_resolution): \n", + "INFO: value: 500 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /spatial_resolution - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/spatial_resolution@units)\n", + "INFO: value: um \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /spatial_resolution - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/instrument/temporal_resolution): \n", + "INFO: value: 100 \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /temporal_resolution - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/instrument/temporal_resolution@units)\n", + "INFO: value: fs \n", + "INFO: /NXentry\n", + "INFO: /NXinstrument\n", + "INFO: /temporal_resolution - IS NOT IN SCHEMA\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/run_cycle): \n", + "INFO: value: b'2018 User Run Block 2' \n", + "INFO: /NXentry\n", + "INFO: /run_cycle [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.run_cycle - b'2018 User Run Block 2'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== GROUP (//entry/sample [NXarpes::/NXentry/NXsample]): \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: <>\n", + "INFO: doc\n", + "INFO: ===== ATTRS (//entry/sample@NX_class)\n", + "INFO: value: NXsample \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: @NX_class [NX_CHAR]\n", + "INFO: \n", + "INFO: ===== FIELD (//entry/sample/chem_id_cas): \n", + "INFO: value: b'12067-46-8' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /chem_id_cas - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/chemical_name): \n", + "INFO: value: b'Tungsten diselenide' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /chemical_name - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/growth_method): \n", + "INFO: value: b'Chemical Vapor Deposition' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /growth_method - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/layer): \n", + "INFO: value: b'bulk' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /layer - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/name): \n", + "INFO: value: b'WSe2' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /name [NX_CHAR]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.SAMPLE.name - b'WSe2'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/preparation_method): \n", + "INFO: value: b'in-vacuum cleave' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /preparation_method - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/pressure): \n", + "INFO: value: 3.27e-10 \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /pressure [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.SAMPLE.pressure - 3.27e-10\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/sample/pressure@units)\n", + "INFO: value: mbar \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /pressure\n", + "INFO: @units [NX_PRESSURE]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.SAMPLE.pressure.units - mbar\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/purity): \n", + "INFO: value: 0.999 \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /purity - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/state): \n", + "INFO: value: b'monocrystalline solid' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /state - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/surface_orientation): \n", + "INFO: value: b'0001' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /surface_orientation - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/thickness): \n", + "INFO: value: 0.5 \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /thickness [NX_FLOAT]\n", + "INFO: <>\n", + "INFO: doc\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.SAMPLE.thickness - 0.5\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== ATTRS (//entry/sample/thickness@units)\n", + "INFO: value: mm \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /thickness\n", + "INFO: @units [NX_LENGTH]\n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.SAMPLE.thickness.units - mm\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/sample/vendor): \n", + "INFO: value: b'HQ Graphene' \n", + "INFO: /NXentry\n", + "INFO: /NXsample\n", + "INFO: /vendor - IS NOT IN SCHEMA\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NOT IN SCHEMA - skipped\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/start_time): \n", + "INFO: value: b'2018-05-01T07:22:00+02:00' \n", + "INFO: /NXentry\n", + "INFO: /start_time [NX_DATE_TIME]\n", + "INFO: <>\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.start_time - b'2018-05-01T07:22:00+02:00'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ===== FIELD (//entry/title): \n", + "INFO: value: b'Excited-state dynamics of WSe2 in the Valence Band and Core-Levels' \n", + "INFO: /NXentry\n", + "INFO: /title [NX_CHAR]\n", + "INFO: <>\n", + "INFO: \n", + "%%%%%%%%%%%%%%\n", + "NXarpes:NXarpes.ENTRY.title - b'Excited-state dynamics of WSe2 in the Valence Band and Core-Levels'\n", + "%%%%%%%%%%%%%%\n", + "INFO: ========================\n", + "INFO: === Default Plotable ===\n", + "INFO: ========================\n", + "INFO: No NXentry has been found\n", + "\u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_convert.py::test_get_reader \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_convert.py::test_get_names_of_all_readers \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_convert.py::test_cli[generate-template] {\n", + " \"/ENTRY[entry]/NXODD_name/bool_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/char_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/date_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/float_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/float_value/@units\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/int_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/int_value/@units\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/posint_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/posint_value/@units\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/type\": \"None\",\n", + " \"/ENTRY[entry]/definition\": \"None\",\n", + " \"/ENTRY[entry]/definition/@version\": \"None\",\n", + " \"/ENTRY[entry]/optional_parent/optional_child\": \"None\",\n", + " \"/ENTRY[entry]/optional_parent/required_child\": \"None\",\n", + " \"/ENTRY[entry]/program_name\": \"None\"\n", + "}\n", + "INFO: {\n", + " \"/ENTRY[entry]/NXODD_name/bool_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/char_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/date_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/float_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/float_value/@units\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/int_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/int_value/@units\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/posint_value\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/posint_value/@units\": \"None\",\n", + " \"/ENTRY[entry]/NXODD_name/type\": \"None\",\n", + " \"/ENTRY[entry]/definition\": \"None\",\n", + " \"/ENTRY[entry]/definition/@version\": \"None\",\n", + " \"/ENTRY[entry]/optional_parent/optional_child\": \"None\",\n", + " \"/ENTRY[entry]/optional_parent/required_child\": \"None\",\n", + " \"/ENTRY[entry]/program_name\": \"None\"\n", + "}\n", + "\u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_convert.py::test_cli[nxdl-not-provided] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_convert.py::test_cli[input-file] Using example reader to convert the given files: \n", + "• test_input \n", + "INFO: Using example reader to convert the given files: \n", + "• test_input \n", + "\u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[string-instead-of-int] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[string-instead-of-bool] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[negative-posint] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[int-instead-of-chars] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[empty-optional-field] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[empty-required-field] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[UTC-with-+00:00] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[UTC-with-Z] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[UTC-with--00:00] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[lists] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[wrong-enum-choice] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[atleast-one-required-child-not-provided-optional-parent] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[no-child-provided-optional-parent] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_validate_data_dict[valid-data-dict] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_path_in_data_dict[path-exists-in-dict] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_helpers.py::test_path_in_data_dict[path-does-not-exist-in-dict] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_if_readers_are_children_of_base_reader[ExampleReader] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_if_readers_are_children_of_base_reader[ApmReader] \u001b[33mSKIPPED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_if_readers_are_children_of_base_reader[EmNionReader] \u001b[33mSKIPPED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_if_readers_are_children_of_base_reader[EllipsometryReader] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_if_readers_are_children_of_base_reader[MPESReader] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_has_correct_read_func[ExampleReader] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_has_correct_read_func[ApmReader] \u001b[33mSKIPPED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_has_correct_read_func[EmNionReader] \u001b[33mSKIPPED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_has_correct_read_func[EllipsometryReader] \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_readers.py::test_has_correct_read_func[MPESReader] The xarray doesn't contain entry corresponding to the path /ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_current\n", + "The xarray doesn't contain entry corresponding to the path /ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_voltage\n", + "The xarray doesn't contain entry corresponding to the path /ENTRY[entry]/SAMPLE[sample]/bias\n", + "The xarray doesn't contain entry corresponding to the path /ENTRY[entry]/PROCESS[process]/calculated_energy\n", + "The xarray doesn't contain entry corresponding to the path /ENTRY[entry]/DATA[data]/@energy_indices\n", + "The xarray doesn't contain entry corresponding to the path /ENTRY[entry]/DATA[data]/energy\n", + "\u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_writer.py::test_init \u001b[32mPASSED\u001b[0m\n", + "tests/tools/dataconverter/test_writer.py::test_write DEBUG: Creating converter from 5 to 3\n", + "\u001b[32mPASSED\u001b[0m\n", + "\n", + "\u001b[33m=============================== warnings summary ===============================\u001b[0m\n", + "nexusparser/metainfo/nexus.py:57\n", + " /home/cemm/NOMAD/parser-nexus/nexusparser/metainfo/nexus.py:57: DeprecationWarning: Converting `np.inexact` or `np.floating` to a dtype is deprecated. The current result is `float64` which is not strictly correct.\n", + " 'NX_NUMBER': np.dtype(np.number),\n", + "\n", + "tests/test_parser.py::test_example\n", + " /home/cemm/NOMAD/test/.py37env/lib/python3.7/site-packages/_pytest/python.py:166: RemovedInPytest4Warning: Fixture \"parser\" called directly. Fixtures are not meant to be called directly, are created automatically when test functions request them as parameters. See https://docs.pytest.org/en/latest/fixture.html for more information.\n", + " testfunction(**testargs)\n", + "\n", + "-- Docs: https://docs.pytest.org/en/latest/warnings.html\n", + "\u001b[33m\u001b[1m=============== 52 passed, 4 skipped, 2 warnings in 9.54 seconds ===============\u001b[0m\n" + ] + } + ], + "source": [ + "# in the above cells clear redundant commands based on todays history\n", + "! cd parser-nexus && pytest -sv tests" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### Step 1: Download example data (for YOURMETHOD)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### Step 2: Run your \\<\\\\>-specific dataconverter/readers/\\<\\\\> on your \\<\\\\>" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using ellips reader to convert the given files: \n", + "• tests/data/tools/dataconverter/readers/ellips/test.yaml \n", + "The output file generated: tests/data/tools/dataconverter/readers/ellips/ellips.test.nxs\n" + ] + } + ], + "source": [ + "! cd ../../../../../../ && python nexusparser/tools/dataconverter/convert.py --reader ellips --nxdl nexusparser/definitions/applications/NXellipsometry.nxdl.xml --input-file tests/data/tools/dataconverter/readers/ellips/test.yaml --output tests/data/tools/dataconverter/readers/ellips/ellips.test.nxs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "**The key take home message is that the above-specified command triggers the automatic creation of the HDF5 file. This *.nxs file, is an HDF5 file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Inspect the HDF5/NeXus file apm.test.nxs using H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "config dir: /home/sandor/miniconda3/envs/test2/etc/jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web \u001b[32mOK\u001b[0m\n", + " jupyterlab \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab 2.3.0 \u001b[32mOK\u001b[0m\n", + "JupyterLab v2.3.0\n", + "Known labextensions:\n", + " app dir: /home/sandor/miniconda3/envs/test2/share/jupyter/lab\n", + " jupyterlab-h5web v0.0.11 \u001b[32m enabled \u001b[0m \u001b[32mOK\u001b[0m\n" + ] + } + ], + "source": [ + "! jupyter serverextension list\n", + "! jupyter labextension list" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from jupyterlab_h5web import H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# h5_file_name = 'PARAPROBE.Nanochem.Config.SimID.1.h5'\n", + "# h5_file_name = 'apm.test.nxs'\n", + "h5_file_name = 'ellips.test.nxs'\n", + "# h5_file_name = '../../../../../../tests/data/nexus_test_data/201805_WSe2_arpes.nxs'" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/x-hdf5": "/home/sandor/test2/parser-nexus/tests/data/tools/dataconverter/readers/ellips/ellips.test.nxs", + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H5Web(h5_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is where the general template ends. Continue to fill the notebook based on
\n", + "**your own** post-processing of the *.nxs file, taking e.g. inspiration from
\n", + "sprints 2 and 3 in the nomad-remote-tools-hub mpcdf git repo." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Congratulations. **Given that all NORTH tools have mounted your current directory, you can now inspect this HDF5 file.**
\n", + "**The clue is you can now use the data processing tools from NORTH for analysing apm.test.nxs further.**
\n", + "Again, these analysis tools come shipped with nomad so there is no need to install them locally.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 9: Extract for instance data inside apm.test.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compute a mass-to-charge histogram and explore eventual ranging definitions that have also been carried over in the conversion step (step 6)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "#plt.rcParams['figure.figsize'] = [12, 8]\n", + "#plt.rcParams['figure.dpi'] = 300\n", + "import h5py as h5\n", + "#needs shutils for decompressing zip archives, which is a default module/package in Python since >=v3.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zenodo download processed and decompressed, check if required file is in local working directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "MYDATASET = 'PARAPROBE.Transcoder.Results.SimID.8.h5'\n", + "#later load a dataset from local nomadOASIS data repository (shadow) folder.\n", + "! ls $MYDATASET" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1, read data from an HDF5 file inside nomadOASIS, process data, and visualize these" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#interact with h5py to load numerical data\n", + "hf = h5.File( MYDATASET, 'r' )\n", + "mq = hf['ReconstructionID8/Data/MassToChargeRatio'][:]\n", + "print('Mass-to-charge-state-ratio array loaded')\n", + "[mqmin, mqmax] = [0., np.max(mq)]\n", + "print('Dataset ranging from ['+str(mqmin)+', '+str(mqmax)+'] Da.')\n", + "\n", + "mqincr = 0.01 #Da\n", + "print('Using a mass-to-charge-state ratio resolution of '+str(mqincr)+' Da.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#transform collection of mass-to-charge-state ratios into a histogram\n", + "hst1d = np.unique(np.uint64(np.floor((mq[np.logical_and(mq >= mqmin, mq <= mqmax)]-mqmin)/mqincr)), return_counts=True)\n", + "nbins = np.uint64((mqmax - mqmin)/mqincr + 1)\n", + "print('Histogram has '+str(nbins)+' bins.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#use matplotlib and numpy to plot histogram data \n", + "xy = np.zeros([nbins,2], np.float64)\n", + "xy[:,0] = np.linspace(mqmin+mqincr, mqmax+mqincr, nbins, endpoint=True)\n", + "xy[:,1] = 0.5 #*np.ones([nbins],np.float64) #0.5 to be able to plot logarithm you can not measure half an atom\n", + "for i in np.arange(0,len(hst1d[0])):\n", + " binidx = hst1d[0][i]\n", + " xy[binidx,1] = hst1d[1][i]\n", + "print('Mass-to-charge-state histogram created.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[xmi, xmx, ymi, ymx] = [mqmin, mqmax, 0.5, 10**np.ceil(np.log10(np.max(xy[:,1])))]\n", + "fig, ( (myplot) ) = plt.subplots(1, 1)\n", + "myplot.plot( xy[:,0], xy[:,1], color='blue', alpha=0.5, linewidth=1.0 )\n", + "plt.legend( [r'Mass-to-charge-state ratio $\\Delta\\frac{m}{q} = $'+str(mqincr)+' Da'], loc='upper right')\n", + "plt.xlabel(r'Mass-to-charge-state-ratio (Da)')\n", + "plt.ylabel(r'Counts')\n", + "#plt.ylabel(r'$log_{10}$ Counts')\n", + "#xy.vlines([xmx], 0, 1, transform=xy.get_xaxis_transform(), colors=MYPARULA[2], linestyles='dotted') #'solid') #'dotted')\n", + "#plt.xticks([1, 2, 3, 4, 5, 6, 7, 8, 9], ['Min', '0.0025', '0.025', '0.25', '0.50', '0.75', '0.975', '0.9975', 'Max'])\n", + "plt.yscale('log')\n", + "print('Mass-to-charge-state histogram visualized.')\n", + "#scale bar with add margin to the bottom and top of the yaxis to avoid that lines fall on x axis\n", + "\n", + "#polishing the margins\n", + "margin=0.01\n", + "plt.xlim([-margin*(xmx-xmi)+xmi, +margin*(xmx-xmi)+xmx])\n", + "plt.ylim([ymi, +margin*(ymx-ymi)+ymx])\n", + "#plot the figure\n", + "#figfn = MYDATASET+'.MassToChargeStateRatios.png'\n", + "#fig.savefig( figfn, dpi=300, facecolor='w', edgecolor='w', orientation='landscape', format='png', \n", + "# transparent=False, bbox_inches='tight', pad_inches=0.1, metadata=None)\n", + "#plt.close('all')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### Example 2, store files created inside jupyter session, where do these end up ?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#plot the figure\n", + "figfn = MYDATASET+'.MassToChargeStateRatios.png'\n", + "fig.savefig( figfn, dpi=300, facecolor='w', edgecolor='w', orientation='landscape', format='png', \n", + " transparent=False, bbox_inches='tight', pad_inches=0.1, metadata=None)\n", + "#plt.close('all')\n", + "print(figfn+' stored to disk.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! ls" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### Example 2, get a periodic table of the elements" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### Example 3, interactive plotting (bokeh, ipywidgets?)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### Example 4, use nomad API to create an archive\n", + "#https://towardsdatascience.com/how-to-produce-interactive-matplotlib-plots-in-jupyter-environment-1e4329d71651" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#small utility tool to download Zenodo repositories with many files #here is a sconsider maybe to use https://zenodo.org/record/1261813#.YW51TXuxXjA" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/data/tools/dataconverter/readers/ellips/test-data.dat b/tests/data/tools/dataconverter/readers/ellips/test-data.dat new file mode 100644 index 000000000..211871453 --- /dev/null +++ b/tests/data/tools/dataconverter/readers/ellips/test-data.dat @@ -0,0 +1,9795 @@ +2nm SiO2 on Si on RC2 +VASEmethod[EllipsometerType=4 , CompleteEASE=6.37, AcqTime=15.000, ZoneAve=1, Acq. Parameters=DEFAULT.parms,WinCorrected=1] +Angstroms +E 1930.000000 50.000000 40.014217 142.127655 0.008585 0.034774 +E 1940.000000 50.000000 40.026409 142.307449 0.007827 0.031627 +E 1950.000000 50.000000 40.031204 142.483231 0.007221 0.029106 +E 1960.000000 50.000000 40.045902 142.679901 0.006813 0.027399 +E 1970.000000 50.000000 40.065468 142.866608 0.006478 0.025995 +E 1980.000000 50.000000 40.077728 143.102463 0.006224 0.024925 +E 1990.000000 50.000000 40.080673 143.409317 0.006016 0.024045 +E 2000.000000 50.000000 40.082367 143.746017 0.005829 0.023258 +E 2010.000000 50.000000 40.072388 143.990952 0.005649 0.022496 +E 2020.000000 50.000000 40.073170 144.279099 0.005475 0.021767 +E 2030.000000 50.000000 40.069405 144.611435 0.005311 0.021084 +E 2040.000000 50.000000 40.066757 144.883820 0.005150 0.020417 +E 2050.000000 50.000000 40.061028 145.150055 0.004993 0.019760 +E 2060.000000 50.000000 40.055706 145.396118 0.004843 0.019128 +E 2070.000000 50.000000 40.036533 145.661514 0.004703 0.018531 +E 2080.000000 50.000000 40.017166 145.896454 0.004572 0.017967 +E 2090.000000 50.000000 40.025864 146.114670 0.004443 0.017414 +E 2100.000000 50.000000 40.028156 146.370560 0.004322 0.016892 +E 2110.000000 50.000000 40.012478 146.607407 0.004227 0.016464 +E 2120.000000 50.000000 40.007420 146.799438 0.004136 0.016055 +E 2130.000000 50.000000 40.005928 147.055832 0.004045 0.015653 +E 2140.000000 50.000000 40.001190 147.294281 0.003968 0.015308 +E 2150.000000 50.000000 39.999153 147.531891 0.003896 0.014983 +E 2160.000000 50.000000 39.998287 147.757156 0.003830 0.014690 +E 2170.000000 50.000000 39.997860 147.958969 0.003769 0.014416 +E 2180.000000 50.000000 40.001450 148.183533 0.003709 0.014154 +E 2190.000000 50.000000 39.995445 148.426010 0.003648 0.013888 +E 2200.000000 50.000000 39.998291 148.655228 0.003589 0.013635 +E 2210.000000 50.000000 39.994427 148.901932 0.003533 0.013393 +E 2220.000000 50.000000 39.996326 149.173447 0.003476 0.013150 +E 2230.000000 50.000000 40.008663 149.415985 0.003422 0.012924 +E 2240.000000 50.000000 39.993584 149.634827 0.003373 0.012715 +E 2250.000000 50.000000 39.976269 149.894104 0.003326 0.012516 +E 2260.000000 50.000000 39.961422 150.199326 0.003285 0.012341 +E 2270.000000 50.000000 39.936958 150.453156 0.003245 0.012170 +E 2280.000000 50.000000 39.887856 150.692032 0.003205 0.012001 +E 2290.000000 50.000000 39.843830 150.939880 0.003166 0.011832 +E 2300.000000 50.000000 39.790047 151.197968 0.003131 0.011682 +E 2310.000000 50.000000 39.718216 151.398865 0.003097 0.011536 +E 2320.000000 50.000000 39.650379 151.570877 0.003065 0.011396 +E 2330.000000 50.000000 39.578545 151.704727 0.003040 0.011282 +E 2340.000000 50.000000 39.516590 151.776459 0.003016 0.011177 +E 2350.000000 50.000000 39.465984 151.847092 0.002991 0.011067 +E 2360.000000 50.000000 39.431660 151.908035 0.002969 0.010968 +E 2370.000000 50.000000 39.422081 151.941544 0.002946 0.010871 +E 2380.000000 50.000000 39.417023 151.982651 0.002923 0.010774 +E 2390.000000 50.000000 39.422253 152.004868 0.002904 0.010696 +E 2400.000000 50.000000 39.452198 152.051620 0.002887 0.010625 +E 2410.000000 50.000000 39.490494 152.132095 0.002870 0.010556 +E 2420.000000 50.000000 39.535706 152.168243 0.002854 0.010491 +E 2430.000000 50.000000 39.580338 152.246582 0.002844 0.010446 +E 2440.000000 50.000000 39.634945 152.360504 0.002832 0.010399 +E 2450.000000 50.000000 39.692410 152.490509 0.002822 0.010354 +E 2460.000000 50.000000 39.755169 152.634766 0.002814 0.010319 +E 2470.000000 50.000000 39.813477 152.760513 0.002807 0.010287 +E 2480.000000 50.000000 39.871521 152.897903 0.002800 0.010256 +E 2490.000000 50.000000 39.936161 153.070190 0.002796 0.010234 +E 2500.000000 50.000000 39.989059 153.222900 0.002794 0.010223 +E 2510.000000 50.000000 40.051128 153.431931 0.002795 0.010219 +E 2520.000000 50.000000 40.117176 153.628113 0.002793 0.010206 +E 2530.000000 50.000000 40.174896 153.816116 0.002795 0.010208 +E 2540.000000 50.000000 40.230507 154.022125 0.002803 0.010232 +E 2550.000000 50.000000 40.291935 154.220810 0.002811 0.010253 +E 2560.000000 50.000000 40.348503 154.457199 0.002821 0.010285 +E 2570.000000 50.000000 40.409046 154.663589 0.002832 0.010321 +E 2580.000000 50.000000 40.468143 154.894424 0.002846 0.010363 +E 2590.000000 50.000000 40.519966 155.147614 0.002861 0.010413 +E 2600.000000 50.000000 40.567379 155.406998 0.002880 0.010475 +E 2610.000000 50.000000 40.617954 155.660889 0.002901 0.010543 +E 2620.000000 50.000000 40.666866 155.911163 0.002922 0.010612 +E 2630.000000 50.000000 40.725704 156.188797 0.002943 0.010685 +E 2640.000000 50.000000 40.780777 156.469666 0.002967 0.010766 +E 2650.000000 50.000000 40.836395 156.748627 0.002995 0.010861 +E 2660.000000 50.000000 40.883255 157.057495 0.003026 0.010967 +E 2670.000000 50.000000 40.922371 157.383133 0.003058 0.011076 +E 2680.000000 50.000000 40.966640 157.706467 0.003089 0.011183 +E 2690.000000 50.000000 40.998135 158.048111 0.003121 0.011288 +E 2700.000000 50.000000 41.032158 158.406967 0.003152 0.011395 +E 2710.000000 50.000000 41.058334 158.775909 0.003188 0.011518 +E 2720.000000 50.000000 41.071541 159.117783 0.003224 0.011640 +E 2730.000000 50.000000 41.081215 159.480453 0.003257 0.011751 +E 2740.000000 50.000000 41.071716 159.856735 0.003293 0.011870 +E 2750.000000 50.000000 41.051399 160.225784 0.003328 0.011986 +E 2760.000000 50.000000 41.031219 160.599701 0.003365 0.012111 +E 2770.000000 50.000000 40.996609 160.953598 0.003414 0.012274 +E 2780.000000 50.000000 40.965870 161.285217 0.003444 0.012370 +E 2790.000000 50.000000 40.932110 161.638748 0.003470 0.012452 +E 2800.000000 50.000000 40.886234 161.993454 0.003500 0.012548 +E 2810.000000 50.000000 40.836842 162.321747 0.003534 0.012659 +E 2820.000000 50.000000 40.789928 162.643646 0.003571 0.012779 +E 2830.000000 50.000000 40.746315 162.951172 0.003610 0.012905 +E 2840.000000 50.000000 40.697300 163.257889 0.003643 0.013011 +E 2850.000000 50.000000 40.641205 163.590118 0.003685 0.013151 +E 2860.000000 50.000000 40.589268 163.929962 0.003729 0.013293 +E 2870.000000 50.000000 40.521923 164.278595 0.003769 0.013421 +E 2880.000000 50.000000 40.420925 164.634720 0.003817 0.013577 +E 2890.000000 50.000000 40.328045 164.954636 0.003873 0.013757 +E 2900.000000 50.000000 40.215271 165.289719 0.003929 0.013941 +E 2910.000000 50.000000 40.085327 165.590683 0.003987 0.014125 +E 2920.000000 50.000000 39.949558 165.848618 0.004047 0.014318 +E 2930.000000 50.000000 39.814732 166.057159 0.004105 0.014503 +E 2940.000000 50.000000 39.681282 166.243378 0.004165 0.014694 +E 2950.000000 50.000000 39.559025 166.403976 0.004224 0.014881 +E 2960.000000 50.000000 39.424557 166.545700 0.004281 0.015061 +E 2970.000000 50.000000 39.284615 166.702316 0.004339 0.015242 +E 2980.000000 50.000000 39.176281 166.800934 0.004400 0.015438 +E 2990.000000 50.000000 39.070713 166.863754 0.004461 0.015633 +E 3000.000000 50.000000 38.975414 166.938889 0.004524 0.015836 +E 3010.000000 50.000000 38.878563 167.028732 0.004582 0.016020 +E 3020.000000 50.000000 38.785034 167.112335 0.004641 0.016210 +E 3030.000000 50.000000 38.701351 167.190033 0.004706 0.016422 +E 3040.000000 50.000000 38.622021 167.238129 0.004768 0.016623 +E 3050.000000 50.000000 38.540707 167.255814 0.004840 0.016855 +E 3060.000000 50.000000 38.473972 167.313309 0.004910 0.017083 +E 3070.000000 50.000000 38.416367 167.336746 0.004974 0.017294 +E 3080.000000 50.000000 38.352753 167.337173 0.005046 0.017531 +E 3090.000000 50.000000 38.296818 167.415207 0.005117 0.017763 +E 3100.000000 50.000000 38.234535 167.441376 0.005179 0.017965 +E 3110.000000 50.000000 38.183598 167.477051 0.005243 0.018175 +E 3120.000000 50.000000 38.136162 167.540756 0.005313 0.018406 +E 3130.000000 50.000000 38.092407 167.538284 0.005372 0.018598 +E 3140.000000 50.000000 38.067379 167.591751 0.005435 0.018811 +E 3150.000000 50.000000 38.038094 167.658295 0.005501 0.019030 +E 3160.000000 50.000000 37.972755 167.700485 0.005564 0.019233 +E 3170.000000 50.000000 37.940628 167.764511 0.005628 0.019443 +E 3180.000000 50.000000 37.922256 167.802231 0.005690 0.019650 +E 3190.000000 50.000000 37.879593 167.853348 0.005761 0.019885 +E 3200.000000 50.000000 37.864590 167.880615 0.005822 0.020089 +E 3210.000000 50.000000 37.832973 167.882980 0.005892 0.020323 +E 3220.000000 50.000000 37.801411 167.955002 0.005960 0.020549 +E 3230.000000 50.000000 37.786137 168.017609 0.006024 0.020762 +E 3240.000000 50.000000 37.760193 168.072266 0.006087 0.020973 +E 3250.000000 50.000000 37.734486 168.142548 0.006147 0.021171 +E 3260.000000 50.000000 37.722507 168.166138 0.006246 0.021506 +E 3270.000000 50.000000 37.717068 168.195221 0.006377 0.021952 +E 3280.000000 50.000000 37.697788 168.251404 0.006512 0.022414 +E 3290.000000 50.000000 37.679295 168.307480 0.006618 0.022770 +E 3300.000000 50.000000 37.667194 168.353973 0.006715 0.023097 +E 3310.000000 50.000000 37.655422 168.415344 0.006815 0.023438 +E 3320.000000 50.000000 37.650436 168.450485 0.006888 0.023685 +E 3330.000000 50.000000 37.617416 168.545044 0.006947 0.023879 +E 3340.000000 50.000000 37.599232 168.592285 0.007002 0.024062 +E 3350.000000 50.000000 37.613369 168.608994 0.007046 0.024212 +E 3360.000000 50.000000 37.604439 168.624405 0.007099 0.024388 +E 3370.000000 50.000000 37.584930 168.719299 0.007153 0.024568 +E 3380.000000 50.000000 37.575653 168.810394 0.007181 0.024660 +E 3390.000000 50.000000 37.577919 168.860031 0.007183 0.024664 +E 3400.000000 50.000000 37.574230 168.908295 0.007188 0.024676 +E 3410.000000 50.000000 37.567123 168.965469 0.007210 0.024749 +E 3420.000000 50.000000 37.570904 169.022476 0.007268 0.024944 +E 3430.000000 50.000000 37.571522 169.074249 0.007324 0.025134 +E 3440.000000 50.000000 37.579929 169.119156 0.007362 0.025266 +E 3450.000000 50.000000 37.588264 169.189346 0.007420 0.025461 +E 3460.000000 50.000000 37.608612 169.275452 0.007477 0.025659 +E 3470.000000 50.000000 37.614811 169.341476 0.007538 0.025869 +E 3480.000000 50.000000 37.603127 169.429504 0.007593 0.026051 +E 3490.000000 50.000000 37.625416 169.549103 0.007646 0.026234 +E 3500.000000 50.000000 37.648170 169.580002 0.007700 0.026422 +E 3510.000000 50.000000 37.663067 169.582596 0.007758 0.026622 +E 3520.000000 50.000000 37.691402 169.687897 0.007810 0.026803 +E 3530.000000 50.000000 37.723637 169.808685 0.007859 0.026976 +E 3540.000000 50.000000 37.754620 169.880295 0.007922 0.027195 +E 3550.000000 50.000000 37.797958 169.933289 0.007974 0.027379 +E 3560.000000 50.000000 37.849831 169.988098 0.008019 0.027542 +E 3570.000000 50.000000 37.891800 170.134659 0.008071 0.027726 +E 3580.000000 50.000000 37.922565 170.336197 0.008112 0.027872 +E 3590.000000 50.000000 37.982803 170.505707 0.008158 0.028038 +E 3600.000000 50.000000 38.024326 170.662445 0.008203 0.028199 +E 3610.000000 50.000000 38.081615 170.906219 0.008243 0.028348 +E 3620.000000 50.000000 38.135853 171.112473 0.008268 0.028442 +E 3630.000000 50.000000 38.168762 171.337967 0.008298 0.028550 +E 3640.000000 50.000000 38.186531 171.640808 0.008350 0.028732 +E 3650.000000 50.000000 38.216156 171.916595 0.008406 0.028926 +E 3660.000000 50.000000 38.236397 172.126495 0.008392 0.028883 +E 3670.000000 50.000000 38.225945 172.403900 0.008342 0.028708 +E 3680.000000 50.000000 38.210796 172.800613 0.008327 0.028650 +E 3690.000000 50.000000 38.197086 173.133560 0.008345 0.028707 +E 3700.000000 50.000000 38.148277 173.383606 0.008430 0.028991 +E 3710.000000 50.000000 38.095837 173.670364 0.008547 0.029380 +E 3720.000000 50.000000 38.032112 173.936890 0.008596 0.029535 +E 3730.000000 50.000000 37.943707 174.215485 0.008676 0.029793 +E 3740.000000 50.000000 37.874119 174.512573 0.008747 0.030020 +E 3750.000000 50.000000 37.790680 174.736328 0.008750 0.030015 +E 3760.000000 50.000000 37.704865 174.940979 0.008737 0.029950 +E 3770.000000 50.000000 37.596062 175.179947 0.008757 0.029995 +E 3780.000000 50.000000 37.498409 175.373993 0.008721 0.029854 +E 3790.000000 50.000000 37.405220 175.546112 0.008663 0.029635 +E 3800.000000 50.000000 37.297680 175.649109 0.008680 0.029671 +E 3810.000000 50.000000 37.188995 175.770126 0.008774 0.029968 +E 3820.000000 50.000000 37.098171 175.969315 0.008833 0.030152 +E 3830.000000 50.000000 37.014507 176.030502 0.008786 0.029973 +E 3840.000000 50.000000 36.924168 176.103317 0.008803 0.030013 +E 3850.000000 50.000000 36.822502 176.236786 0.008897 0.030311 +E 3860.000000 50.000000 36.713802 176.322525 0.008860 0.030164 +E 3870.000000 50.000000 36.646366 176.380890 0.008741 0.029745 +E 3880.000000 50.000000 36.579651 176.409058 0.008609 0.029281 +E 3890.000000 50.000000 36.502338 176.418198 0.008638 0.029366 +E 3900.000000 50.000000 36.425442 176.480194 0.008889 0.030202 +E 3910.000000 50.000000 36.363190 176.581223 0.009154 0.031090 +E 3920.000000 50.000000 36.286407 176.644211 0.009107 0.030913 +E 3930.000000 50.000000 36.201965 176.687149 0.008970 0.030434 +E 3940.000000 50.000000 36.144917 176.818680 0.008858 0.030042 +E 3950.000000 50.000000 36.085236 176.845322 0.008833 0.029945 +E 3960.000000 50.000000 36.016956 176.789017 0.008931 0.030262 +E 3970.000000 50.000000 35.941341 176.827469 0.009030 0.030582 +E 3980.000000 50.000000 35.879307 176.878983 0.008910 0.030164 +E 3990.000000 50.000000 35.826954 176.900101 0.008779 0.029710 +E 4000.000000 50.000000 35.776100 176.970474 0.008852 0.029949 +E 4010.000000 50.000000 35.719902 176.991760 0.009057 0.030632 +E 4020.000000 50.000000 35.655972 177.043228 0.009194 0.031082 +E 4030.000000 50.000000 35.577518 177.070251 0.009218 0.031146 +E 4040.000000 50.000000 35.545563 177.065491 0.009139 0.030876 +E 4050.000000 50.000000 35.495491 177.068817 0.008949 0.030224 +E 4060.000000 50.000000 35.432846 177.109039 0.008766 0.029594 +E 4070.000000 50.000000 35.403286 177.165970 0.008794 0.029685 +E 4080.000000 50.000000 35.355564 177.156006 0.009055 0.030555 +E 4090.000000 50.000000 35.301334 177.172852 0.009267 0.031261 +E 4100.000000 50.000000 35.237083 177.218109 0.009303 0.031370 +E 4110.000000 50.000000 35.188622 177.313171 0.009306 0.031371 +E 4120.000000 50.000000 35.170624 177.306259 0.009198 0.031005 +E 4130.000000 50.000000 35.104034 177.247772 0.008937 0.030113 +E 4140.000000 50.000000 35.043255 177.281006 0.008836 0.029762 +E 4150.000000 50.000000 35.005600 177.321503 0.008986 0.030261 +E 4160.000000 50.000000 34.955517 177.313873 0.009074 0.030548 +E 4170.000000 50.000000 34.916336 177.375992 0.009057 0.030485 +E 4180.000000 50.000000 34.901669 177.407135 0.009066 0.030514 +E 4190.000000 50.000000 34.863346 177.399170 0.009170 0.030856 +E 4200.000000 50.000000 34.817463 177.434555 0.009197 0.030940 +E 4210.000000 50.000000 34.781055 177.452011 0.008966 0.030155 +E 4220.000000 50.000000 34.733986 177.486618 0.008679 0.029185 +E 4230.000000 50.000000 34.682716 177.503265 0.008520 0.028640 +E 4240.000000 50.000000 34.650242 177.496902 0.008512 0.028607 +E 4250.000000 50.000000 34.633354 177.511581 0.008803 0.029584 +E 4260.000000 50.000000 34.596397 177.557800 0.009148 0.030738 +E 4270.000000 50.000000 34.553188 177.572067 0.009123 0.030648 +E 4280.000000 50.000000 34.513779 177.548859 0.008859 0.029754 +E 4290.000000 50.000000 34.475517 177.554794 0.008942 0.030026 +E 4300.000000 50.000000 34.435345 177.582626 0.009007 0.030240 +E 4310.000000 50.000000 34.421329 177.605835 0.008931 0.029982 +E 4320.000000 50.000000 34.376854 177.623672 0.009073 0.030452 +E 4330.000000 50.000000 34.334705 177.668076 0.009217 0.030928 +E 4340.000000 50.000000 34.314816 177.691925 0.009004 0.030212 +E 4350.000000 50.000000 34.284607 177.628281 0.008911 0.029897 +E 4360.000000 50.000000 34.273514 177.663055 0.009046 0.030349 +E 4370.000000 50.000000 34.238892 177.723129 0.009050 0.030356 +E 4380.000000 50.000000 34.181824 177.708572 0.009005 0.030195 +E 4390.000000 50.000000 34.145939 177.672760 0.008957 0.030031 +E 4400.000000 50.000000 34.116222 177.686172 0.008919 0.029899 +E 4410.000000 50.000000 34.100842 177.728271 0.008781 0.029435 +E 4420.000000 50.000000 34.075222 177.756226 0.008499 0.028484 +E 4430.000000 50.000000 34.050308 177.717880 0.008465 0.028369 +E 4440.000000 50.000000 34.015442 177.758835 0.008547 0.028640 +E 4450.000000 50.000000 33.988548 177.773682 0.008501 0.028481 +E 4460.000000 50.000000 33.954948 177.788895 0.008446 0.028292 +E 4470.000000 50.000000 33.934479 177.764709 0.008501 0.028474 +E 4480.000000 50.000000 33.914028 177.856125 0.008548 0.028629 +E 4490.000000 50.000000 33.878651 177.794785 0.008543 0.028609 +E 4500.000000 50.000000 33.854729 177.758743 0.008491 0.028434 +E 4510.000000 50.000000 33.820492 177.840668 0.008502 0.028463 +E 4520.000000 50.000000 33.776886 177.878494 0.008549 0.028616 +E 4530.000000 50.000000 33.759460 177.852875 0.008536 0.028569 +E 4540.000000 50.000000 33.735455 177.832672 0.008503 0.028457 +E 4550.000000 50.000000 33.714733 177.822540 0.008458 0.028306 +E 4560.000000 50.000000 33.704601 177.872452 0.008378 0.028035 +E 4570.000000 50.000000 33.678074 177.917725 0.008258 0.027632 +E 4580.000000 50.000000 33.636559 177.929611 0.008084 0.027044 +E 4590.000000 50.000000 33.626522 177.889389 0.007945 0.026581 +E 4600.000000 50.000000 33.593567 177.907730 0.008080 0.027029 +E 4610.000000 50.000000 33.553200 177.946259 0.008294 0.027738 +E 4620.000000 50.000000 33.555958 177.925949 0.008352 0.027933 +E 4630.000000 50.000000 33.526741 177.933365 0.008169 0.027319 +E 4640.000000 50.000000 33.501175 177.989868 0.007871 0.026321 +E 4650.000000 50.000000 33.486938 177.987671 0.007766 0.025970 +E 4660.000000 50.000000 33.454765 177.968781 0.007875 0.026329 +E 4670.000000 50.000000 33.423378 177.969543 0.008038 0.026870 +E 4680.000000 50.000000 33.424896 177.995758 0.008088 0.027038 +E 4690.000000 50.000000 33.397842 177.987778 0.008123 0.027155 +E 4700.000000 50.000000 33.370041 178.043732 0.008289 0.027704 +E 4710.000000 50.000000 33.371391 177.989059 0.008410 0.028110 +E 4720.000000 50.000000 33.349464 177.979721 0.008320 0.027810 +E 4730.000000 50.000000 33.303574 178.023407 0.008160 0.027270 +E 4740.000000 50.000000 33.277538 178.056015 0.008104 0.027080 +E 4750.000000 50.000000 33.270405 178.081085 0.008131 0.027170 +E 4760.000000 50.000000 33.254078 178.071442 0.008103 0.027074 +E 4770.000000 50.000000 33.221539 178.061813 0.008048 0.026887 +E 4780.000000 50.000000 33.193127 178.070435 0.007979 0.026654 +E 4790.000000 50.000000 33.195091 178.042831 0.007900 0.026393 +E 4800.000000 50.000000 33.166759 178.091614 0.007892 0.026364 +E 4810.000000 50.000000 33.138008 178.077972 0.007881 0.026324 +E 4820.000000 50.000000 33.122341 178.086288 0.007885 0.026338 +E 4830.000000 50.000000 33.094799 178.076431 0.007863 0.026261 +E 4840.000000 50.000000 33.079639 178.083008 0.007773 0.025960 +E 4850.000000 50.000000 33.052357 178.074081 0.007426 0.024798 +E 4860.000000 50.000000 33.053864 178.116150 0.006531 0.021810 +E 4870.000000 50.000000 33.058132 178.156006 0.006205 0.020724 +E 4880.000000 50.000000 33.017319 178.120804 0.007143 0.023852 +E 4890.000000 50.000000 33.003746 178.134476 0.007605 0.025395 +E 4900.000000 50.000000 32.984283 178.176758 0.007594 0.025357 +E 4910.000000 50.000000 32.978283 178.214996 0.007525 0.025128 +E 4920.000000 50.000000 32.956657 178.199829 0.007550 0.025209 +E 4930.000000 50.000000 32.933525 178.173294 0.007532 0.025147 +E 4940.000000 50.000000 32.913940 178.151413 0.007478 0.024967 +E 4950.000000 50.000000 32.911964 178.157059 0.007560 0.025242 +E 4960.000000 50.000000 32.881531 178.161972 0.007611 0.025408 +E 4970.000000 50.000000 32.858822 178.179855 0.007557 0.025225 +E 4980.000000 50.000000 32.864136 178.176926 0.007472 0.024945 +E 4990.000000 50.000000 32.834663 178.213440 0.007385 0.024651 +E 5000.000000 50.000000 32.815258 178.205078 0.007355 0.024551 +E 5010.000000 50.000000 32.805588 178.226822 0.007342 0.024509 +E 5020.000000 50.000000 32.784969 178.242462 0.007298 0.024360 +E 5030.000000 50.000000 32.769585 178.250000 0.007298 0.024359 +E 5040.000000 50.000000 32.760220 178.276047 0.007320 0.024434 +E 5050.000000 50.000000 32.740063 178.263199 0.007338 0.024492 +E 5060.000000 50.000000 32.739769 178.250778 0.007308 0.024392 +E 5070.000000 50.000000 32.711628 178.240463 0.007294 0.024346 +E 5080.000000 50.000000 32.683125 178.244003 0.007317 0.024419 +E 5090.000000 50.000000 32.666801 178.249939 0.007316 0.024415 +E 5100.000000 50.000000 32.655312 178.252335 0.007309 0.024391 +E 5110.000000 50.000000 32.653587 178.280502 0.007276 0.024284 +E 5120.000000 50.000000 32.633240 178.288803 0.007236 0.024150 +E 5130.000000 50.000000 32.620815 178.278183 0.007227 0.024118 +E 5140.000000 50.000000 32.612942 178.302292 0.007218 0.024088 +E 5150.000000 50.000000 32.608746 178.300354 0.007203 0.024040 +E 5160.000000 50.000000 32.593616 178.288010 0.007178 0.023958 +E 5170.000000 50.000000 32.565174 178.243484 0.007169 0.023924 +E 5180.000000 50.000000 32.541145 178.303680 0.007154 0.023874 +E 5190.000000 50.000000 32.541000 178.376343 0.007128 0.023789 +E 5200.000000 50.000000 32.530983 178.324631 0.007089 0.023657 +E 5210.000000 50.000000 32.503273 178.303894 0.007071 0.023596 +E 5220.000000 50.000000 32.500504 178.319885 0.007060 0.023561 +E 5230.000000 50.000000 32.490776 178.337082 0.007041 0.023498 +E 5240.000000 50.000000 32.474197 178.314697 0.007028 0.023452 +E 5250.000000 50.000000 32.454178 178.329391 0.007001 0.023364 +E 5260.000000 50.000000 32.433426 178.377777 0.006956 0.023212 +E 5270.000000 50.000000 32.432270 178.394836 0.006893 0.023001 +E 5280.000000 50.000000 32.416321 178.371719 0.006879 0.022956 +E 5290.000000 50.000000 32.397884 178.329987 0.006877 0.022948 +E 5300.000000 50.000000 32.386414 178.365219 0.006860 0.022890 +E 5310.000000 50.000000 32.389595 178.374222 0.006853 0.022872 +E 5320.000000 50.000000 32.365284 178.371201 0.006850 0.022858 +E 5330.000000 50.000000 32.349899 178.379410 0.006802 0.022698 +E 5340.000000 50.000000 32.332909 178.370285 0.006744 0.022504 +E 5350.000000 50.000000 32.331123 178.355042 0.006726 0.022445 +E 5360.000000 50.000000 32.339958 178.382767 0.006710 0.022394 +E 5370.000000 50.000000 32.321171 178.413589 0.006697 0.022351 +E 5380.000000 50.000000 32.305557 178.371643 0.006671 0.022263 +E 5390.000000 50.000000 32.284027 178.378860 0.006625 0.022109 +E 5400.000000 50.000000 32.265327 178.409409 0.006606 0.022045 +E 5410.000000 50.000000 32.254440 178.379242 0.006589 0.021991 +E 5420.000000 50.000000 32.247478 178.380157 0.006543 0.021837 +E 5430.000000 50.000000 32.230713 178.423462 0.006493 0.021669 +E 5440.000000 50.000000 32.222755 178.454376 0.006469 0.021590 +E 5450.000000 50.000000 32.211956 178.415009 0.006454 0.021540 +E 5460.000000 50.000000 32.204159 178.443283 0.006454 0.021540 +E 5470.000000 50.000000 32.189476 178.450058 0.006445 0.021512 +E 5480.000000 50.000000 32.174313 178.417694 0.006398 0.021353 +E 5490.000000 50.000000 32.167347 178.449020 0.006360 0.021226 +E 5500.000000 50.000000 32.159786 178.418228 0.006353 0.021204 +E 5510.000000 50.000000 32.154179 178.433014 0.006353 0.021206 +E 5520.000000 50.000000 32.131420 178.494858 0.006352 0.021202 +E 5530.000000 50.000000 32.117016 178.456589 0.006333 0.021137 +E 5540.000000 50.000000 32.111961 178.439270 0.006304 0.021042 +E 5550.000000 50.000000 32.090481 178.461349 0.006297 0.021017 +E 5560.000000 50.000000 32.070087 178.492432 0.006293 0.021005 +E 5570.000000 50.000000 32.084675 178.481674 0.006266 0.020916 +E 5580.000000 50.000000 32.075497 178.477325 0.006251 0.020867 +E 5590.000000 50.000000 32.058544 178.475708 0.006249 0.020862 +E 5600.000000 50.000000 32.049965 178.445801 0.006231 0.020802 +E 5610.000000 50.000000 32.045315 178.486755 0.006199 0.020694 +E 5620.000000 50.000000 32.034653 178.537750 0.006188 0.020658 +E 5630.000000 50.000000 32.024136 178.493912 0.006180 0.020631 +E 5640.000000 50.000000 32.017735 178.494827 0.006158 0.020558 +E 5650.000000 50.000000 31.994675 178.510040 0.006136 0.020484 +E 5660.000000 50.000000 31.980265 178.466705 0.006116 0.020418 +E 5670.000000 50.000000 31.981194 178.501358 0.006049 0.020195 +E 5680.000000 50.000000 31.962719 178.548798 0.005942 0.019837 +E 5690.000000 50.000000 31.954851 178.543839 0.005821 0.019435 +E 5700.000000 50.000000 31.949465 178.515366 0.005653 0.018873 +E 5710.000000 50.000000 31.932108 178.530457 0.005573 0.018608 +E 5720.000000 50.000000 31.926071 178.546982 0.005530 0.018463 +E 5730.000000 50.000000 31.921820 178.524109 0.005477 0.018288 +E 5740.000000 50.000000 31.910234 178.541550 0.005381 0.017969 +E 5750.000000 50.000000 31.897858 178.547363 0.005326 0.017784 +E 5760.000000 50.000000 31.892660 178.572769 0.005289 0.017662 +E 5770.000000 50.000000 31.893074 178.592056 0.005188 0.017324 +E 5780.000000 50.000000 31.881233 178.568100 0.005116 0.017085 +E 5790.000000 50.000000 31.871187 178.565811 0.005110 0.017066 +E 5800.000000 50.000000 31.858643 178.562546 0.005079 0.016961 +E 5810.000000 50.000000 31.851633 178.557404 0.004954 0.016545 +E 5820.000000 50.000000 31.845757 178.565018 0.004825 0.016116 +E 5830.000000 50.000000 31.832531 178.567398 0.004945 0.016514 +E 5840.000000 50.000000 31.824835 178.594696 0.005177 0.017292 +E 5850.000000 50.000000 31.804821 178.566086 0.005147 0.017189 +E 5860.000000 50.000000 31.802898 178.552200 0.005170 0.017267 +E 5870.000000 50.000000 31.798349 178.589111 0.005222 0.017441 +E 5880.000000 50.000000 31.785278 178.619278 0.005177 0.017293 +E 5890.000000 50.000000 31.783150 178.615356 0.005161 0.017240 +E 5900.000000 50.000000 31.773708 178.580750 0.005332 0.017812 +E 5910.000000 50.000000 31.761044 178.610580 0.005445 0.018188 +E 5920.000000 50.000000 31.753210 178.634888 0.005448 0.018201 +E 5930.000000 50.000000 31.749580 178.611038 0.005362 0.017912 +E 5940.000000 50.000000 31.738647 178.600250 0.005283 0.017649 +E 5950.000000 50.000000 31.739586 178.636856 0.005221 0.017443 +E 5960.000000 50.000000 31.728695 178.629730 0.005227 0.017463 +E 5970.000000 50.000000 31.707270 178.585663 0.005316 0.017761 +E 5980.000000 50.000000 31.705153 178.605759 0.005366 0.017928 +E 5990.000000 50.000000 31.707287 178.604828 0.005369 0.017939 +E 6000.000000 50.000000 31.701927 178.645386 0.005372 0.017949 +E 6010.000000 50.000000 31.673128 178.650726 0.005341 0.017846 +E 6020.000000 50.000000 31.670223 178.648499 0.005280 0.017644 +E 6030.000000 50.000000 31.669506 178.668716 0.005204 0.017388 +E 6040.000000 50.000000 31.657143 178.656250 0.005185 0.017327 +E 6050.000000 50.000000 31.665346 178.651489 0.005289 0.017676 +E 6060.000000 50.000000 31.645723 178.656143 0.005322 0.017786 +E 6070.000000 50.000000 31.630142 178.640732 0.005331 0.017814 +E 6080.000000 50.000000 31.635567 178.642136 0.005351 0.017884 +E 6090.000000 50.000000 31.631227 178.664139 0.005371 0.017951 +E 6100.000000 50.000000 31.616478 178.658173 0.005353 0.017890 +E 6110.000000 50.000000 31.606585 178.671616 0.005328 0.017807 +E 6120.000000 50.000000 31.595495 178.655640 0.005316 0.017767 +E 6130.000000 50.000000 31.588282 178.630539 0.005304 0.017729 +E 6140.000000 50.000000 31.581360 178.675568 0.005291 0.017684 +E 6150.000000 50.000000 31.576214 178.677567 0.005322 0.017791 +E 6160.000000 50.000000 31.562113 178.674561 0.005374 0.017963 +E 6170.000000 50.000000 31.563011 178.682999 0.005401 0.018054 +E 6180.000000 50.000000 31.564058 178.701416 0.005413 0.018097 +E 6190.000000 50.000000 31.550699 178.715561 0.005434 0.018167 +E 6200.000000 50.000000 31.530180 178.676895 0.005413 0.018096 +E 6210.000000 50.000000 31.535299 178.685272 0.005416 0.018107 +E 6220.000000 50.000000 31.525053 178.683365 0.005440 0.018188 +E 6230.000000 50.000000 31.511126 178.671997 0.005413 0.018096 +E 6240.000000 50.000000 31.504509 178.693909 0.005398 0.018046 +E 6250.000000 50.000000 31.516411 178.711594 0.005442 0.018195 +E 6260.000000 50.000000 31.519581 178.717346 0.005476 0.018312 +E 6270.000000 50.000000 31.495024 178.718262 0.005483 0.018334 +E 6280.000000 50.000000 31.482388 178.698730 0.005480 0.018324 +E 6290.000000 50.000000 31.495792 178.674896 0.005478 0.018321 +E 6300.000000 50.000000 31.486073 178.681992 0.005483 0.018337 +E 6310.000000 50.000000 31.473055 178.706879 0.005515 0.018442 +E 6320.000000 50.000000 31.463509 178.748154 0.005525 0.018477 +E 6330.000000 50.000000 31.461937 178.744781 0.005504 0.018409 +E 6340.000000 50.000000 31.455236 178.718063 0.005514 0.018441 +E 6350.000000 50.000000 31.442385 178.746262 0.005515 0.018446 +E 6360.000000 50.000000 31.434116 178.731537 0.005500 0.018396 +E 6370.000000 50.000000 31.428495 178.718735 0.005491 0.018366 +E 6380.000000 50.000000 31.430550 178.727661 0.005498 0.018389 +E 6390.000000 50.000000 31.415495 178.757584 0.005499 0.018394 +E 6400.000000 50.000000 31.416590 178.753250 0.005501 0.018401 +E 6410.000000 50.000000 31.401546 178.721848 0.005511 0.018435 +E 6420.000000 50.000000 31.396229 178.722305 0.005527 0.018488 +E 6430.000000 50.000000 31.400917 178.757202 0.005519 0.018465 +E 6440.000000 50.000000 31.390093 178.760239 0.005521 0.018471 +E 6450.000000 50.000000 31.394989 178.764816 0.005532 0.018510 +E 6460.000000 50.000000 31.389410 178.776215 0.005530 0.018503 +E 6470.000000 50.000000 31.373905 178.806900 0.005527 0.018493 +E 6480.000000 50.000000 31.367498 178.772614 0.005522 0.018477 +E 6490.000000 50.000000 31.373634 178.789993 0.005516 0.018457 +E 6500.000000 50.000000 31.358833 178.772156 0.005513 0.018449 +E 6510.000000 50.000000 31.348343 178.757248 0.005516 0.018457 +E 6520.000000 50.000000 31.350481 178.780930 0.005512 0.018445 +E 6530.000000 50.000000 31.337910 178.771011 0.005517 0.018461 +E 6540.000000 50.000000 31.335159 178.773285 0.005568 0.018635 +E 6550.000000 50.000000 31.317465 178.757309 0.004951 0.016570 +E 6560.000000 50.000000 31.313301 178.766769 0.003475 0.011629 +E 6570.000000 50.000000 31.312868 178.775757 0.003343 0.011187 +E 6580.000000 50.000000 31.313051 178.795670 0.004564 0.015276 +E 6590.000000 50.000000 31.299414 178.787643 0.005477 0.018330 +E 6600.000000 50.000000 31.294270 178.781158 0.005510 0.018444 +E 6610.000000 50.000000 31.293829 178.792282 0.005515 0.018459 +E 6620.000000 50.000000 31.288885 178.827194 0.005502 0.018417 +E 6630.000000 50.000000 31.280191 178.829041 0.005495 0.018393 +E 6640.000000 50.000000 31.280596 178.788666 0.005496 0.018398 +E 6650.000000 50.000000 31.276859 178.805725 0.005498 0.018405 +E 6660.000000 50.000000 31.273216 178.801697 0.005498 0.018406 +E 6670.000000 50.000000 31.263517 178.810226 0.005499 0.018410 +E 6680.000000 50.000000 31.257700 178.820465 0.005494 0.018394 +E 6690.000000 50.000000 31.252985 178.791031 0.005481 0.018352 +E 6700.000000 50.000000 31.237257 178.784622 0.005470 0.018315 +E 6710.000000 50.000000 31.233891 178.811981 0.005472 0.018321 +E 6720.000000 50.000000 31.246092 178.817032 0.005461 0.018286 +E 6730.000000 50.000000 31.242540 178.819656 0.005459 0.018281 +E 6740.000000 50.000000 31.224094 178.826248 0.005470 0.018319 +E 6750.000000 50.000000 31.227314 178.826965 0.005477 0.018341 +E 6760.000000 50.000000 31.222666 178.781754 0.005478 0.018347 +E 6770.000000 50.000000 31.208687 178.797501 0.005475 0.018334 +E 6780.000000 50.000000 31.195593 178.856873 0.005465 0.018302 +E 6790.000000 50.000000 31.197107 178.846725 0.005453 0.018263 +E 6800.000000 50.000000 31.204855 178.841309 0.005445 0.018237 +E 6810.000000 50.000000 31.191763 178.875397 0.005446 0.018242 +E 6820.000000 50.000000 31.182716 178.829514 0.005448 0.018248 +E 6830.000000 50.000000 31.181673 178.817566 0.005444 0.018235 +E 6840.000000 50.000000 31.195156 178.855270 0.005434 0.018203 +E 6850.000000 50.000000 31.188284 178.819061 0.005414 0.018138 +E 6860.000000 50.000000 31.168678 178.792755 0.005416 0.018143 +E 6870.000000 50.000000 31.162106 178.841248 0.005431 0.018193 +E 6880.000000 50.000000 31.143251 178.851349 0.005444 0.018239 +E 6890.000000 50.000000 31.159239 178.840332 0.005443 0.018237 +E 6900.000000 50.000000 31.155603 178.849121 0.005448 0.018254 +E 6910.000000 50.000000 31.135420 178.835342 0.005449 0.018256 +E 6920.000000 50.000000 31.137144 178.834732 0.005444 0.018240 +E 6930.000000 50.000000 31.126457 178.872818 0.005443 0.018239 +E 6940.000000 50.000000 31.120905 178.875870 0.005437 0.018218 +E 6950.000000 50.000000 31.117241 178.866974 0.005443 0.018237 +E 6960.000000 50.000000 31.112432 178.850266 0.005445 0.018247 +E 6970.000000 50.000000 31.123388 178.835358 0.005434 0.018211 +E 6980.000000 50.000000 31.104124 178.896210 0.005428 0.018192 +E 6990.000000 50.000000 31.098114 178.906235 0.005433 0.018208 +E 7000.000000 50.000000 31.095085 178.892853 0.005444 0.018244 +E 7010.000000 50.000000 31.081078 178.900528 0.005455 0.018282 +E 7020.000000 50.000000 31.074520 178.876419 0.005457 0.018288 +E 7030.000000 50.000000 31.070480 178.867905 0.005457 0.018288 +E 7040.000000 50.000000 31.064819 178.881714 0.005468 0.018328 +E 7050.000000 50.000000 31.055788 178.861679 0.005479 0.018363 +E 7060.000000 50.000000 31.059832 178.903122 0.005476 0.018357 +E 7070.000000 50.000000 31.063160 178.913803 0.005455 0.018287 +E 7080.000000 50.000000 31.048452 178.908035 0.005462 0.018310 +E 7090.000000 50.000000 31.045784 178.881073 0.005476 0.018357 +E 7100.000000 50.000000 31.034851 178.903595 0.005491 0.018408 +E 7110.000000 50.000000 31.028952 178.900787 0.005496 0.018423 +E 7120.000000 50.000000 31.040518 178.891785 0.005491 0.018410 +E 7130.000000 50.000000 31.037481 178.908737 0.005492 0.018415 +E 7140.000000 50.000000 31.022884 178.911209 0.005491 0.018410 +E 7150.000000 50.000000 31.013515 178.913055 0.005485 0.018388 +E 7160.000000 50.000000 31.029650 178.893204 0.005486 0.018395 +E 7170.000000 50.000000 31.021046 178.890305 0.005508 0.018467 +E 7180.000000 50.000000 31.014547 178.903992 0.005509 0.018472 +E 7190.000000 50.000000 31.013401 178.922165 0.005510 0.018475 +E 7200.000000 50.000000 31.013029 178.914078 0.005517 0.018501 +E 7210.000000 50.000000 30.987230 178.871231 0.005535 0.018560 +E 7220.000000 50.000000 30.987289 178.896912 0.005536 0.018565 +E 7230.000000 50.000000 30.995527 178.943802 0.005547 0.018602 +E 7240.000000 50.000000 30.992121 178.933716 0.005544 0.018593 +E 7250.000000 50.000000 30.997414 178.908096 0.005521 0.018516 +E 7260.000000 50.000000 30.986610 178.958221 0.005500 0.018448 +E 7270.000000 50.000000 30.976078 178.907928 0.005516 0.018502 +E 7280.000000 50.000000 30.985359 178.954025 0.005519 0.018512 +E 7290.000000 50.000000 30.958941 178.912079 0.005516 0.018502 +E 7300.000000 50.000000 30.955441 178.881165 0.005526 0.018534 +E 7310.000000 50.000000 30.970018 178.934326 0.005517 0.018508 +E 7320.000000 50.000000 30.967836 178.925491 0.005526 0.018537 +E 7330.000000 50.000000 30.942551 178.932831 0.005554 0.018631 +E 7340.000000 50.000000 30.942844 178.943832 0.005549 0.018616 +E 7350.000000 50.000000 30.944115 178.946564 0.005520 0.018518 +E 7360.000000 50.000000 30.958519 178.925674 0.005522 0.018526 +E 7370.000000 50.000000 30.949354 178.926773 0.005545 0.018603 +E 7380.000000 50.000000 30.937155 178.950180 0.005586 0.018741 +E 7390.000000 50.000000 30.918215 178.950317 0.005610 0.018820 +E 7400.000000 50.000000 30.925596 178.967773 0.005587 0.018745 +E 7410.000000 50.000000 30.929365 178.971481 0.005606 0.018811 +E 7420.000000 50.000000 30.913601 178.964386 0.005651 0.018961 +E 7430.000000 50.000000 30.912067 178.987091 0.005668 0.019020 +E 7440.000000 50.000000 30.908552 178.966232 0.005673 0.019035 +E 7450.000000 50.000000 30.904566 178.964752 0.005681 0.019063 +E 7460.000000 50.000000 30.905048 178.952591 0.005684 0.019075 +E 7470.000000 50.000000 30.882610 178.965622 0.005671 0.019030 +E 7480.000000 50.000000 30.888674 179.001068 0.005666 0.019013 +E 7490.000000 50.000000 30.900387 179.001816 0.005685 0.019079 +E 7500.000000 50.000000 30.888287 178.958954 0.005691 0.019101 +E 7510.000000 50.000000 30.879602 178.974899 0.005694 0.019108 +E 7520.000000 50.000000 30.897343 178.977722 0.005729 0.019228 +E 7530.000000 50.000000 30.867914 178.978622 0.005752 0.019306 +E 7540.000000 50.000000 30.862309 178.995621 0.005724 0.019212 +E 7550.000000 50.000000 30.867502 178.991394 0.005734 0.019245 +E 7560.000000 50.000000 30.870747 178.985535 0.005744 0.019281 +E 7570.000000 50.000000 30.885315 178.955658 0.005730 0.019234 +E 7580.000000 50.000000 30.873945 178.966553 0.005723 0.019211 +E 7590.000000 50.000000 30.865316 178.983231 0.005725 0.019217 +E 7600.000000 50.000000 30.862595 178.990982 0.005769 0.019367 +E 7610.000000 50.000000 30.852257 178.983643 0.005816 0.019523 +E 7620.000000 50.000000 30.852055 179.004578 0.005853 0.019648 +E 7630.000000 50.000000 30.847763 179.021774 0.005839 0.019602 +E 7640.000000 50.000000 30.853325 179.032272 0.005827 0.019563 +E 7650.000000 50.000000 30.849291 179.008224 0.005848 0.019635 +E 7660.000000 50.000000 30.840883 178.985535 0.005887 0.019767 +E 7670.000000 50.000000 30.817810 178.953033 0.005945 0.019961 +E 7680.000000 50.000000 30.833277 178.978348 0.005932 0.019918 +E 7690.000000 50.000000 30.846901 179.021576 0.005866 0.019698 +E 7700.000000 50.000000 30.823551 179.026459 0.005848 0.019637 +E 7710.000000 50.000000 30.815535 179.000061 0.005896 0.019797 +E 7720.000000 50.000000 30.825666 178.986099 0.005962 0.020020 +E 7730.000000 50.000000 30.828180 179.017868 0.006004 0.020164 +E 7740.000000 50.000000 30.818300 179.036270 0.006017 0.020206 +E 7750.000000 50.000000 30.807564 179.034576 0.006044 0.020298 +E 7760.000000 50.000000 30.808054 179.010422 0.006079 0.020416 +E 7770.000000 50.000000 30.816341 179.025467 0.006099 0.020484 +E 7780.000000 50.000000 30.806213 179.053818 0.006094 0.020467 +E 7790.000000 50.000000 30.803080 179.024551 0.006056 0.020341 +E 7800.000000 50.000000 30.811068 179.044952 0.006048 0.020315 +E 7810.000000 50.000000 30.794956 179.032745 0.006102 0.020495 +E 7820.000000 50.000000 30.781927 178.995163 0.006136 0.020611 +E 7830.000000 50.000000 30.783207 179.023819 0.006145 0.020639 +E 7840.000000 50.000000 30.780619 179.049408 0.006174 0.020737 +E 7850.000000 50.000000 30.779089 179.035019 0.006222 0.020899 +E 7860.000000 50.000000 30.790827 179.008118 0.006247 0.020987 +E 7870.000000 50.000000 30.782684 179.041885 0.006247 0.020985 +E 7880.000000 50.000000 30.778803 179.055252 0.006236 0.020948 +E 7890.000000 50.000000 30.771376 179.044342 0.006253 0.021005 +E 7900.000000 50.000000 30.753504 179.085953 0.006289 0.021125 +E 7910.000000 50.000000 30.758619 179.059601 0.006295 0.021146 +E 7920.000000 50.000000 30.767996 179.037964 0.006310 0.021198 +E 7930.000000 50.000000 30.762117 179.055832 0.006323 0.021245 +E 7940.000000 50.000000 30.754086 179.031799 0.006311 0.021202 +E 7950.000000 50.000000 30.751663 179.054153 0.006316 0.021220 +E 7960.000000 50.000000 30.756567 179.039108 0.006351 0.021340 +E 7970.000000 50.000000 30.766327 179.028778 0.006382 0.021446 +E 7980.000000 50.000000 30.734531 179.097366 0.006416 0.021556 +E 7990.000000 50.000000 30.733833 179.048767 0.006430 0.021603 +E 8000.000000 50.000000 30.739023 179.049118 0.006423 0.021584 +E 8010.000000 50.000000 30.737614 179.067413 0.006415 0.021557 +E 8020.000000 50.000000 30.736736 179.026779 0.006460 0.021707 +E 8030.000000 50.000000 30.741899 179.041321 0.006497 0.021835 +E 8040.000000 50.000000 30.729853 179.065460 0.006500 0.021844 +E 8050.000000 50.000000 30.728659 179.052490 0.006488 0.021802 +E 8060.000000 50.000000 30.724928 179.032715 0.006508 0.021873 +E 8070.000000 50.000000 30.718481 179.031311 0.006571 0.022082 +E 8080.000000 50.000000 30.707914 179.064285 0.006603 0.022190 +E 8090.000000 50.000000 30.712387 179.078629 0.006562 0.022053 +E 8100.000000 50.000000 30.699265 179.071930 0.006575 0.022096 +E 8110.000000 50.000000 30.703066 179.085846 0.006610 0.022215 +E 8120.000000 50.000000 30.703556 179.065674 0.006655 0.022367 +E 8130.000000 50.000000 30.690233 179.027130 0.006655 0.022369 +E 8140.000000 50.000000 30.705050 179.044785 0.006614 0.022232 +E 8150.000000 50.000000 30.701036 179.069855 0.006639 0.022315 +E 8160.000000 50.000000 30.700886 179.050354 0.006688 0.022480 +E 8170.000000 50.000000 30.686674 179.093216 0.006721 0.022591 +E 8180.000000 50.000000 30.686453 179.087189 0.006705 0.022540 +E 8190.000000 50.000000 30.692768 179.087189 0.006695 0.022507 +E 8200.000000 50.000000 30.678839 179.113998 0.006725 0.022607 +E 8210.000000 50.000000 30.687546 179.103195 0.006758 0.022717 +E 8220.000000 50.000000 30.693928 179.045837 0.006783 0.022804 +E 8230.000000 50.000000 30.682886 179.088181 0.006764 0.022741 +E 8240.000000 50.000000 30.694813 179.129837 0.006750 0.022694 +E 8250.000000 50.000000 30.677614 179.112198 0.006799 0.022858 +E 8260.000000 50.000000 30.671463 179.083237 0.006845 0.023014 +E 8270.000000 50.000000 30.671049 179.075500 0.006832 0.022971 +E 8280.000000 50.000000 30.660326 179.109497 0.006806 0.022882 +E 8290.000000 50.000000 30.661438 179.084335 0.006809 0.022892 +E 8300.000000 50.000000 30.661055 179.067902 0.006874 0.023113 +E 8310.000000 50.000000 30.670876 179.029739 0.006910 0.023236 +E 8320.000000 50.000000 30.660870 179.060242 0.006899 0.023198 +E 8330.000000 50.000000 30.657442 179.129333 0.006867 0.023089 +E 8340.000000 50.000000 30.655273 179.113113 0.006850 0.023034 +E 8350.000000 50.000000 30.648403 179.113770 0.006888 0.023161 +E 8360.000000 50.000000 30.645498 179.072220 0.006945 0.023353 +E 8370.000000 50.000000 30.634562 179.122345 0.006934 0.023315 +E 8380.000000 50.000000 30.630827 179.100021 0.006918 0.023262 +E 8390.000000 50.000000 30.646584 179.118225 0.006932 0.023313 +E 8400.000000 50.000000 30.629320 179.127304 0.006997 0.023530 +E 8410.000000 50.000000 30.635868 179.131744 0.007026 0.023628 +E 8420.000000 50.000000 30.636202 179.120728 0.007012 0.023583 +E 8430.000000 50.000000 30.620808 179.107208 0.006993 0.023516 +E 8440.000000 50.000000 30.626461 179.116043 0.006996 0.023529 +E 8450.000000 50.000000 30.621727 179.124130 0.007032 0.023651 +E 8460.000000 50.000000 30.629612 179.115128 0.007054 0.023723 +E 8470.000000 50.000000 30.618586 179.124008 0.007040 0.023676 +E 8480.000000 50.000000 30.617851 179.133652 0.007011 0.023581 +E 8490.000000 50.000000 30.617220 179.130280 0.007060 0.023746 +E 8500.000000 50.000000 30.621016 179.105408 0.007184 0.024163 +E 8510.000000 50.000000 30.607286 179.103149 0.007236 0.024338 +E 8520.000000 50.000000 30.613688 179.117966 0.007087 0.023839 +E 8530.000000 50.000000 30.615820 179.096146 0.006928 0.023303 +E 8540.000000 50.000000 30.600988 179.087463 0.006905 0.023226 +E 8550.000000 50.000000 30.598515 179.135849 0.007000 0.023546 +E 8560.000000 50.000000 30.582178 179.142242 0.007086 0.023836 +E 8570.000000 50.000000 30.577772 179.108612 0.007115 0.023932 +E 8580.000000 50.000000 30.595299 179.072876 0.007076 0.023804 +E 8590.000000 50.000000 30.584257 179.115494 0.007061 0.023753 +E 8600.000000 50.000000 30.591312 179.150436 0.007082 0.023825 +E 8610.000000 50.000000 30.585142 179.129028 0.007148 0.024045 +E 8620.000000 50.000000 30.583723 179.152725 0.007179 0.024151 +E 8630.000000 50.000000 30.582855 179.130951 0.007179 0.024150 +E 8640.000000 50.000000 30.563791 179.126892 0.007142 0.024025 +E 8650.000000 50.000000 30.568245 179.161285 0.007109 0.023917 +E 8660.000000 50.000000 30.585251 179.109329 0.007138 0.024015 +E 8670.000000 50.000000 30.573238 179.124008 0.007197 0.024213 +E 8680.000000 50.000000 30.563005 179.115128 0.007209 0.024253 +E 8690.000000 50.000000 30.543839 179.141129 0.007208 0.024247 +E 8700.000000 50.000000 30.567396 179.119522 0.007181 0.024159 +E 8710.000000 50.000000 30.570415 179.116257 0.007192 0.024197 +E 8720.000000 50.000000 30.562603 179.131226 0.007233 0.024336 +E 8730.000000 50.000000 30.568039 179.116669 0.007235 0.024344 +E 8740.000000 50.000000 30.562223 179.092163 0.007210 0.024259 +E 8750.000000 50.000000 30.591908 179.143906 0.007177 0.024152 +E 8760.000000 50.000000 30.569475 179.156967 0.007197 0.024216 +E 8770.000000 50.000000 30.542582 179.145096 0.007243 0.024371 +E 8780.000000 50.000000 30.537693 179.144455 0.007271 0.024463 +E 8790.000000 50.000000 30.550413 179.127014 0.007257 0.024418 +E 8800.000000 50.000000 30.544670 179.162796 0.007257 0.024420 +E 8810.000000 50.000000 30.540966 179.157425 0.007286 0.024517 +E 8820.000000 50.000000 30.536751 179.153641 0.007315 0.024616 +E 8830.000000 50.000000 30.531778 179.158188 0.007348 0.024725 +E 8840.000000 50.000000 30.527790 179.113327 0.007355 0.024749 +E 8850.000000 50.000000 30.522085 179.165833 0.007368 0.024793 +E 8860.000000 50.000000 30.541330 179.174347 0.007348 0.024726 +E 8870.000000 50.000000 30.532234 179.133408 0.007331 0.024670 +E 8880.000000 50.000000 30.534040 179.117844 0.007335 0.024686 +E 8890.000000 50.000000 30.532904 179.158615 0.007363 0.024778 +E 8900.000000 50.000000 30.530916 179.176270 0.007389 0.024866 +E 8910.000000 50.000000 30.533978 179.172134 0.007411 0.024943 +E 8920.000000 50.000000 30.530664 179.127396 0.007410 0.024940 +E 8930.000000 50.000000 30.519501 179.188400 0.007408 0.024933 +E 8940.000000 50.000000 30.508657 179.227509 0.007418 0.024965 +E 8950.000000 50.000000 30.508007 179.168793 0.007443 0.025048 +E 8960.000000 50.000000 30.515638 179.212845 0.007469 0.025138 +E 8970.000000 50.000000 30.523994 179.232330 0.007477 0.025165 +E 8980.000000 50.000000 30.498497 179.157867 0.007504 0.025257 +E 8990.000000 50.000000 30.509926 179.183640 0.007490 0.025209 +E 9000.000000 50.000000 30.513290 179.199265 0.007515 0.025294 +E 9010.000000 50.000000 30.509066 179.190979 0.007542 0.025384 +E 9020.000000 50.000000 30.511093 179.202515 0.007541 0.025381 +E 9030.000000 50.000000 30.497572 179.183090 0.007577 0.025502 +E 9040.000000 50.000000 30.511177 179.190094 0.007576 0.025502 +E 9050.000000 50.000000 30.502308 179.186401 0.007566 0.025466 +E 9060.000000 50.000000 30.494431 179.193176 0.007595 0.025566 +E 9070.000000 50.000000 30.497997 179.203308 0.007623 0.025661 +E 9080.000000 50.000000 30.481712 179.168427 0.007669 0.025813 +E 9090.000000 50.000000 30.474869 179.182693 0.007707 0.025942 +E 9100.000000 50.000000 30.477306 179.202789 0.007713 0.025962 +E 9110.000000 50.000000 30.473606 179.136215 0.007689 0.025881 +E 9120.000000 50.000000 30.474220 179.139252 0.007707 0.025942 +E 9130.000000 50.000000 30.470589 179.151428 0.007741 0.026057 +E 9140.000000 50.000000 30.474638 179.142715 0.007800 0.026258 +E 9150.000000 50.000000 30.482721 179.187149 0.007798 0.026251 +E 9160.000000 50.000000 30.460855 179.258652 0.007776 0.026176 +E 9170.000000 50.000000 30.441143 179.219116 0.007774 0.026167 +E 9180.000000 50.000000 30.465021 179.191498 0.007767 0.026148 +E 9190.000000 50.000000 30.484411 179.229477 0.007801 0.026264 +E 9200.000000 50.000000 30.458101 179.182724 0.007874 0.026509 +E 9210.000000 50.000000 30.473791 179.193680 0.007899 0.026594 +E 9220.000000 50.000000 30.462534 179.179825 0.007949 0.026760 +E 9230.000000 50.000000 30.457182 179.200012 0.007972 0.026839 +E 9240.000000 50.000000 30.469297 179.250504 0.007975 0.026850 +E 9250.000000 50.000000 30.443869 179.266052 0.007999 0.026929 +E 9260.000000 50.000000 30.460323 179.208130 0.008025 0.027020 +E 9270.000000 50.000000 30.444481 179.212692 0.008068 0.027164 +E 9280.000000 50.000000 30.445839 179.210403 0.008116 0.027327 +E 9290.000000 50.000000 30.455841 179.173477 0.008140 0.027407 +E 9300.000000 50.000000 30.444048 179.173386 0.008157 0.027464 +E 9310.000000 50.000000 30.442221 179.188797 0.008169 0.027503 +E 9320.000000 50.000000 30.446247 179.195267 0.008175 0.027524 +E 9330.000000 50.000000 30.442486 179.160645 0.008206 0.027631 +E 9340.000000 50.000000 30.414869 179.224701 0.008254 0.027791 +E 9350.000000 50.000000 30.436049 179.189468 0.008293 0.027925 +E 9360.000000 50.000000 30.431337 179.180878 0.008345 0.028097 +E 9370.000000 50.000000 30.455574 179.232025 0.008360 0.028151 +E 9380.000000 50.000000 30.428303 179.305588 0.008380 0.028217 +E 9390.000000 50.000000 30.416456 179.263458 0.008403 0.028294 +E 9400.000000 50.000000 30.418194 179.251511 0.008471 0.028524 +E 9410.000000 50.000000 30.420670 179.223785 0.008516 0.028676 +E 9420.000000 50.000000 30.407969 179.201721 0.008562 0.028829 +E 9430.000000 50.000000 30.429398 179.217667 0.008597 0.028950 +E 9440.000000 50.000000 30.439890 179.214020 0.008602 0.028968 +E 9450.000000 50.000000 30.398888 179.230911 0.008646 0.029114 +E 9460.000000 50.000000 30.398935 179.236938 0.008691 0.029267 +E 9470.000000 50.000000 30.420662 179.248352 0.008728 0.029391 +E 9480.000000 50.000000 30.408142 179.229370 0.008783 0.029578 +E 9490.000000 50.000000 30.378168 179.207001 0.008844 0.029780 +E 9500.000000 50.000000 30.392509 179.238129 0.008878 0.029896 +E 9510.000000 50.000000 30.390265 179.231155 0.008926 0.030060 +E 9520.000000 50.000000 30.429123 179.248169 0.008935 0.030094 +E 9530.000000 50.000000 30.399893 179.268631 0.008990 0.030277 +E 9540.000000 50.000000 30.390615 179.229980 0.009075 0.030563 +E 9550.000000 50.000000 30.390547 179.217697 0.009134 0.030762 +E 9560.000000 50.000000 30.392895 179.220276 0.009156 0.030837 +E 9570.000000 50.000000 30.389643 179.230133 0.009183 0.030927 +E 9580.000000 50.000000 30.377737 179.199310 0.009204 0.030997 +E 9590.000000 50.000000 30.380928 179.237137 0.009249 0.031149 +E 9600.000000 50.000000 30.405680 179.291565 0.009282 0.031264 +E 9610.000000 50.000000 30.403437 179.241318 0.009317 0.031380 +E 9620.000000 50.000000 30.383860 179.228180 0.009376 0.031579 +E 9630.000000 50.000000 30.399109 179.259308 0.009414 0.031709 +E 9640.000000 50.000000 30.405298 179.267120 0.009458 0.031857 +E 9650.000000 50.000000 30.402599 179.285736 0.009514 0.032047 +E 9660.000000 50.000000 30.368048 179.371231 0.009558 0.032190 +E 9670.000000 50.000000 30.381384 179.300720 0.009627 0.032428 +E 9680.000000 50.000000 30.388697 179.171829 0.009697 0.032663 +E 9690.000000 50.000000 30.367689 179.240372 0.009755 0.032857 +E 9700.000000 50.000000 30.368181 179.282715 0.009787 0.032966 +E 9710.000000 50.000000 30.350195 179.237717 0.009844 0.033156 +E 9720.000000 50.000000 30.372107 179.215729 0.009907 0.033369 +E 9730.000000 50.000000 30.368996 179.198013 0.009988 0.033643 +E 9740.000000 50.000000 30.375376 179.232712 0.010046 0.033839 +E 9750.000000 50.000000 30.391548 179.277451 0.010072 0.033931 +E 9760.000000 50.000000 30.364988 179.198975 0.010153 0.034199 +E 9770.000000 50.000000 30.326233 179.267090 0.010242 0.034498 +E 9780.000000 50.000000 30.337753 179.191101 0.010277 0.034618 +E 9790.000000 50.000000 30.351171 179.231247 0.010339 0.034828 +E 9800.000000 50.000000 30.371759 179.235565 0.010413 0.035080 +E 9810.000000 50.000000 30.358463 179.245346 0.010506 0.035392 +E 9820.000000 50.000000 30.375275 179.279587 0.010593 0.035685 +E 9830.000000 50.000000 30.354204 179.228912 0.010642 0.035850 +E 9840.000000 50.000000 30.355606 179.209183 0.010713 0.036092 +E 9850.000000 50.000000 30.335573 179.276886 0.010799 0.036379 +E 9860.000000 50.000000 30.354708 179.243774 0.010864 0.036599 +E 9870.000000 50.000000 30.328585 179.238968 0.010979 0.036985 +E 9880.000000 50.000000 30.325533 179.255768 0.011074 0.037306 +E 9890.000000 50.000000 30.343845 179.306137 0.011131 0.037499 +E 9900.000000 50.000000 30.316839 179.378387 0.011205 0.037747 +E 9910.000000 50.000000 30.322737 179.327591 0.011287 0.038025 +E 9920.000000 50.000000 30.334053 179.270538 0.011382 0.038345 +E 9930.000000 50.000000 30.349192 179.274521 0.011506 0.038765 +E 9940.000000 50.000000 30.335873 179.314056 0.011627 0.039174 +E 9950.000000 50.000000 30.341789 179.262772 0.011695 0.039403 +E 9960.000000 50.000000 30.343061 179.233398 0.011807 0.039780 +E 9970.000000 50.000000 30.329645 179.291138 0.011897 0.040083 +E 9980.000000 50.000000 30.328741 179.268341 0.012044 0.040578 +E 9990.000000 50.000000 30.328070 179.267197 0.012178 0.041030 +E 10000.000000 50.000000 30.328611 179.226379 0.012291 0.041411 +E 10025.000000 50.000000 30.339270 179.299973 0.006073 0.020474 +E 10050.000000 50.000000 30.339325 179.301315 0.005929 0.019987 +E 10075.000000 50.000000 30.333817 179.267303 0.005756 0.019403 +E 10100.000000 50.000000 30.322105 179.272110 0.005623 0.018957 +E 10125.000000 50.000000 30.309557 179.292755 0.005508 0.018568 +E 10150.000000 50.000000 30.315142 179.302734 0.005365 0.018085 +E 10175.000000 50.000000 30.313940 179.291092 0.005238 0.017658 +E 10200.000000 50.000000 30.305952 179.257767 0.005127 0.017282 +E 10225.000000 50.000000 30.307531 179.296371 0.004996 0.016841 +E 10250.000000 50.000000 30.307104 179.332489 0.004878 0.016444 +E 10275.000000 50.000000 30.299210 179.344360 0.004787 0.016137 +E 10300.000000 50.000000 30.292955 179.314941 0.004670 0.015743 +E 10325.000000 50.000000 30.288057 179.277786 0.004548 0.015332 +E 10350.000000 50.000000 30.287609 179.319748 0.004448 0.014995 +E 10375.000000 50.000000 30.285625 179.334183 0.004354 0.014678 +E 10400.000000 50.000000 30.282236 179.322983 0.004266 0.014382 +E 10425.000000 50.000000 30.283077 179.313507 0.004181 0.014095 +E 10450.000000 50.000000 30.283951 179.311157 0.004098 0.013815 +E 10475.000000 50.000000 30.284035 179.323105 0.004017 0.013541 +E 10500.000000 50.000000 30.275732 179.318069 0.003943 0.013293 +E 10525.000000 50.000000 30.265938 179.308975 0.003875 0.013061 +E 10550.000000 50.000000 30.265594 179.313553 0.003808 0.012836 +E 10575.000000 50.000000 30.266068 179.326279 0.003748 0.012636 +E 10600.000000 50.000000 30.267179 179.345642 0.003695 0.012457 +E 10625.000000 50.000000 30.262539 179.342224 0.003621 0.012207 +E 10650.000000 50.000000 30.258621 179.335022 0.003557 0.011990 +E 10675.000000 50.000000 30.256289 179.323181 0.003508 0.011825 +E 10700.000000 50.000000 30.253208 179.340134 0.003445 0.011614 +E 10725.000000 50.000000 30.250164 179.358612 0.003385 0.011411 +E 10750.000000 50.000000 30.247906 179.349945 0.003345 0.011276 +E 10775.000000 50.000000 30.245653 179.346436 0.003285 0.011073 +E 10800.000000 50.000000 30.243423 179.346420 0.003213 0.010832 +E 10825.000000 50.000000 30.242035 179.357773 0.003165 0.010669 +E 10850.000000 50.000000 30.235353 179.355301 0.003115 0.010499 +E 10875.000000 50.000000 30.221809 179.335159 0.003061 0.010316 +E 10900.000000 50.000000 30.223396 179.341934 0.003019 0.010174 +E 10925.000000 50.000000 30.225708 179.352997 0.002976 0.010031 +E 10950.000000 50.000000 30.222435 179.362488 0.002925 0.009858 +E 10975.000000 50.000000 30.219034 179.358246 0.002884 0.009721 +E 11000.000000 50.000000 30.215967 179.349670 0.002849 0.009603 +E 11025.000000 50.000000 30.216478 179.360062 0.002816 0.009492 +E 11050.000000 50.000000 30.212772 179.361710 0.002789 0.009400 +E 11075.000000 50.000000 30.205166 179.355301 0.002767 0.009324 +E 11100.000000 50.000000 30.203367 179.369217 0.002725 0.009184 +E 11125.000000 50.000000 30.203163 179.369629 0.002692 0.009074 +E 11150.000000 50.000000 30.205065 179.343216 0.002677 0.009023 +E 11175.000000 50.000000 30.202225 179.348404 0.002655 0.008949 +E 11200.000000 50.000000 30.198641 179.360519 0.002634 0.008878 +E 11225.000000 50.000000 30.197510 179.363876 0.002623 0.008839 +E 11250.000000 50.000000 30.193401 179.369156 0.002605 0.008777 +E 11275.000000 50.000000 30.187777 179.375504 0.002583 0.008705 +E 11300.000000 50.000000 30.188314 179.380249 0.002580 0.008694 +E 11325.000000 50.000000 30.186563 179.381668 0.002570 0.008659 +E 11350.000000 50.000000 30.182228 179.379333 0.002552 0.008598 +E 11375.000000 50.000000 30.180725 179.376755 0.002543 0.008569 +E 11400.000000 50.000000 30.178709 179.377731 0.002534 0.008537 +E 11425.000000 50.000000 30.174845 179.386353 0.002521 0.008493 +E 11450.000000 50.000000 30.172667 179.384583 0.002509 0.008452 +E 11475.000000 50.000000 30.171057 179.379791 0.002495 0.008407 +E 11500.000000 50.000000 30.169447 179.377579 0.002477 0.008344 +E 11525.000000 50.000000 30.168097 179.379593 0.002459 0.008286 +E 11550.000000 50.000000 30.166924 179.384338 0.002443 0.008231 +E 11575.000000 50.000000 30.166353 179.388702 0.002434 0.008198 +E 11600.000000 50.000000 30.163115 179.384354 0.002416 0.008140 +E 11625.000000 50.000000 30.156796 179.369919 0.002391 0.008053 +E 11650.000000 50.000000 30.156534 179.383987 0.002376 0.008003 +E 11675.000000 50.000000 30.155527 179.396530 0.002360 0.007951 +E 11700.000000 50.000000 30.151423 179.398697 0.002341 0.007884 +E 11725.000000 50.000000 30.149807 179.388351 0.002328 0.007842 +E 11750.000000 50.000000 30.147722 179.380066 0.002316 0.007799 +E 11775.000000 50.000000 30.140188 179.397934 0.002292 0.007720 +E 11800.000000 50.000000 30.140722 179.398956 0.002271 0.007648 +E 11825.000000 50.000000 30.145166 179.391068 0.002251 0.007582 +E 11850.000000 50.000000 30.134302 179.402481 0.002233 0.007520 +E 11875.000000 50.000000 30.129354 179.405533 0.002216 0.007460 +E 11900.000000 50.000000 30.130415 179.400070 0.002198 0.007402 +E 11925.000000 50.000000 30.130629 179.404663 0.002179 0.007336 +E 11950.000000 50.000000 30.130386 179.410660 0.002161 0.007276 +E 11975.000000 50.000000 30.129478 179.417801 0.002147 0.007229 +E 12000.000000 50.000000 30.124651 179.425766 0.002133 0.007181 +E 12025.000000 50.000000 30.120522 179.429428 0.002119 0.007133 +E 12050.000000 50.000000 30.121578 179.419128 0.002104 0.007084 +E 12075.000000 50.000000 30.121286 179.411514 0.002094 0.007049 +E 12100.000000 50.000000 30.119808 179.406479 0.002085 0.007018 +E 12125.000000 50.000000 30.114285 179.410980 0.002072 0.006974 +E 12150.000000 50.000000 30.111580 179.416412 0.002059 0.006932 +E 12175.000000 50.000000 30.111042 179.422562 0.002047 0.006890 +E 12200.000000 50.000000 30.109694 179.425049 0.002042 0.006874 +E 12225.000000 50.000000 30.108868 179.424820 0.002036 0.006853 +E 12250.000000 50.000000 30.108679 179.421219 0.002029 0.006828 +E 12275.000000 50.000000 30.102942 179.429855 0.002027 0.006820 +E 12300.000000 50.000000 30.099190 179.434479 0.002026 0.006819 +E 12325.000000 50.000000 30.100790 179.428040 0.002030 0.006830 +E 12350.000000 50.000000 30.101753 179.434891 0.002024 0.006811 +E 12375.000000 50.000000 30.100403 179.440170 0.002021 0.006799 +E 12400.000000 50.000000 30.091654 179.427048 0.002033 0.006841 +E 12425.000000 50.000000 30.089205 179.429413 0.002029 0.006826 +E 12450.000000 50.000000 30.089598 179.436981 0.002019 0.006793 +E 12475.000000 50.000000 30.088137 179.426987 0.002026 0.006817 +E 12500.000000 50.000000 30.087551 179.424042 0.002020 0.006796 +E 12525.000000 50.000000 30.087547 179.426575 0.002004 0.006742 +E 12550.000000 50.000000 30.083096 179.433182 0.001998 0.006720 +E 12575.000000 50.000000 30.081680 179.434418 0.001990 0.006693 +E 12600.000000 50.000000 30.083725 179.429581 0.001980 0.006658 +E 12625.000000 50.000000 30.080915 179.443893 0.001975 0.006642 +E 12650.000000 50.000000 30.079355 179.451416 0.001968 0.006618 +E 12675.000000 50.000000 30.080673 179.444504 0.001956 0.006577 +E 12700.000000 50.000000 30.076685 179.450378 0.001943 0.006533 +E 12725.000000 50.000000 30.070919 179.451370 0.001934 0.006502 +E 12750.000000 50.000000 30.063442 179.432236 0.001935 0.006506 +E 12775.000000 50.000000 30.065218 179.441727 0.001924 0.006470 +E 12800.000000 50.000000 30.068748 179.457916 0.001910 0.006422 +E 12825.000000 50.000000 30.064947 179.457123 0.001901 0.006390 +E 12850.000000 50.000000 30.063169 179.457260 0.001892 0.006361 +E 12875.000000 50.000000 30.062559 179.457626 0.001884 0.006334 +E 12900.000000 50.000000 30.062298 179.455124 0.001877 0.006309 +E 12925.000000 50.000000 30.058578 179.459946 0.001867 0.006276 +E 12950.000000 50.000000 30.052181 179.470428 0.001856 0.006237 +E 12975.000000 50.000000 30.054710 179.460846 0.001850 0.006217 +E 13000.000000 50.000000 30.054024 179.457184 0.001844 0.006196 +E 13025.000000 50.000000 30.049728 179.460144 0.001837 0.006173 +E 13050.000000 50.000000 30.050802 179.473831 0.001827 0.006139 +E 13075.000000 50.000000 30.050880 179.474670 0.001819 0.006112 +E 13100.000000 50.000000 30.048740 179.454163 0.001815 0.006097 +E 13125.000000 50.000000 30.047749 179.466904 0.001810 0.006081 +E 13150.000000 50.000000 30.046177 179.479095 0.001805 0.006064 +E 13175.000000 50.000000 30.042879 179.477142 0.001799 0.006044 +E 13200.000000 50.000000 30.042889 179.480957 0.001794 0.006026 +E 13225.000000 50.000000 30.042961 179.483276 0.001791 0.006016 +E 13250.000000 50.000000 30.040148 179.475464 0.001794 0.006024 +E 13275.000000 50.000000 30.038237 179.477036 0.001792 0.006018 +E 13300.000000 50.000000 30.036457 179.480713 0.001790 0.006010 +E 13325.000000 50.000000 30.033394 179.474716 0.001793 0.006020 +E 13350.000000 50.000000 30.033972 179.474991 0.001796 0.006030 +E 13375.000000 50.000000 30.036030 179.479111 0.001798 0.006038 +E 13400.000000 50.000000 30.032175 179.485306 0.001799 0.006041 +E 13425.000000 50.000000 30.030514 179.486816 0.001804 0.006055 +E 13450.000000 50.000000 30.030468 179.484711 0.001810 0.006077 +E 13475.000000 50.000000 30.028555 179.483109 0.001822 0.006115 +E 13500.000000 50.000000 30.027227 179.485214 0.001834 0.006155 +E 13525.000000 50.000000 30.026484 179.491074 0.001846 0.006198 +E 13550.000000 50.000000 30.024529 179.488251 0.001871 0.006281 +E 13575.000000 50.000000 30.023066 179.487198 0.001897 0.006367 +E 13600.000000 50.000000 30.022299 179.488770 0.001924 0.006456 +E 13625.000000 50.000000 30.017052 179.487427 0.001941 0.006513 +E 13650.000000 50.000000 30.014164 179.483307 0.001958 0.006569 +E 13675.000000 50.000000 30.015799 179.475098 0.001975 0.006628 +E 13700.000000 50.000000 30.014881 179.482162 0.002022 0.006783 +E 13725.000000 50.000000 30.013321 179.488419 0.002100 0.007046 +E 13750.000000 50.000000 30.011250 179.487076 0.002242 0.007522 +E 13775.000000 50.000000 30.007814 179.496078 0.002446 0.008206 +E 13800.000000 50.000000 30.005411 179.501831 0.002662 0.008928 +E 13825.000000 50.000000 30.007725 179.487244 0.002791 0.009360 +E 13850.000000 50.000000 30.010691 179.479370 0.002769 0.009286 +E 13875.000000 50.000000 30.012869 179.484161 0.002687 0.009013 +E 13900.000000 50.000000 30.012791 179.518799 0.002573 0.008629 +E 13925.000000 50.000000 30.005213 179.504425 0.002503 0.008393 +E 13950.000000 50.000000 29.998327 179.481781 0.002437 0.008171 +E 13975.000000 50.000000 30.004522 179.495712 0.002322 0.007786 +E 14000.000000 50.000000 30.001305 179.505890 0.002254 0.007556 +E 14025.000000 50.000000 29.995764 179.513641 0.002205 0.007391 +E 14050.000000 50.000000 29.999598 179.517258 0.002150 0.007207 +E 14075.000000 50.000000 29.999165 179.513794 0.002112 0.007078 +E 14100.000000 50.000000 29.996456 179.507538 0.002082 0.006977 +E 14125.000000 50.000000 29.994030 179.508728 0.002042 0.006844 +E 14150.000000 50.000000 29.991705 179.506042 0.002016 0.006756 +E 14175.000000 50.000000 29.989847 179.502808 0.001998 0.006695 +E 14200.000000 50.000000 29.992411 179.520416 0.001977 0.006624 +E 14225.000000 50.000000 29.989735 179.526520 0.001964 0.006580 +E 14250.000000 50.000000 29.983471 179.523926 0.001956 0.006554 +E 14275.000000 50.000000 29.983101 179.517593 0.001944 0.006511 +E 14300.000000 50.000000 29.982849 179.512878 0.001935 0.006482 +E 14325.000000 50.000000 29.982729 179.509705 0.001930 0.006464 +E 14350.000000 50.000000 29.983572 179.514709 0.001925 0.006445 +E 14375.000000 50.000000 29.982859 179.516998 0.001919 0.006426 +E 14400.000000 50.000000 29.980696 179.516724 0.001913 0.006406 +E 14425.000000 50.000000 29.980898 179.520294 0.001914 0.006408 +E 14450.000000 50.000000 29.978909 179.524521 0.001911 0.006396 +E 14475.000000 50.000000 29.974642 179.529419 0.001903 0.006369 +E 14500.000000 50.000000 29.976574 179.527008 0.001900 0.006361 +E 14525.000000 50.000000 29.976213 179.519394 0.001902 0.006364 +E 14550.000000 50.000000 29.973116 179.506012 0.001906 0.006380 +E 14575.000000 50.000000 29.976366 179.515472 0.001898 0.006352 +E 14600.000000 50.000000 29.974144 179.523346 0.001898 0.006350 +E 14625.000000 50.000000 29.965015 179.528336 0.001907 0.006381 +E 14650.000000 50.000000 29.966658 179.531723 0.001902 0.006362 +E 14675.000000 50.000000 29.967539 179.526535 0.001903 0.006365 +E 14700.000000 50.000000 29.966734 179.510452 0.001913 0.006398 +E 14725.000000 50.000000 29.968668 179.514587 0.001907 0.006379 +E 14750.000000 50.000000 29.968100 179.518570 0.001907 0.006378 +E 14775.000000 50.000000 29.963980 179.520584 0.001916 0.006406 +E 14800.000000 50.000000 29.965082 179.531891 0.001915 0.006401 +E 14825.000000 50.000000 29.962446 179.532944 0.001914 0.006400 +E 14850.000000 50.000000 29.954145 179.519028 0.001916 0.006407 +E 14875.000000 50.000000 29.957338 179.525589 0.001919 0.006415 +E 14900.000000 50.000000 29.957594 179.528061 0.001924 0.006431 +E 14925.000000 50.000000 29.952391 179.522415 0.001933 0.006459 +E 14950.000000 50.000000 29.955393 179.526550 0.001932 0.006455 +E 14975.000000 50.000000 29.954981 179.528641 0.001936 0.006469 +E 15000.000000 50.000000 29.948786 179.526718 0.001949 0.006513 +E 15025.000000 50.000000 29.953321 179.527344 0.001946 0.006502 +E 15050.000000 50.000000 29.953947 179.536316 0.001949 0.006510 +E 15075.000000 50.000000 29.947922 179.556595 0.001961 0.006550 +E 15100.000000 50.000000 29.948017 179.540634 0.001959 0.006544 +E 15125.000000 50.000000 29.946371 179.535309 0.001960 0.006546 +E 15150.000000 50.000000 29.941725 179.548325 0.001965 0.006562 +E 15175.000000 50.000000 29.941496 179.539444 0.001969 0.006573 +E 15200.000000 50.000000 29.942516 179.537521 0.001974 0.006592 +E 15225.000000 50.000000 29.944754 179.546753 0.001984 0.006623 +E 15250.000000 50.000000 29.942436 179.543625 0.001987 0.006634 +E 15275.000000 50.000000 29.938793 179.544434 0.001994 0.006656 +E 15300.000000 50.000000 29.933817 179.551086 0.002006 0.006694 +E 15325.000000 50.000000 29.938711 179.546188 0.002007 0.006698 +E 15350.000000 50.000000 29.938967 179.542130 0.002012 0.006714 +E 15375.000000 50.000000 29.933300 179.539658 0.002022 0.006747 +E 15400.000000 50.000000 29.931229 179.556473 0.002026 0.006760 +E 15425.000000 50.000000 29.930384 179.565002 0.002036 0.006790 +E 15450.000000 50.000000 29.930771 179.563950 0.002051 0.006841 +E 15475.000000 50.000000 29.938086 179.555161 0.002054 0.006851 +E 15500.000000 50.000000 29.938864 179.553223 0.002061 0.006874 +E 15525.000000 50.000000 29.933184 179.557907 0.002072 0.006908 +E 15550.000000 50.000000 29.931524 179.548126 0.002070 0.006902 +E 15575.000000 50.000000 29.928980 179.545761 0.002078 0.006926 +E 15600.000000 50.000000 29.925861 179.550339 0.002093 0.006976 +E 15625.000000 50.000000 29.927835 179.561096 0.002097 0.006989 +E 15650.000000 50.000000 29.926607 179.560883 0.002106 0.007019 +E 15675.000000 50.000000 29.923122 179.552933 0.002119 0.007060 +E 15700.000000 50.000000 29.923845 179.559723 0.002121 0.007069 +E 15725.000000 50.000000 29.922953 179.564621 0.002130 0.007097 +E 15750.000000 50.000000 29.921459 179.567734 0.002143 0.007139 +E 15775.000000 50.000000 29.924519 179.566864 0.002151 0.007166 +E 15800.000000 50.000000 29.923111 179.571686 0.002160 0.007196 +E 15825.000000 50.000000 29.919291 179.578995 0.002171 0.007230 +E 15850.000000 50.000000 29.917509 179.580063 0.002185 0.007277 +E 15875.000000 50.000000 29.916458 179.571503 0.002194 0.007307 +E 15900.000000 50.000000 29.916624 179.560913 0.002202 0.007330 +E 15925.000000 50.000000 29.920561 179.564209 0.002214 0.007370 +E 15950.000000 50.000000 29.919048 179.572739 0.002229 0.007419 +E 15975.000000 50.000000 29.916357 179.578796 0.002244 0.007469 +E 16000.000000 50.000000 29.917961 179.567841 0.002254 0.007503 +E 16025.000000 50.000000 29.920023 179.572235 0.002264 0.007536 +E 16050.000000 50.000000 29.920021 179.576477 0.002276 0.007576 +E 16075.000000 50.000000 29.913780 179.565414 0.002294 0.007634 +E 16100.000000 50.000000 29.908836 179.570587 0.002309 0.007684 +E 16125.000000 50.000000 29.906479 179.575302 0.002322 0.007726 +E 16150.000000 50.000000 29.909039 179.569382 0.002332 0.007759 +E 16175.000000 50.000000 29.907488 179.565125 0.002353 0.007826 +E 16200.000000 50.000000 29.906897 179.566666 0.002372 0.007890 +E 16225.000000 50.000000 29.909378 179.577866 0.002387 0.007937 +E 16250.000000 50.000000 29.912039 179.586533 0.002403 0.007991 +E 16275.000000 50.000000 29.911755 179.588699 0.002421 0.008051 +E 16300.000000 50.000000 29.907314 179.582184 0.002443 0.008121 +E 16325.000000 50.000000 29.904970 179.578934 0.002463 0.008188 +E 16350.000000 50.000000 29.905828 179.579453 0.002485 0.008262 +E 16375.000000 50.000000 29.910107 179.583878 0.002511 0.008346 +E 16400.000000 50.000000 29.909285 179.576080 0.002530 0.008410 +E 16425.000000 50.000000 29.907387 179.577789 0.002562 0.008514 +E 16450.000000 50.000000 29.904627 179.587250 0.002603 0.008649 +E 16475.000000 50.000000 29.902878 179.588730 0.002620 0.008707 +E 16500.000000 50.000000 29.904718 179.583328 0.002658 0.008832 +E 16525.000000 50.000000 29.907667 179.575714 0.002710 0.009003 +E 16550.000000 50.000000 29.901731 179.584335 0.002758 0.009163 +E 16575.000000 50.000000 29.896313 179.578873 0.002829 0.009397 +E 16600.000000 50.000000 29.893032 179.572754 0.002916 0.009685 +E 16625.000000 50.000000 29.897575 179.594009 0.003016 0.010018 +E 16650.000000 50.000000 29.899906 179.597870 0.003187 0.010585 +E 16675.000000 50.000000 29.900501 179.598389 0.003411 0.011328 +E 16700.000000 50.000000 29.897877 179.608627 0.003687 0.012243 +E 16725.000000 50.000000 29.900707 179.591629 0.004098 0.013605 +E 16750.000000 50.000000 29.904716 179.589706 0.004631 0.015373 +E 16775.000000 50.000000 29.907181 179.644882 0.005301 0.017596 +E 16800.000000 50.000000 29.895750 179.623108 0.006182 0.020522 +E 16825.000000 50.000000 29.893005 179.591934 0.007257 0.024086 +E 16850.000000 50.000000 29.912489 179.569946 0.008470 0.028111 +E 16875.000000 50.000000 29.904127 179.600922 0.009913 0.032898 +E 16900.000000 50.000000 29.893539 179.645523 0.011633 0.038601 +E 16925.000000 50.000000 29.882179 179.699280 0.013605 0.045141 +E 16950.000000 50.000000 29.876783 179.660049 0.015759 0.052284 +E 16975.000000 50.000000 29.872837 179.641144 0.018087 0.060003 +E 17000.000000 50.000000 29.875265 179.633972 0.020630 0.068434 +E 1930.000000 60.000000 38.278538 120.925606 0.008911 0.034066 +E 1940.000000 60.000000 38.289627 121.167152 0.008109 0.030967 +E 1950.000000 60.000000 38.272587 121.402153 0.007470 0.028480 +E 1960.000000 60.000000 38.260330 121.727058 0.007050 0.026845 +E 1970.000000 60.000000 38.263359 122.087471 0.006708 0.025519 +E 1980.000000 60.000000 38.250435 122.430313 0.006447 0.024495 +E 1990.000000 60.000000 38.254402 122.826157 0.006225 0.023632 +E 2000.000000 60.000000 38.248089 123.207130 0.006021 0.022838 +E 2010.000000 60.000000 38.208851 123.652802 0.005855 0.022184 +E 2020.000000 60.000000 38.201485 124.028328 0.005674 0.021483 +E 2030.000000 60.000000 38.186844 124.411926 0.005493 0.020786 +E 2040.000000 60.000000 38.146591 124.798195 0.005337 0.020175 +E 2050.000000 60.000000 38.125309 125.155060 0.005179 0.019562 +E 2060.000000 60.000000 38.112541 125.560593 0.005024 0.018960 +E 2070.000000 60.000000 38.073868 125.876305 0.004877 0.018376 +E 2080.000000 60.000000 38.041710 126.188416 0.004740 0.017830 +E 2090.000000 60.000000 38.023827 126.548409 0.004607 0.017304 +E 2100.000000 60.000000 37.994781 126.865059 0.004488 0.016825 +E 2110.000000 60.000000 37.979832 127.161507 0.004388 0.016416 +E 2120.000000 60.000000 37.957214 127.460625 0.004293 0.016024 +E 2130.000000 60.000000 37.933399 127.870689 0.004201 0.015650 +E 2140.000000 60.000000 37.917744 128.205978 0.004121 0.015320 +E 2150.000000 60.000000 37.906982 128.504715 0.004046 0.015011 +E 2160.000000 60.000000 37.893452 128.830780 0.003979 0.014737 +E 2170.000000 60.000000 37.878872 129.184280 0.003919 0.014485 +E 2180.000000 60.000000 37.867455 129.537735 0.003855 0.014228 +E 2190.000000 60.000000 37.860775 129.854584 0.003790 0.013964 +E 2200.000000 60.000000 37.847683 130.185211 0.003727 0.013712 +E 2210.000000 60.000000 37.830784 130.515106 0.003670 0.013479 +E 2220.000000 60.000000 37.816380 130.892395 0.003611 0.013244 +E 2230.000000 60.000000 37.801361 131.283890 0.003557 0.013029 +E 2240.000000 60.000000 37.778706 131.628616 0.003507 0.012828 +E 2250.000000 60.000000 37.743412 131.985764 0.003463 0.012646 +E 2260.000000 60.000000 37.702560 132.398148 0.003422 0.012478 +E 2270.000000 60.000000 37.650112 132.785751 0.003380 0.012309 +E 2280.000000 60.000000 37.578609 133.152740 0.003341 0.012146 +E 2290.000000 60.000000 37.500362 133.524399 0.003302 0.011982 +E 2300.000000 60.000000 37.402233 133.862473 0.003269 0.011841 +E 2310.000000 60.000000 37.286510 134.168198 0.003240 0.011713 +E 2320.000000 60.000000 37.176014 134.370193 0.003211 0.011586 +E 2330.000000 60.000000 37.065907 134.522812 0.003186 0.011474 +E 2340.000000 60.000000 36.972538 134.655243 0.003163 0.011370 +E 2350.000000 60.000000 36.899826 134.763580 0.003138 0.011264 +E 2360.000000 60.000000 36.847996 134.777390 0.003116 0.011170 +E 2370.000000 60.000000 36.820316 134.843552 0.003092 0.011073 +E 2380.000000 60.000000 36.813324 134.895035 0.003068 0.010978 +E 2390.000000 60.000000 36.829830 134.925934 0.003047 0.010899 +E 2400.000000 60.000000 36.873516 134.992889 0.003028 0.010825 +E 2410.000000 60.000000 36.921291 135.080475 0.003009 0.010757 +E 2420.000000 60.000000 36.972084 135.234268 0.002991 0.010691 +E 2430.000000 60.000000 37.040279 135.401321 0.002978 0.010644 +E 2440.000000 60.000000 37.111458 135.546844 0.002965 0.010595 +E 2450.000000 60.000000 37.185677 135.716415 0.002952 0.010548 +E 2460.000000 60.000000 37.267071 135.944778 0.002942 0.010512 +E 2470.000000 60.000000 37.349518 136.183685 0.002932 0.010480 +E 2480.000000 60.000000 37.428848 136.428253 0.002923 0.010446 +E 2490.000000 60.000000 37.515572 136.672287 0.002916 0.010421 +E 2500.000000 60.000000 37.599571 136.946274 0.002913 0.010412 +E 2510.000000 60.000000 37.672523 137.251846 0.002913 0.010409 +E 2520.000000 60.000000 37.751587 137.545654 0.002910 0.010397 +E 2530.000000 60.000000 37.829937 137.842560 0.002911 0.010401 +E 2540.000000 60.000000 37.906437 138.159271 0.002918 0.010424 +E 2550.000000 60.000000 37.980633 138.489120 0.002924 0.010445 +E 2560.000000 60.000000 38.052593 138.831039 0.002934 0.010477 +E 2570.000000 60.000000 38.130104 139.198883 0.002945 0.010518 +E 2580.000000 60.000000 38.199741 139.574127 0.002958 0.010560 +E 2590.000000 60.000000 38.265358 139.923981 0.002972 0.010609 +E 2600.000000 60.000000 38.340096 140.324966 0.002991 0.010674 +E 2610.000000 60.000000 38.403397 140.742645 0.003011 0.010743 +E 2620.000000 60.000000 38.471260 141.163712 0.003030 0.010809 +E 2630.000000 60.000000 38.548508 141.574554 0.003052 0.010887 +E 2640.000000 60.000000 38.605827 142.005463 0.003078 0.010977 +E 2650.000000 60.000000 38.674141 142.449142 0.003105 0.011070 +E 2660.000000 60.000000 38.742176 142.932846 0.003136 0.011180 +E 2670.000000 60.000000 38.801376 143.432236 0.003168 0.011291 +E 2680.000000 60.000000 38.849037 143.927231 0.003199 0.011399 +E 2690.000000 60.000000 38.892525 144.469009 0.003230 0.011502 +E 2700.000000 60.000000 38.927624 145.003006 0.003263 0.011617 +E 2710.000000 60.000000 38.938728 145.538116 0.003303 0.011751 +E 2720.000000 60.000000 38.951885 146.128418 0.003338 0.011870 +E 2730.000000 60.000000 38.948807 146.727997 0.003373 0.011986 +E 2740.000000 60.000000 38.924351 147.303818 0.003413 0.012119 +E 2750.000000 60.000000 38.890865 147.869202 0.003451 0.012243 +E 2760.000000 60.000000 38.849129 148.433777 0.003492 0.012376 +E 2770.000000 60.000000 38.786488 148.970932 0.003542 0.012540 +E 2780.000000 60.000000 38.711948 149.538452 0.003578 0.012652 +E 2790.000000 60.000000 38.637608 150.072784 0.003609 0.012747 +E 2800.000000 60.000000 38.561638 150.581985 0.003643 0.012852 +E 2810.000000 60.000000 38.491306 151.085861 0.003684 0.012983 +E 2820.000000 60.000000 38.407974 151.590714 0.003727 0.013119 +E 2830.000000 60.000000 38.316181 152.109497 0.003769 0.013248 +E 2840.000000 60.000000 38.230812 152.638489 0.003808 0.013368 +E 2850.000000 60.000000 38.129639 153.146362 0.003858 0.013528 +E 2860.000000 60.000000 38.022018 153.639267 0.003911 0.013692 +E 2870.000000 60.000000 37.907173 154.173355 0.003958 0.013837 +E 2880.000000 60.000000 37.756218 154.745682 0.004016 0.014018 +E 2890.000000 60.000000 37.594189 155.254028 0.004078 0.014209 +E 2900.000000 60.000000 37.404324 155.725388 0.004145 0.014412 +E 2910.000000 60.000000 37.198780 156.210236 0.004216 0.014629 +E 2920.000000 60.000000 36.982185 156.603745 0.004289 0.014851 +E 2930.000000 60.000000 36.750244 156.912109 0.004364 0.015075 +E 2940.000000 60.000000 36.525887 157.233994 0.004435 0.015289 +E 2950.000000 60.000000 36.322727 157.499176 0.004505 0.015499 +E 2960.000000 60.000000 36.112434 157.684692 0.004580 0.015724 +E 2970.000000 60.000000 35.914429 157.861572 0.004650 0.015933 +E 2980.000000 60.000000 35.721848 158.017960 0.004724 0.016159 +E 2990.000000 60.000000 35.556854 158.179062 0.004797 0.016383 +E 3000.000000 60.000000 35.397190 158.308258 0.004872 0.016612 +E 3010.000000 60.000000 35.242344 158.414810 0.004941 0.016822 +E 3020.000000 60.000000 35.087296 158.471970 0.005016 0.017053 +E 3030.000000 60.000000 34.942444 158.543625 0.005099 0.017312 +E 3040.000000 60.000000 34.823170 158.614563 0.005172 0.017541 +E 3050.000000 60.000000 34.712116 158.689301 0.005256 0.017807 +E 3060.000000 60.000000 34.584831 158.759933 0.005337 0.018060 +E 3070.000000 60.000000 34.494347 158.823944 0.005409 0.018289 +E 3080.000000 60.000000 34.409149 158.856583 0.005487 0.018536 +E 3090.000000 60.000000 34.320488 158.893677 0.005569 0.018798 +E 3100.000000 60.000000 34.220039 158.963379 0.005649 0.019049 +E 3110.000000 60.000000 34.131813 159.003479 0.005723 0.019284 +E 3120.000000 60.000000 34.078037 159.040726 0.005799 0.019528 +E 3130.000000 60.000000 34.008434 159.145584 0.005865 0.019737 +E 3140.000000 60.000000 33.922028 159.249649 0.005941 0.019979 +E 3150.000000 60.000000 33.860493 159.308792 0.006022 0.020238 +E 3160.000000 60.000000 33.809444 159.339249 0.006092 0.020465 +E 3170.000000 60.000000 33.743847 159.375107 0.006170 0.020712 +E 3180.000000 60.000000 33.700306 159.452164 0.006236 0.020925 +E 3190.000000 60.000000 33.636578 159.533142 0.006316 0.021184 +E 3200.000000 60.000000 33.597847 159.579269 0.006388 0.021417 +E 3210.000000 60.000000 33.570705 159.651001 0.006465 0.021667 +E 3220.000000 60.000000 33.527607 159.738968 0.006540 0.021909 +E 3230.000000 60.000000 33.492535 159.807205 0.006611 0.022142 +E 3240.000000 60.000000 33.454685 159.904587 0.006684 0.022378 +E 3250.000000 60.000000 33.408737 159.925537 0.006761 0.022628 +E 3260.000000 60.000000 33.386749 160.073517 0.006887 0.023043 +E 3270.000000 60.000000 33.349045 160.167694 0.007041 0.023548 +E 3280.000000 60.000000 33.320282 160.205780 0.007180 0.024009 +E 3290.000000 60.000000 33.310574 160.317963 0.007288 0.024366 +E 3300.000000 60.000000 33.272793 160.365402 0.007405 0.024748 +E 3310.000000 60.000000 33.239120 160.442200 0.007520 0.025124 +E 3320.000000 60.000000 33.248146 160.567780 0.007588 0.025350 +E 3330.000000 60.000000 33.221409 160.651962 0.007652 0.025559 +E 3340.000000 60.000000 33.190601 160.696381 0.007707 0.025736 +E 3350.000000 60.000000 33.160027 160.759171 0.007775 0.025954 +E 3360.000000 60.000000 33.157284 160.913376 0.007829 0.026131 +E 3370.000000 60.000000 33.151142 161.031982 0.007863 0.026244 +E 3380.000000 60.000000 33.128952 161.091217 0.007901 0.026365 +E 3390.000000 60.000000 33.123825 161.248840 0.007905 0.026375 +E 3400.000000 60.000000 33.121628 161.289963 0.007921 0.026424 +E 3410.000000 60.000000 33.117199 161.372971 0.007957 0.026541 +E 3420.000000 60.000000 33.136242 161.551849 0.008015 0.026734 +E 3430.000000 60.000000 33.118813 161.631927 0.008070 0.026916 +E 3440.000000 60.000000 33.120609 161.662888 0.008118 0.027073 +E 3450.000000 60.000000 33.127647 161.751862 0.008197 0.027336 +E 3460.000000 60.000000 33.129829 161.871964 0.008253 0.027521 +E 3470.000000 60.000000 33.143055 162.011581 0.008326 0.027765 +E 3480.000000 60.000000 33.182995 162.125031 0.008376 0.027934 +E 3490.000000 60.000000 33.178242 162.265320 0.008434 0.028125 +E 3500.000000 60.000000 33.208729 162.391495 0.008489 0.028310 +E 3510.000000 60.000000 33.270031 162.455765 0.008542 0.028495 +E 3520.000000 60.000000 33.287575 162.586380 0.008603 0.028698 +E 3530.000000 60.000000 33.324596 162.701187 0.008660 0.028892 +E 3540.000000 60.000000 33.388176 162.842087 0.008724 0.029116 +E 3550.000000 60.000000 33.437271 163.059845 0.008778 0.029299 +E 3560.000000 60.000000 33.500336 163.214371 0.008819 0.029447 +E 3570.000000 60.000000 33.572987 163.434769 0.008865 0.029608 +E 3580.000000 60.000000 33.646152 163.691727 0.008911 0.029775 +E 3590.000000 60.000000 33.727108 163.895004 0.008954 0.029929 +E 3600.000000 60.000000 33.781876 164.222900 0.009003 0.030099 +E 3610.000000 60.000000 33.860466 164.615067 0.009050 0.030268 +E 3620.000000 60.000000 33.944340 165.009338 0.009059 0.030313 +E 3630.000000 60.000000 33.995335 165.418808 0.009084 0.030405 +E 3640.000000 60.000000 34.033634 165.834747 0.009140 0.030598 +E 3650.000000 60.000000 34.030277 166.278992 0.009224 0.030877 +E 3660.000000 60.000000 34.045547 166.755280 0.009199 0.030794 +E 3670.000000 60.000000 34.054699 167.277054 0.009130 0.030562 +E 3680.000000 60.000000 34.021641 167.829895 0.009114 0.030504 +E 3690.000000 60.000000 33.948914 168.359634 0.009167 0.030667 +E 3700.000000 60.000000 33.886036 168.780380 0.009285 0.031048 +E 3710.000000 60.000000 33.799667 169.237854 0.009413 0.031460 +E 3720.000000 60.000000 33.718525 169.740021 0.009466 0.031623 +E 3730.000000 60.000000 33.590622 170.219986 0.009554 0.031894 +E 3740.000000 60.000000 33.436661 170.644150 0.009657 0.032211 +E 3750.000000 60.000000 33.298901 171.032684 0.009678 0.032258 +E 3760.000000 60.000000 33.148689 171.438858 0.009680 0.032237 +E 3770.000000 60.000000 32.987064 171.779633 0.009720 0.032345 +E 3780.000000 60.000000 32.813496 172.089767 0.009697 0.032243 +E 3790.000000 60.000000 32.649033 172.327026 0.009658 0.032089 +E 3800.000000 60.000000 32.504410 172.576401 0.009674 0.032120 +E 3810.000000 60.000000 32.324226 172.783401 0.009788 0.032476 +E 3820.000000 60.000000 32.169716 173.004089 0.009887 0.032784 +E 3830.000000 60.000000 32.045029 173.197052 0.009837 0.032602 +E 3840.000000 60.000000 31.887426 173.305191 0.009873 0.032701 +E 3850.000000 60.000000 31.747267 173.383835 0.009987 0.033065 +E 3860.000000 60.000000 31.593290 173.526245 0.009957 0.032948 +E 3870.000000 60.000000 31.457291 173.761185 0.009832 0.032519 +E 3880.000000 60.000000 31.337835 173.822891 0.009699 0.032070 +E 3890.000000 60.000000 31.201456 173.942535 0.009754 0.032240 +E 3900.000000 60.000000 31.086119 174.092270 0.010046 0.033195 +E 3910.000000 60.000000 30.981161 174.098099 0.010351 0.034194 +E 3920.000000 60.000000 30.857571 174.223724 0.010321 0.034084 +E 3930.000000 60.000000 30.752151 174.301712 0.010158 0.033539 +E 3940.000000 60.000000 30.653267 174.274979 0.010031 0.033113 +E 3950.000000 60.000000 30.538107 174.371429 0.010022 0.033077 +E 3960.000000 60.000000 30.419920 174.473465 0.010147 0.033485 +E 3970.000000 60.000000 30.315388 174.518097 0.010266 0.033872 +E 3980.000000 60.000000 30.223312 174.605606 0.010137 0.033443 +E 3990.000000 60.000000 30.146410 174.663269 0.009991 0.032958 +E 4000.000000 60.000000 30.048800 174.738602 0.010085 0.033266 +E 4010.000000 60.000000 29.952791 174.776459 0.010330 0.034074 +E 4020.000000 60.000000 29.856138 174.821655 0.010492 0.034605 +E 4030.000000 60.000000 29.761572 174.831024 0.010520 0.034698 +E 4040.000000 60.000000 29.693836 174.841888 0.010433 0.034410 +E 4050.000000 60.000000 29.618488 174.864624 0.010228 0.033733 +E 4060.000000 60.000000 29.524929 174.949417 0.010025 0.033064 +E 4070.000000 60.000000 29.432436 175.032135 0.010075 0.033229 +E 4080.000000 60.000000 29.368515 175.057571 0.010378 0.034231 +E 4090.000000 60.000000 29.302229 175.077499 0.010620 0.035031 +E 4100.000000 60.000000 29.227179 175.117371 0.010671 0.035201 +E 4110.000000 60.000000 29.139574 175.125824 0.010677 0.035223 +E 4120.000000 60.000000 29.073658 175.188690 0.010556 0.034825 +E 4130.000000 60.000000 29.017221 175.296875 0.010255 0.033836 +E 4140.000000 60.000000 28.928747 175.270020 0.010152 0.033497 +E 4150.000000 60.000000 28.849491 175.290283 0.010328 0.034084 +E 4160.000000 60.000000 28.766273 175.296829 0.010441 0.034460 +E 4170.000000 60.000000 28.711807 175.350739 0.010416 0.034381 +E 4180.000000 60.000000 28.663584 175.428833 0.010424 0.034412 +E 4190.000000 60.000000 28.568825 175.439590 0.010576 0.034919 +E 4200.000000 60.000000 28.518906 175.427872 0.010613 0.035044 +E 4210.000000 60.000000 28.465252 175.491501 0.010341 0.034152 +E 4220.000000 60.000000 28.393484 175.512482 0.010016 0.033083 +E 4230.000000 60.000000 28.333054 175.529251 0.009825 0.032457 +E 4240.000000 60.000000 28.296436 175.568710 0.009809 0.032408 +E 4250.000000 60.000000 28.235840 175.664185 0.010160 0.033572 +E 4260.000000 60.000000 28.162455 175.715546 0.010574 0.034947 +E 4270.000000 60.000000 28.088741 175.594986 0.010549 0.034873 +E 4280.000000 60.000000 28.031204 175.616592 0.010251 0.033893 +E 4290.000000 60.000000 28.008190 175.663742 0.010336 0.034176 +E 4300.000000 60.000000 27.946365 175.650665 0.010411 0.034431 +E 4310.000000 60.000000 27.897816 175.723389 0.010334 0.034184 +E 4320.000000 60.000000 27.851152 175.799011 0.010494 0.034717 +E 4330.000000 60.000000 27.802034 175.824066 0.010666 0.035292 +E 4340.000000 60.000000 27.741825 175.777390 0.010440 0.034554 +E 4350.000000 60.000000 27.707724 175.843536 0.010328 0.034188 +E 4360.000000 60.000000 27.655363 175.889053 0.010482 0.034704 +E 4370.000000 60.000000 27.593792 175.831848 0.010510 0.034807 +E 4380.000000 60.000000 27.568989 175.843643 0.010441 0.034580 +E 4390.000000 60.000000 27.497252 175.890350 0.010379 0.034386 +E 4400.000000 60.000000 27.432423 175.863876 0.010357 0.034324 +E 4410.000000 60.000000 27.402828 175.894363 0.010187 0.033763 +E 4420.000000 60.000000 27.351501 175.900925 0.009855 0.032673 +E 4430.000000 60.000000 27.305904 175.990524 0.009818 0.032557 +E 4440.000000 60.000000 27.257071 176.074188 0.009920 0.032903 +E 4450.000000 60.000000 27.211569 176.044205 0.009872 0.032751 +E 4460.000000 60.000000 27.175421 176.038147 0.009804 0.032530 +E 4470.000000 60.000000 27.145021 176.047882 0.009859 0.032719 +E 4480.000000 60.000000 27.107508 176.052765 0.009926 0.032946 +E 4490.000000 60.000000 27.057575 176.026657 0.009928 0.032963 +E 4500.000000 60.000000 27.015406 176.047501 0.009876 0.032798 +E 4510.000000 60.000000 26.976776 176.107620 0.009879 0.032815 +E 4520.000000 60.000000 26.933971 176.161606 0.009921 0.032963 +E 4530.000000 60.000000 26.873550 176.117493 0.009921 0.032973 +E 4540.000000 60.000000 26.841284 176.114029 0.009880 0.032841 +E 4550.000000 60.000000 26.810656 176.184128 0.009838 0.032711 +E 4560.000000 60.000000 26.763489 176.192047 0.009762 0.032466 +E 4570.000000 60.000000 26.728596 176.215195 0.009627 0.032023 +E 4580.000000 60.000000 26.702223 176.252228 0.009410 0.031307 +E 4590.000000 60.000000 26.676874 176.214218 0.009252 0.030785 +E 4600.000000 60.000000 26.646814 176.273590 0.009392 0.031259 +E 4610.000000 60.000000 26.619883 176.292831 0.009633 0.032067 +E 4620.000000 60.000000 26.555542 176.210007 0.009731 0.032405 +E 4630.000000 60.000000 26.506369 176.289368 0.009515 0.031697 +E 4640.000000 60.000000 26.474350 176.337646 0.009170 0.030553 +E 4650.000000 60.000000 26.455833 176.291962 0.009048 0.030151 +E 4660.000000 60.000000 26.408234 176.303009 0.009164 0.030547 +E 4670.000000 60.000000 26.380226 176.350204 0.009351 0.031178 +E 4680.000000 60.000000 26.374599 176.368271 0.009425 0.031427 +E 4690.000000 60.000000 26.341553 176.367615 0.009469 0.031581 +E 4700.000000 60.000000 26.293945 176.340240 0.009668 0.032254 +E 4710.000000 60.000000 26.244570 176.373627 0.009821 0.032778 +E 4720.000000 60.000000 26.194862 176.417282 0.009715 0.032437 +E 4730.000000 60.000000 26.190964 176.419846 0.009506 0.031740 +E 4740.000000 60.000000 26.149305 176.446381 0.009446 0.031549 +E 4750.000000 60.000000 26.101995 176.481750 0.009499 0.031738 +E 4760.000000 60.000000 26.088388 176.409637 0.009465 0.031627 +E 4770.000000 60.000000 26.063517 176.455139 0.009384 0.031362 +E 4780.000000 60.000000 26.032337 176.478882 0.009307 0.031114 +E 4790.000000 60.000000 25.999237 176.472275 0.009231 0.030867 +E 4800.000000 60.000000 25.980856 176.504532 0.009210 0.030804 +E 4810.000000 60.000000 25.926596 176.540421 0.009206 0.030802 +E 4820.000000 60.000000 25.901669 176.609268 0.009212 0.030828 +E 4830.000000 60.000000 25.859745 176.582977 0.009187 0.030754 +E 4840.000000 60.000000 25.850281 176.518616 0.009070 0.030366 +E 4850.000000 60.000000 25.826576 176.556473 0.008655 0.028982 +E 4860.000000 60.000000 25.761721 176.573395 0.007631 0.025568 +E 4870.000000 60.000000 25.742886 176.587372 0.007259 0.024324 +E 4880.000000 60.000000 25.733778 176.599365 0.008340 0.027951 +E 4890.000000 60.000000 25.700447 176.624100 0.008891 0.029806 +E 4900.000000 60.000000 25.680149 176.685089 0.008881 0.029778 +E 4910.000000 60.000000 25.651131 176.645981 0.008804 0.029529 +E 4920.000000 60.000000 25.613861 176.612991 0.008834 0.029638 +E 4930.000000 60.000000 25.595921 176.644302 0.008809 0.029558 +E 4940.000000 60.000000 25.572414 176.637589 0.008755 0.029384 +E 4950.000000 60.000000 25.557734 176.668549 0.008845 0.029692 +E 4960.000000 60.000000 25.532616 176.692612 0.008896 0.029869 +E 4970.000000 60.000000 25.488306 176.730316 0.008841 0.029696 +E 4980.000000 60.000000 25.456898 176.730347 0.008758 0.029427 +E 4990.000000 60.000000 25.453512 176.702972 0.008636 0.029017 +E 5000.000000 60.000000 25.423134 176.683350 0.008602 0.028912 +E 5010.000000 60.000000 25.365210 176.707062 0.008608 0.028947 +E 5020.000000 60.000000 25.354765 176.725418 0.008549 0.028754 +E 5030.000000 60.000000 25.368973 176.784119 0.008534 0.028701 +E 5040.000000 60.000000 25.323324 176.793213 0.008570 0.028834 +E 5050.000000 60.000000 25.298212 176.812592 0.008589 0.028903 +E 5060.000000 60.000000 25.266930 176.803223 0.008558 0.028809 +E 5070.000000 60.000000 25.232239 176.860031 0.008547 0.028783 +E 5080.000000 60.000000 25.216959 176.864853 0.008563 0.028842 +E 5090.000000 60.000000 25.189411 176.860596 0.008563 0.028849 +E 5100.000000 60.000000 25.165642 176.862946 0.008565 0.028863 +E 5110.000000 60.000000 25.160057 176.817871 0.008527 0.028738 +E 5120.000000 60.000000 25.131575 176.894211 0.008476 0.028573 +E 5130.000000 60.000000 25.111036 176.897339 0.008472 0.028566 +E 5140.000000 60.000000 25.094059 176.843063 0.008463 0.028542 +E 5150.000000 60.000000 25.063961 176.853561 0.008449 0.028504 +E 5160.000000 60.000000 25.046520 176.905777 0.008422 0.028418 +E 5170.000000 60.000000 25.035845 176.910019 0.008404 0.028363 +E 5180.000000 60.000000 24.996275 176.992508 0.008391 0.028328 +E 5190.000000 60.000000 24.961550 176.952682 0.008372 0.028275 +E 5200.000000 60.000000 24.953186 176.885071 0.008322 0.028110 +E 5210.000000 60.000000 24.939386 176.926926 0.008290 0.028006 +E 5220.000000 60.000000 24.928879 176.874023 0.008283 0.027986 +E 5230.000000 60.000000 24.896118 176.927261 0.008267 0.027941 +E 5240.000000 60.000000 24.874800 176.985977 0.008245 0.027873 +E 5250.000000 60.000000 24.852068 176.943390 0.008216 0.027785 +E 5260.000000 60.000000 24.844517 176.914932 0.008159 0.027593 +E 5270.000000 60.000000 24.826757 176.960922 0.008088 0.027360 +E 5280.000000 60.000000 24.795128 177.054306 0.008075 0.027326 +E 5290.000000 60.000000 24.771000 177.019272 0.008070 0.027318 +E 5300.000000 60.000000 24.737732 176.930389 0.008051 0.027263 +E 5310.000000 60.000000 24.724621 176.955475 0.008047 0.027252 +E 5320.000000 60.000000 24.731998 177.016464 0.008030 0.027194 +E 5330.000000 60.000000 24.708378 177.050461 0.007980 0.027034 +E 5340.000000 60.000000 24.689678 177.071442 0.007913 0.026812 +E 5350.000000 60.000000 24.665508 177.000092 0.007893 0.026751 +E 5360.000000 60.000000 24.649559 177.027817 0.007880 0.026711 +E 5370.000000 60.000000 24.615076 177.047516 0.007872 0.026695 +E 5380.000000 60.000000 24.601282 177.033585 0.007846 0.026614 +E 5390.000000 60.000000 24.594397 177.045776 0.007786 0.026413 +E 5400.000000 60.000000 24.570305 177.004883 0.007755 0.026314 +E 5410.000000 60.000000 24.541460 177.028702 0.007736 0.026259 +E 5420.000000 60.000000 24.516876 177.072250 0.007690 0.026110 +E 5430.000000 60.000000 24.504061 177.122177 0.007630 0.025913 +E 5440.000000 60.000000 24.487879 177.134186 0.007606 0.025837 +E 5450.000000 60.000000 24.479403 177.131561 0.007585 0.025767 +E 5460.000000 60.000000 24.461014 177.110443 0.007584 0.025772 +E 5470.000000 60.000000 24.449705 177.068253 0.007573 0.025736 +E 5480.000000 60.000000 24.431948 177.112625 0.007517 0.025551 +E 5490.000000 60.000000 24.420425 177.143066 0.007468 0.025388 +E 5500.000000 60.000000 24.403137 177.103607 0.007463 0.025378 +E 5510.000000 60.000000 24.365171 177.193512 0.007472 0.025420 +E 5520.000000 60.000000 24.361694 177.201309 0.007460 0.025382 +E 5530.000000 60.000000 24.354019 177.167175 0.007435 0.025302 +E 5540.000000 60.000000 24.331297 177.156281 0.007407 0.025213 +E 5550.000000 60.000000 24.310076 177.201019 0.007398 0.025189 +E 5560.000000 60.000000 24.286383 177.210907 0.007388 0.025164 +E 5570.000000 60.000000 24.273184 177.197266 0.007366 0.025092 +E 5580.000000 60.000000 24.253580 177.187195 0.007354 0.025058 +E 5590.000000 60.000000 24.235178 177.174820 0.007350 0.025051 +E 5600.000000 60.000000 24.244492 177.148453 0.007324 0.024961 +E 5610.000000 60.000000 24.223829 177.142838 0.007289 0.024848 +E 5620.000000 60.000000 24.192204 177.207062 0.007280 0.024828 +E 5630.000000 60.000000 24.192789 177.227020 0.007267 0.024782 +E 5640.000000 60.000000 24.158987 177.222855 0.007248 0.024730 +E 5650.000000 60.000000 24.145668 177.216568 0.007217 0.024628 +E 5660.000000 60.000000 24.147760 177.233765 0.007186 0.024520 +E 5670.000000 60.000000 24.122673 177.266022 0.007116 0.024290 +E 5680.000000 60.000000 24.098763 177.278015 0.006994 0.023883 +E 5690.000000 60.000000 24.084457 177.294998 0.006850 0.023395 +E 5700.000000 60.000000 24.068411 177.254730 0.006654 0.022730 +E 5710.000000 60.000000 24.056971 177.265717 0.006558 0.022406 +E 5720.000000 60.000000 24.049376 177.298965 0.006507 0.022235 +E 5730.000000 60.000000 24.038124 177.283401 0.006445 0.022028 +E 5740.000000 60.000000 24.033388 177.242554 0.006328 0.021630 +E 5750.000000 60.000000 24.016935 177.300812 0.006268 0.021428 +E 5760.000000 60.000000 24.013447 177.288345 0.006223 0.021277 +E 5770.000000 60.000000 23.986019 177.326172 0.006109 0.020895 +E 5780.000000 60.000000 23.954649 177.318146 0.006026 0.020619 +E 5790.000000 60.000000 23.937992 177.303497 0.006018 0.020599 +E 5800.000000 60.000000 23.927343 177.320862 0.005980 0.020470 +E 5810.000000 60.000000 23.910194 177.315750 0.005832 0.019970 +E 5820.000000 60.000000 23.902180 177.302551 0.005683 0.019460 +E 5830.000000 60.000000 23.898197 177.344376 0.005822 0.019938 +E 5840.000000 60.000000 23.890984 177.337479 0.006094 0.020874 +E 5850.000000 60.000000 23.867531 177.351898 0.006053 0.020741 +E 5860.000000 60.000000 23.862738 177.337570 0.006086 0.020854 +E 5870.000000 60.000000 23.841705 177.314804 0.006152 0.021085 +E 5880.000000 60.000000 23.818718 177.382614 0.006095 0.020899 +E 5890.000000 60.000000 23.815479 177.379471 0.006076 0.020835 +E 5900.000000 60.000000 23.781294 177.420197 0.006285 0.021562 +E 5910.000000 60.000000 23.773394 177.407562 0.006415 0.022011 +E 5920.000000 60.000000 23.788116 177.377213 0.006414 0.022003 +E 5930.000000 60.000000 23.763622 177.433228 0.006316 0.021674 +E 5940.000000 60.000000 23.749893 177.401764 0.006223 0.021361 +E 5950.000000 60.000000 23.744230 177.403946 0.006146 0.021097 +E 5960.000000 60.000000 23.732576 177.396774 0.006163 0.021161 +E 5970.000000 60.000000 23.711048 177.412292 0.006269 0.021531 +E 5980.000000 60.000000 23.695925 177.415863 0.006323 0.021722 +E 5990.000000 60.000000 23.695963 177.418259 0.006326 0.021733 +E 6000.000000 60.000000 23.678715 177.423752 0.006336 0.021772 +E 6010.000000 60.000000 23.655920 177.462936 0.006296 0.021642 +E 6020.000000 60.000000 23.660049 177.462341 0.006220 0.021380 +E 6030.000000 60.000000 23.650368 177.466461 0.006133 0.021085 +E 6040.000000 60.000000 23.633137 177.446121 0.006110 0.021012 +E 6050.000000 60.000000 23.623165 177.473923 0.006236 0.021448 +E 6060.000000 60.000000 23.595778 177.475403 0.006279 0.021605 +E 6070.000000 60.000000 23.590128 177.470291 0.006287 0.021632 +E 6080.000000 60.000000 23.586021 177.474121 0.006307 0.021703 +E 6090.000000 60.000000 23.579075 177.509659 0.006331 0.021791 +E 6100.000000 60.000000 23.561781 177.493469 0.006314 0.021738 +E 6110.000000 60.000000 23.542959 177.461365 0.006281 0.021629 +E 6120.000000 60.000000 23.533670 177.503754 0.006267 0.021586 +E 6130.000000 60.000000 23.529503 177.524384 0.006257 0.021551 +E 6140.000000 60.000000 23.523209 177.484436 0.006238 0.021489 +E 6150.000000 60.000000 23.507402 177.506241 0.006278 0.021631 +E 6160.000000 60.000000 23.480627 177.505173 0.006341 0.021857 +E 6170.000000 60.000000 23.485172 177.505722 0.006371 0.021961 +E 6180.000000 60.000000 23.481394 177.540756 0.006383 0.022003 +E 6190.000000 60.000000 23.465061 177.529129 0.006407 0.022091 +E 6200.000000 60.000000 23.448406 177.549957 0.006381 0.022008 +E 6210.000000 60.000000 23.434111 177.552704 0.006390 0.022046 +E 6220.000000 60.000000 23.440290 177.529083 0.006414 0.022125 +E 6230.000000 60.000000 23.433304 177.560608 0.006381 0.022013 +E 6240.000000 60.000000 23.407011 177.528931 0.006366 0.021972 +E 6250.000000 60.000000 23.401293 177.560349 0.006420 0.022160 +E 6260.000000 60.000000 23.393383 177.533539 0.006463 0.022311 +E 6270.000000 60.000000 23.374384 177.520966 0.006470 0.022341 +E 6280.000000 60.000000 23.360737 177.588531 0.006466 0.022334 +E 6290.000000 60.000000 23.359924 177.578293 0.006467 0.022339 +E 6300.000000 60.000000 23.355879 177.538879 0.006470 0.022349 +E 6310.000000 60.000000 23.333220 177.552902 0.006510 0.022496 +E 6320.000000 60.000000 23.330441 177.615753 0.006522 0.022540 +E 6330.000000 60.000000 23.313251 177.597107 0.006502 0.022475 +E 6340.000000 60.000000 23.329514 177.591232 0.006505 0.022484 +E 6350.000000 60.000000 23.306328 177.618011 0.006510 0.022509 +E 6360.000000 60.000000 23.279446 177.609741 0.006493 0.022459 +E 6370.000000 60.000000 23.271742 177.645523 0.006482 0.022422 +E 6380.000000 60.000000 23.262863 177.620682 0.006491 0.022458 +E 6390.000000 60.000000 23.269136 177.634247 0.006489 0.022449 +E 6400.000000 60.000000 23.257414 177.624039 0.006488 0.022450 +E 6410.000000 60.000000 23.237925 177.624390 0.006503 0.022510 +E 6420.000000 60.000000 23.241005 177.613876 0.006523 0.022577 +E 6430.000000 60.000000 23.225437 177.601883 0.006519 0.022570 +E 6440.000000 60.000000 23.225410 177.612579 0.006520 0.022575 +E 6450.000000 60.000000 23.210098 177.665863 0.006532 0.022621 +E 6460.000000 60.000000 23.202560 177.675339 0.006529 0.022615 +E 6470.000000 60.000000 23.201223 177.619400 0.006527 0.022609 +E 6480.000000 60.000000 23.189463 177.664993 0.006520 0.022588 +E 6490.000000 60.000000 23.179300 177.682999 0.006513 0.022568 +E 6500.000000 60.000000 23.169668 177.619186 0.006510 0.022561 +E 6510.000000 60.000000 23.166235 177.629623 0.006513 0.022574 +E 6520.000000 60.000000 23.147350 177.651215 0.006510 0.022569 +E 6530.000000 60.000000 23.121916 177.668320 0.006520 0.022613 +E 6540.000000 60.000000 23.098846 177.651459 0.006584 0.022844 +E 6550.000000 60.000000 23.116974 177.658005 0.005835 0.020242 +E 6560.000000 60.000000 23.119995 177.680695 0.004091 0.014192 +E 6570.000000 60.000000 23.105341 177.692612 0.003950 0.013706 +E 6580.000000 60.000000 23.100025 177.717133 0.005396 0.018724 +E 6590.000000 60.000000 23.098967 177.730362 0.006463 0.022426 +E 6600.000000 60.000000 23.086119 177.661743 0.006505 0.022578 +E 6610.000000 60.000000 23.064373 177.687378 0.006514 0.022616 +E 6620.000000 60.000000 23.049652 177.703949 0.006501 0.022578 +E 6630.000000 60.000000 23.052704 177.703857 0.006491 0.022543 +E 6640.000000 60.000000 23.047125 177.746490 0.006495 0.022558 +E 6650.000000 60.000000 23.044401 177.782654 0.006496 0.022565 +E 6660.000000 60.000000 23.042824 177.752090 0.006495 0.022561 +E 6670.000000 60.000000 23.038898 177.714905 0.006493 0.022557 +E 6680.000000 60.000000 23.020607 177.714157 0.006491 0.022556 +E 6690.000000 60.000000 23.009989 177.782150 0.006477 0.022512 +E 6700.000000 60.000000 22.996492 177.802322 0.006462 0.022464 +E 6710.000000 60.000000 22.981531 177.754059 0.006466 0.022486 +E 6720.000000 60.000000 22.974287 177.727036 0.006459 0.022465 +E 6730.000000 60.000000 22.975689 177.698898 0.006455 0.022448 +E 6740.000000 60.000000 22.975653 177.730789 0.006463 0.022480 +E 6750.000000 60.000000 22.945745 177.771194 0.006478 0.022541 +E 6760.000000 60.000000 22.942505 177.813614 0.006479 0.022545 +E 6770.000000 60.000000 22.940771 177.823914 0.006469 0.022513 +E 6780.000000 60.000000 22.932777 177.777344 0.006457 0.022475 +E 6790.000000 60.000000 22.922951 177.777313 0.006443 0.022431 +E 6800.000000 60.000000 22.912207 177.836395 0.006440 0.022424 +E 6810.000000 60.000000 22.919270 177.780273 0.006433 0.022399 +E 6820.000000 60.000000 22.912466 177.785614 0.006436 0.022410 +E 6830.000000 60.000000 22.887220 177.809402 0.006440 0.022433 +E 6840.000000 60.000000 22.896828 177.766602 0.006427 0.022385 +E 6850.000000 60.000000 22.887571 177.769440 0.006401 0.022298 +E 6860.000000 60.000000 22.882530 177.823517 0.006400 0.022298 +E 6870.000000 60.000000 22.857487 177.828461 0.006424 0.022392 +E 6880.000000 60.000000 22.846786 177.768524 0.006435 0.022435 +E 6890.000000 60.000000 22.846447 177.848480 0.006435 0.022434 +E 6900.000000 60.000000 22.849731 177.828506 0.006440 0.022450 +E 6910.000000 60.000000 22.833378 177.841690 0.006443 0.022467 +E 6920.000000 60.000000 22.817631 177.864685 0.006436 0.022451 +E 6930.000000 60.000000 22.815670 177.844238 0.006432 0.022437 +E 6940.000000 60.000000 22.813316 177.863388 0.006426 0.022416 +E 6950.000000 60.000000 22.802128 177.889282 0.006436 0.022456 +E 6960.000000 60.000000 22.791403 177.863434 0.006438 0.022469 +E 6970.000000 60.000000 22.779713 177.856445 0.006430 0.022447 +E 6980.000000 60.000000 22.772717 177.849625 0.006423 0.022425 +E 6990.000000 60.000000 22.765287 177.901627 0.006429 0.022448 +E 7000.000000 60.000000 22.758118 177.877548 0.006439 0.022484 +E 7010.000000 60.000000 22.753958 177.852234 0.006451 0.022530 +E 7020.000000 60.000000 22.731899 177.906143 0.006458 0.022563 +E 7030.000000 60.000000 22.724483 177.909561 0.006456 0.022559 +E 7040.000000 60.000000 22.714182 177.916306 0.006469 0.022607 +E 7050.000000 60.000000 22.721264 177.877258 0.006477 0.022633 +E 7060.000000 60.000000 22.718897 177.883606 0.006479 0.022643 +E 7070.000000 60.000000 22.699594 177.908157 0.006459 0.022582 +E 7080.000000 60.000000 22.709183 177.936523 0.006459 0.022576 +E 7090.000000 60.000000 22.716799 177.877060 0.006473 0.022623 +E 7100.000000 60.000000 22.692532 177.900482 0.006493 0.022703 +E 7110.000000 60.000000 22.692587 177.915924 0.006495 0.022710 +E 7120.000000 60.000000 22.696188 177.875168 0.006493 0.022705 +E 7130.000000 60.000000 22.681896 177.881073 0.006496 0.022721 +E 7140.000000 60.000000 22.651535 177.912521 0.006498 0.022740 +E 7150.000000 60.000000 22.640230 177.916962 0.006495 0.022732 +E 7160.000000 60.000000 22.659286 177.921967 0.006494 0.022724 +E 7170.000000 60.000000 22.660364 177.924316 0.006513 0.022790 +E 7180.000000 60.000000 22.633854 177.913361 0.006518 0.022818 +E 7190.000000 60.000000 22.631826 177.938492 0.006521 0.022828 +E 7200.000000 60.000000 22.631823 177.986740 0.006531 0.022865 +E 7210.000000 60.000000 22.625467 177.967117 0.006546 0.022921 +E 7220.000000 60.000000 22.627110 177.966080 0.006545 0.022918 +E 7230.000000 60.000000 22.618288 177.910858 0.006561 0.022976 +E 7240.000000 60.000000 22.601906 177.901291 0.006562 0.022988 +E 7250.000000 60.000000 22.600391 177.953644 0.006535 0.022893 +E 7260.000000 60.000000 22.581484 177.972794 0.006511 0.022815 +E 7270.000000 60.000000 22.575077 177.949448 0.006527 0.022873 +E 7280.000000 60.000000 22.580242 178.011246 0.006532 0.022892 +E 7290.000000 60.000000 22.563341 177.984741 0.006529 0.022888 +E 7300.000000 60.000000 22.566044 177.914383 0.006536 0.022910 +E 7310.000000 60.000000 22.581656 177.943008 0.006525 0.022868 +E 7320.000000 60.000000 22.561451 177.947510 0.006540 0.022929 +E 7330.000000 60.000000 22.541941 177.981613 0.006569 0.023037 +E 7340.000000 60.000000 22.545507 178.035965 0.006563 0.023014 +E 7350.000000 60.000000 22.535961 178.004929 0.006533 0.022914 +E 7360.000000 60.000000 22.541826 177.989120 0.006535 0.022920 +E 7370.000000 60.000000 22.533497 177.981964 0.006564 0.023027 +E 7380.000000 60.000000 22.520819 177.995850 0.006610 0.023193 +E 7390.000000 60.000000 22.527637 178.028534 0.006632 0.023268 +E 7400.000000 60.000000 22.515680 178.001816 0.006609 0.023194 +E 7410.000000 60.000000 22.516632 177.997742 0.006636 0.023288 +E 7420.000000 60.000000 22.511715 177.999191 0.006686 0.023466 +E 7430.000000 60.000000 22.507215 178.045364 0.006705 0.023532 +E 7440.000000 60.000000 22.487980 178.008713 0.006716 0.023579 +E 7450.000000 60.000000 22.483122 178.000549 0.006723 0.023609 +E 7460.000000 60.000000 22.493332 178.073715 0.006726 0.023613 +E 7470.000000 60.000000 22.483286 178.078110 0.006704 0.023543 +E 7480.000000 60.000000 22.485950 178.047211 0.006697 0.023517 +E 7490.000000 60.000000 22.477856 178.052338 0.006728 0.023629 +E 7500.000000 60.000000 22.466574 178.051498 0.006734 0.023654 +E 7510.000000 60.000000 22.461020 178.020828 0.006733 0.023655 +E 7520.000000 60.000000 22.462582 178.019623 0.006778 0.023812 +E 7530.000000 60.000000 22.443031 178.028366 0.006803 0.023907 +E 7540.000000 60.000000 22.439404 178.030609 0.006769 0.023790 +E 7550.000000 60.000000 22.426659 178.040207 0.006785 0.023852 +E 7560.000000 60.000000 22.428064 178.074707 0.006797 0.023895 +E 7570.000000 60.000000 22.422287 178.121841 0.006789 0.023870 +E 7580.000000 60.000000 22.416653 178.047180 0.006781 0.023844 +E 7590.000000 60.000000 22.408722 178.029800 0.006783 0.023854 +E 7600.000000 60.000000 22.412252 178.090332 0.006833 0.024028 +E 7610.000000 60.000000 22.410294 178.086914 0.006884 0.024209 +E 7620.000000 60.000000 22.411253 178.091995 0.006922 0.024345 +E 7630.000000 60.000000 22.402851 178.127304 0.006908 0.024298 +E 7640.000000 60.000000 22.391657 178.085999 0.006901 0.024278 +E 7650.000000 60.000000 22.385721 178.105148 0.006925 0.024365 +E 7660.000000 60.000000 22.373652 178.140991 0.006973 0.024541 +E 7670.000000 60.000000 22.385744 178.091293 0.007028 0.024730 +E 7680.000000 60.000000 22.374456 178.105667 0.007021 0.024712 +E 7690.000000 60.000000 22.364637 178.114838 0.006950 0.024466 +E 7700.000000 60.000000 22.374977 178.101624 0.006921 0.024359 +E 7710.000000 60.000000 22.369757 178.115387 0.006974 0.024549 +E 7720.000000 60.000000 22.349991 178.110718 0.007059 0.024856 +E 7730.000000 60.000000 22.337234 178.085754 0.007114 0.025057 +E 7740.000000 60.000000 22.346249 178.084793 0.007127 0.025099 +E 7750.000000 60.000000 22.342316 178.113373 0.007159 0.025214 +E 7760.000000 60.000000 22.335806 178.131699 0.007199 0.025359 +E 7770.000000 60.000000 22.331234 178.136078 0.007225 0.025452 +E 7780.000000 60.000000 22.321560 178.119537 0.007220 0.025437 +E 7790.000000 60.000000 22.322964 178.150238 0.007177 0.025288 +E 7800.000000 60.000000 22.308825 178.104187 0.007168 0.025263 +E 7810.000000 60.000000 22.312635 178.089493 0.007224 0.025459 +E 7820.000000 60.000000 22.293715 178.109055 0.007265 0.025610 +E 7830.000000 60.000000 22.310770 178.138260 0.007267 0.025613 +E 7840.000000 60.000000 22.299282 178.154770 0.007308 0.025762 +E 7850.000000 60.000000 22.301161 178.102005 0.007364 0.025957 +E 7860.000000 60.000000 22.290081 178.135117 0.007400 0.026091 +E 7870.000000 60.000000 22.279110 178.113815 0.007401 0.026101 +E 7880.000000 60.000000 22.282907 178.106873 0.007383 0.026034 +E 7890.000000 60.000000 22.265749 178.147705 0.007404 0.026117 +E 7900.000000 60.000000 22.264475 178.150223 0.007443 0.026256 +E 7910.000000 60.000000 22.270357 178.169449 0.007452 0.026286 +E 7920.000000 60.000000 22.267759 178.202713 0.007470 0.026352 +E 7930.000000 60.000000 22.260138 178.160355 0.007482 0.026398 +E 7940.000000 60.000000 22.243673 178.193069 0.007472 0.026369 +E 7950.000000 60.000000 22.255781 178.180283 0.007472 0.026365 +E 7960.000000 60.000000 22.247274 178.143692 0.007518 0.026531 +E 7970.000000 60.000000 22.226290 178.139160 0.007566 0.026711 +E 7980.000000 60.000000 22.239092 178.148804 0.007589 0.026785 +E 7990.000000 60.000000 22.227200 178.153000 0.007609 0.026863 +E 8000.000000 60.000000 22.221407 178.129761 0.007605 0.026853 +E 8010.000000 60.000000 22.216787 178.183044 0.007598 0.026829 +E 8020.000000 60.000000 22.207472 178.178635 0.007655 0.027035 +E 8030.000000 60.000000 22.211636 178.155670 0.007699 0.027190 +E 8040.000000 60.000000 22.220121 178.169495 0.007694 0.027168 +E 8050.000000 60.000000 22.219318 178.151688 0.007681 0.027125 +E 8060.000000 60.000000 22.233061 178.195190 0.007703 0.027196 +E 8070.000000 60.000000 22.205975 178.232544 0.007780 0.027480 +E 8080.000000 60.000000 22.177593 178.199966 0.007821 0.027639 +E 8090.000000 60.000000 22.192579 178.205048 0.007765 0.027433 +E 8100.000000 60.000000 22.180664 178.242676 0.007783 0.027504 +E 8110.000000 60.000000 22.172976 178.229630 0.007829 0.027671 +E 8120.000000 60.000000 22.168791 178.255569 0.007880 0.027855 +E 8130.000000 60.000000 22.169146 178.217239 0.007875 0.027838 +E 8140.000000 60.000000 22.165722 178.222824 0.007832 0.027687 +E 8150.000000 60.000000 22.174417 178.193665 0.007853 0.027758 +E 8160.000000 60.000000 22.158499 178.167007 0.007921 0.028007 +E 8170.000000 60.000000 22.167601 178.189270 0.007954 0.028118 +E 8180.000000 60.000000 22.167137 178.231918 0.007934 0.028048 +E 8190.000000 60.000000 22.137419 178.193207 0.007935 0.028066 +E 8200.000000 60.000000 22.139910 178.195160 0.007969 0.028187 +E 8210.000000 60.000000 22.122141 178.233658 0.008009 0.028338 +E 8220.000000 60.000000 22.137650 178.283386 0.008028 0.028399 +E 8230.000000 60.000000 22.128965 178.225677 0.008008 0.028330 +E 8240.000000 60.000000 22.146130 178.209824 0.007995 0.028279 +E 8250.000000 60.000000 22.129721 178.253845 0.008058 0.028509 +E 8260.000000 60.000000 22.120701 178.261139 0.008110 0.028698 +E 8270.000000 60.000000 22.110596 178.243576 0.008090 0.028633 +E 8280.000000 60.000000 22.108934 178.226852 0.008057 0.028518 +E 8290.000000 60.000000 22.101248 178.203430 0.008068 0.028560 +E 8300.000000 60.000000 22.117302 178.255890 0.008141 0.028810 +E 8310.000000 60.000000 22.109293 178.255783 0.008195 0.029008 +E 8320.000000 60.000000 22.097250 178.233124 0.008176 0.028945 +E 8330.000000 60.000000 22.085115 178.262283 0.008132 0.028798 +E 8340.000000 60.000000 22.081276 178.318878 0.008119 0.028752 +E 8350.000000 60.000000 22.082947 178.253342 0.008159 0.028895 +E 8360.000000 60.000000 22.079185 178.259857 0.008228 0.029142 +E 8370.000000 60.000000 22.070007 178.248550 0.008212 0.029088 +E 8380.000000 60.000000 22.059643 178.276672 0.008196 0.029038 +E 8390.000000 60.000000 22.064960 178.303162 0.008217 0.029111 +E 8400.000000 60.000000 22.075584 178.257080 0.008285 0.029348 +E 8410.000000 60.000000 22.058067 178.320221 0.008325 0.029499 +E 8420.000000 60.000000 22.055265 178.337006 0.008308 0.029438 +E 8430.000000 60.000000 22.047005 178.285797 0.008282 0.029351 +E 8440.000000 60.000000 22.058552 178.297897 0.008281 0.029344 +E 8450.000000 60.000000 22.060001 178.288757 0.008327 0.029506 +E 8460.000000 60.000000 22.059221 178.236862 0.008353 0.029598 +E 8470.000000 60.000000 22.059013 178.254166 0.008335 0.029536 +E 8480.000000 60.000000 22.046255 178.248657 0.008304 0.029433 +E 8490.000000 60.000000 22.041340 178.292999 0.008370 0.029670 +E 8500.000000 60.000000 22.034254 178.296921 0.008517 0.030196 +E 8510.000000 60.000000 22.034958 178.269608 0.008566 0.030369 +E 8520.000000 60.000000 22.029194 178.291779 0.008392 0.029754 +E 8530.000000 60.000000 22.005846 178.283936 0.008208 0.029114 +E 8540.000000 60.000000 22.005428 178.308716 0.008187 0.029040 +E 8550.000000 60.000000 22.026810 178.336319 0.008299 0.029426 +E 8560.000000 60.000000 22.012371 178.371979 0.008391 0.029763 +E 8570.000000 60.000000 22.006716 178.310272 0.008418 0.029861 +E 8580.000000 60.000000 21.983583 178.309738 0.008391 0.029779 +E 8590.000000 60.000000 22.001495 178.379669 0.008364 0.029673 +E 8600.000000 60.000000 21.996559 178.341400 0.008392 0.029775 +E 8610.000000 60.000000 21.981592 178.290634 0.008467 0.030049 +E 8620.000000 60.000000 21.994213 178.367874 0.008499 0.030158 +E 8630.000000 60.000000 21.990992 178.384766 0.008497 0.030153 +E 8640.000000 60.000000 21.996542 178.299515 0.008443 0.029958 +E 8650.000000 60.000000 21.979038 178.370605 0.008422 0.029893 +E 8660.000000 60.000000 21.973379 178.347839 0.008464 0.030046 +E 8670.000000 60.000000 21.964733 178.325546 0.008528 0.030279 +E 8680.000000 60.000000 21.958700 178.327301 0.008539 0.030322 +E 8690.000000 60.000000 21.956247 178.331818 0.008528 0.030284 +E 8700.000000 60.000000 21.966236 178.347031 0.008502 0.030185 +E 8710.000000 60.000000 21.972345 178.337418 0.008518 0.030238 +E 8720.000000 60.000000 21.983925 178.297623 0.008562 0.030392 +E 8730.000000 60.000000 21.968580 178.384735 0.008568 0.030420 +E 8740.000000 60.000000 21.948498 178.365723 0.008538 0.030324 +E 8750.000000 60.000000 21.949593 178.399323 0.008519 0.030258 +E 8760.000000 60.000000 21.942213 178.371964 0.008524 0.030279 +E 8770.000000 60.000000 21.949587 178.359360 0.008568 0.030433 +E 8780.000000 60.000000 21.944950 178.383377 0.008614 0.030599 +E 8790.000000 60.000000 21.942911 178.363388 0.008600 0.030550 +E 8800.000000 60.000000 21.951010 178.369354 0.008589 0.030508 +E 8810.000000 60.000000 21.947163 178.374283 0.008625 0.030638 +E 8820.000000 60.000000 21.939209 178.337433 0.008663 0.030776 +E 8830.000000 60.000000 21.937107 178.415131 0.008693 0.030884 +E 8840.000000 60.000000 21.919489 178.372940 0.008702 0.030929 +E 8850.000000 60.000000 21.920948 178.402130 0.008723 0.031000 +E 8860.000000 60.000000 21.900164 178.360748 0.008711 0.030970 +E 8870.000000 60.000000 21.900656 178.367233 0.008685 0.030878 +E 8880.000000 60.000000 21.900600 178.354385 0.008688 0.030891 +E 8890.000000 60.000000 21.892473 178.416412 0.008733 0.031054 +E 8900.000000 60.000000 21.899248 178.373550 0.008759 0.031143 +E 8910.000000 60.000000 21.901951 178.346756 0.008776 0.031204 +E 8920.000000 60.000000 21.885592 178.393448 0.008777 0.031217 +E 8930.000000 60.000000 21.875824 178.366333 0.008780 0.031232 +E 8940.000000 60.000000 21.894192 178.349716 0.008788 0.031251 +E 8950.000000 60.000000 21.882618 178.457840 0.008817 0.031361 +E 8960.000000 60.000000 21.885450 178.358368 0.008844 0.031455 +E 8970.000000 60.000000 21.888691 178.398315 0.008860 0.031512 +E 8980.000000 60.000000 21.860714 178.416428 0.008887 0.031625 +E 8990.000000 60.000000 21.848423 178.401764 0.008876 0.031592 +E 9000.000000 60.000000 21.851488 178.400177 0.008909 0.031708 +E 9010.000000 60.000000 21.865358 178.447693 0.008931 0.031778 +E 9020.000000 60.000000 21.848917 178.443222 0.008944 0.031835 +E 9030.000000 60.000000 21.859776 178.440460 0.008977 0.031948 +E 9040.000000 60.000000 21.871992 178.421265 0.008980 0.031952 +E 9050.000000 60.000000 21.856800 178.412506 0.008969 0.031920 +E 9060.000000 60.000000 21.827568 178.393066 0.009005 0.032067 +E 9070.000000 60.000000 21.836170 178.448639 0.009038 0.032180 +E 9080.000000 60.000000 21.839273 178.444199 0.009086 0.032350 +E 9090.000000 60.000000 21.835545 178.459427 0.009129 0.032505 +E 9100.000000 60.000000 21.854099 178.379639 0.009127 0.032485 +E 9110.000000 60.000000 21.828424 178.428101 0.009110 0.032439 +E 9120.000000 60.000000 21.817316 178.498428 0.009135 0.032538 +E 9130.000000 60.000000 21.812695 178.432693 0.009177 0.032690 +E 9140.000000 60.000000 21.849817 178.423492 0.009237 0.032882 +E 9150.000000 60.000000 21.846176 178.450516 0.009235 0.032877 +E 9160.000000 60.000000 21.845827 178.488297 0.009201 0.032756 +E 9170.000000 60.000000 21.816954 178.420578 0.009193 0.032745 +E 9180.000000 60.000000 21.800295 178.427536 0.009210 0.032817 +E 9190.000000 60.000000 21.824718 178.472015 0.009254 0.032958 +E 9200.000000 60.000000 21.795780 178.482681 0.009331 0.033250 +E 9210.000000 60.000000 21.806179 178.436310 0.009367 0.033373 +E 9220.000000 60.000000 21.815031 178.436234 0.009416 0.033543 +E 9230.000000 60.000000 21.814131 178.505341 0.009437 0.033620 +E 9240.000000 60.000000 21.814722 178.437851 0.009449 0.033663 +E 9250.000000 60.000000 21.796761 178.407089 0.009473 0.033759 +E 9260.000000 60.000000 21.802351 178.500381 0.009512 0.033895 +E 9270.000000 60.000000 21.802538 178.438553 0.009565 0.034084 +E 9280.000000 60.000000 21.791098 178.472015 0.009613 0.034263 +E 9290.000000 60.000000 21.788612 178.517960 0.009640 0.034361 +E 9300.000000 60.000000 21.788885 178.458649 0.009658 0.034425 +E 9310.000000 60.000000 21.775236 178.399750 0.009681 0.034516 +E 9320.000000 60.000000 21.785513 178.433090 0.009690 0.034541 +E 9330.000000 60.000000 21.776371 178.456390 0.009729 0.034686 +E 9340.000000 60.000000 21.774694 178.465744 0.009767 0.034822 +E 9350.000000 60.000000 21.753618 178.471664 0.009834 0.035075 +E 9360.000000 60.000000 21.761509 178.537064 0.009890 0.035273 +E 9370.000000 60.000000 21.777344 178.452057 0.009919 0.035363 +E 9380.000000 60.000000 21.765638 178.494293 0.009930 0.035410 +E 9390.000000 60.000000 21.749300 178.530975 0.009954 0.035507 +E 9400.000000 60.000000 21.756546 178.607651 0.010026 0.035761 +E 9410.000000 60.000000 21.772091 178.543015 0.010075 0.035927 +E 9420.000000 60.000000 21.726353 178.449493 0.010146 0.036208 +E 9430.000000 60.000000 21.748781 178.495346 0.010186 0.036340 +E 9440.000000 60.000000 21.755589 178.544983 0.010198 0.036377 +E 9450.000000 60.000000 21.755730 178.496674 0.010236 0.036512 +E 9460.000000 60.000000 21.734049 178.498550 0.010291 0.036723 +E 9470.000000 60.000000 21.718073 178.528732 0.010355 0.036965 +E 9480.000000 60.000000 21.746254 178.545120 0.010402 0.037112 +E 9490.000000 60.000000 21.733887 178.535629 0.010468 0.037355 +E 9500.000000 60.000000 21.730356 178.563721 0.010515 0.037528 +E 9510.000000 60.000000 21.740574 178.530548 0.010552 0.037651 +E 9520.000000 60.000000 21.754387 178.477295 0.010581 0.037747 +E 9530.000000 60.000000 21.712873 178.548370 0.010658 0.038050 +E 9540.000000 60.000000 21.716330 178.580536 0.010738 0.038336 +E 9550.000000 60.000000 21.697985 178.483093 0.010828 0.038670 +E 9560.000000 60.000000 21.713886 178.547333 0.010844 0.038713 +E 9570.000000 60.000000 21.700169 178.424988 0.010871 0.038822 +E 9580.000000 60.000000 21.703438 178.563400 0.010893 0.038900 +E 9590.000000 60.000000 21.715342 178.519913 0.010936 0.039045 +E 9600.000000 60.000000 21.696445 178.516678 0.010998 0.039280 +E 9610.000000 60.000000 21.692188 178.506989 0.011041 0.039437 +E 9620.000000 60.000000 21.706413 178.562256 0.011104 0.039651 +E 9630.000000 60.000000 21.670055 178.517212 0.011171 0.039918 +E 9640.000000 60.000000 21.695177 178.509094 0.011207 0.040030 +E 9650.000000 60.000000 21.694691 178.541336 0.011268 0.040245 +E 9660.000000 60.000000 21.680088 178.476364 0.011309 0.040405 +E 9670.000000 60.000000 21.690182 178.509735 0.011397 0.040712 +E 9680.000000 60.000000 21.669323 178.532700 0.011495 0.041080 +E 9690.000000 60.000000 21.687120 178.468475 0.011542 0.041232 +E 9700.000000 60.000000 21.703526 178.432632 0.011579 0.041354 +E 9710.000000 60.000000 21.679989 178.605270 0.011661 0.041663 +E 9720.000000 60.000000 21.652632 178.618408 0.011743 0.041980 +E 9730.000000 60.000000 21.666468 178.463943 0.011819 0.042240 +E 9740.000000 60.000000 21.686981 178.554581 0.011893 0.042490 +E 9750.000000 60.000000 21.650053 178.569183 0.011948 0.042716 +E 9760.000000 60.000000 21.638020 178.543671 0.012025 0.043001 +E 9770.000000 60.000000 21.655807 178.548386 0.012102 0.043262 +E 9780.000000 60.000000 21.689587 178.574188 0.012154 0.043420 +E 9790.000000 60.000000 21.681307 178.589767 0.012232 0.043707 +E 9800.000000 60.000000 21.647217 178.656036 0.012336 0.044108 +E 9810.000000 60.000000 21.642618 178.609039 0.012443 0.044495 +E 9820.000000 60.000000 21.665108 178.533264 0.012547 0.044848 +E 9830.000000 60.000000 21.651329 178.569427 0.012603 0.045058 +E 9840.000000 60.000000 21.646349 178.506210 0.012678 0.045331 +E 9850.000000 60.000000 21.635328 178.545120 0.012784 0.045720 +E 9860.000000 60.000000 21.631512 178.550064 0.012865 0.046014 +E 9870.000000 60.000000 21.619684 178.583710 0.012996 0.046493 +E 9880.000000 60.000000 21.633751 178.523621 0.013098 0.046846 +E 9890.000000 60.000000 21.607098 178.484573 0.013198 0.047229 +E 9900.000000 60.000000 21.641798 178.621078 0.013248 0.047375 +E 9910.000000 60.000000 21.607477 178.641418 0.013357 0.047799 +E 9920.000000 60.000000 21.637650 178.673798 0.013476 0.048196 +E 9930.000000 60.000000 21.638990 178.596039 0.013627 0.048737 +E 9940.000000 60.000000 21.616859 178.647293 0.013760 0.049232 +E 9950.000000 60.000000 21.594112 178.524567 0.013865 0.049631 +E 9960.000000 60.000000 21.589748 178.573761 0.014004 0.050132 +E 9970.000000 60.000000 21.638680 178.541855 0.014083 0.050368 +E 9980.000000 60.000000 21.613903 178.552582 0.014257 0.051016 +E 9990.000000 60.000000 21.600178 178.566803 0.014414 0.051592 +E 10000.000000 60.000000 21.617170 178.655869 0.014556 0.052083 +E 10025.000000 60.000000 21.613400 178.589783 0.007150 0.025594 +E 10050.000000 60.000000 21.601683 178.616150 0.006984 0.025005 +E 10075.000000 60.000000 21.600893 178.585358 0.006778 0.024269 +E 10100.000000 60.000000 21.597979 178.594193 0.006621 0.023706 +E 10125.000000 60.000000 21.594393 178.617310 0.006483 0.023216 +E 10150.000000 60.000000 21.593006 178.609543 0.006313 0.022608 +E 10175.000000 60.000000 21.588476 178.627548 0.006164 0.022075 +E 10200.000000 60.000000 21.580761 178.671432 0.006033 0.021609 +E 10225.000000 60.000000 21.572716 178.650696 0.005882 0.021071 +E 10250.000000 60.000000 21.563210 178.639053 0.005746 0.020588 +E 10275.000000 60.000000 21.549759 178.666565 0.005641 0.020216 +E 10300.000000 60.000000 21.546684 178.653809 0.005501 0.019719 +E 10325.000000 60.000000 21.547503 178.627777 0.005356 0.019196 +E 10350.000000 60.000000 21.543507 178.630356 0.005238 0.018777 +E 10375.000000 60.000000 21.543716 178.642929 0.005127 0.018377 +E 10400.000000 60.000000 21.547850 178.664688 0.005021 0.017997 +E 10425.000000 60.000000 21.534182 178.645050 0.004924 0.017654 +E 10450.000000 60.000000 21.523212 178.634598 0.004829 0.017316 +E 10475.000000 60.000000 21.521147 178.651443 0.004733 0.016972 +E 10500.000000 60.000000 21.517281 178.659439 0.004644 0.016656 +E 10525.000000 60.000000 21.513479 178.665466 0.004560 0.016357 +E 10550.000000 60.000000 21.513994 178.680710 0.004482 0.016076 +E 10575.000000 60.000000 21.511318 178.689835 0.004413 0.015827 +E 10600.000000 60.000000 21.506002 178.694000 0.004350 0.015605 +E 10625.000000 60.000000 21.505732 178.737381 0.004264 0.015295 +E 10650.000000 60.000000 21.501709 178.735519 0.004188 0.015025 +E 10675.000000 60.000000 21.490791 178.653778 0.004131 0.014822 +E 10700.000000 60.000000 21.483501 178.649109 0.004057 0.014560 +E 10725.000000 60.000000 21.479216 178.664749 0.003986 0.014306 +E 10750.000000 60.000000 21.482841 178.673325 0.003938 0.014134 +E 10775.000000 60.000000 21.478876 178.690079 0.003868 0.013884 +E 10800.000000 60.000000 21.470091 178.711472 0.003785 0.013589 +E 10825.000000 60.000000 21.462147 178.703979 0.003730 0.013391 +E 10850.000000 60.000000 21.457048 178.700943 0.003670 0.013178 +E 10875.000000 60.000000 21.455484 178.703583 0.003604 0.012943 +E 10900.000000 60.000000 21.449657 178.714798 0.003556 0.012770 +E 10925.000000 60.000000 21.445665 178.723343 0.003506 0.012593 +E 10950.000000 60.000000 21.448856 178.720398 0.003444 0.012368 +E 10975.000000 60.000000 21.443577 178.724289 0.003396 0.012198 +E 11000.000000 60.000000 21.435415 178.732910 0.003356 0.012056 +E 11025.000000 60.000000 21.436747 178.756958 0.003318 0.011917 +E 11050.000000 60.000000 21.431517 178.751984 0.003285 0.011801 +E 11075.000000 60.000000 21.420225 178.720230 0.003258 0.011706 +E 11100.000000 60.000000 21.422382 178.720306 0.003209 0.011530 +E 11125.000000 60.000000 21.423105 178.726532 0.003171 0.011393 +E 11150.000000 60.000000 21.419558 178.739792 0.003154 0.011331 +E 11175.000000 60.000000 21.412273 178.739136 0.003128 0.011242 +E 11200.000000 60.000000 21.405275 178.734924 0.003104 0.011154 +E 11225.000000 60.000000 21.403570 178.732635 0.003089 0.011102 +E 11250.000000 60.000000 21.400923 178.745026 0.003067 0.011025 +E 11275.000000 60.000000 21.397530 178.765076 0.003042 0.010936 +E 11300.000000 60.000000 21.389713 178.758133 0.003039 0.010926 +E 11325.000000 60.000000 21.383389 178.760880 0.003028 0.010886 +E 11350.000000 60.000000 21.378786 178.774673 0.003007 0.010812 +E 11375.000000 60.000000 21.381521 178.785431 0.002995 0.010770 +E 11400.000000 60.000000 21.382149 178.790024 0.002984 0.010729 +E 11425.000000 60.000000 21.376387 178.782333 0.002970 0.010678 +E 11450.000000 60.000000 21.368481 178.776291 0.002956 0.010629 +E 11475.000000 60.000000 21.361895 178.770996 0.002940 0.010574 +E 11500.000000 60.000000 21.365162 178.766525 0.002917 0.010491 +E 11525.000000 60.000000 21.360298 178.771576 0.002898 0.010422 +E 11550.000000 60.000000 21.350372 178.783051 0.002880 0.010362 +E 11575.000000 60.000000 21.349922 178.800262 0.002868 0.010317 +E 11600.000000 60.000000 21.348938 178.807129 0.002847 0.010241 +E 11625.000000 60.000000 21.347342 178.802032 0.002816 0.010130 +E 11650.000000 60.000000 21.338564 178.816284 0.002799 0.010071 +E 11675.000000 60.000000 21.330969 178.827591 0.002781 0.010009 +E 11700.000000 60.000000 21.327593 178.827942 0.002758 0.009925 +E 11725.000000 60.000000 21.328339 178.816956 0.002743 0.009869 +E 11750.000000 60.000000 21.329550 178.805115 0.002727 0.009813 +E 11775.000000 60.000000 21.327139 178.805252 0.002700 0.009715 +E 11800.000000 60.000000 21.323463 178.815277 0.002675 0.009627 +E 11825.000000 60.000000 21.318907 178.830612 0.002652 0.009546 +E 11850.000000 60.000000 21.311800 178.836609 0.002631 0.009468 +E 11875.000000 60.000000 21.309372 178.832397 0.002609 0.009393 +E 11900.000000 60.000000 21.311697 178.817841 0.002589 0.009319 +E 11925.000000 60.000000 21.311867 178.820206 0.002565 0.009233 +E 11950.000000 60.000000 21.308857 178.824188 0.002545 0.009159 +E 11975.000000 60.000000 21.300665 178.828705 0.002529 0.009105 +E 12000.000000 60.000000 21.294697 178.839752 0.002513 0.009046 +E 12025.000000 60.000000 21.290438 178.847687 0.002496 0.008986 +E 12050.000000 60.000000 21.289829 178.840942 0.002478 0.008922 +E 12075.000000 60.000000 21.286734 178.849518 0.002466 0.008880 +E 12100.000000 60.000000 21.282536 178.861389 0.002456 0.008844 +E 12125.000000 60.000000 21.278782 178.845490 0.002440 0.008787 +E 12150.000000 60.000000 21.278687 178.847595 0.002425 0.008732 +E 12175.000000 60.000000 21.281370 178.863510 0.002410 0.008678 +E 12200.000000 60.000000 21.273312 178.861145 0.002405 0.008662 +E 12225.000000 60.000000 21.268759 178.864105 0.002399 0.008639 +E 12250.000000 60.000000 21.268482 178.873627 0.002389 0.008605 +E 12275.000000 60.000000 21.269075 178.862457 0.002386 0.008594 +E 12300.000000 60.000000 21.266726 178.856293 0.002386 0.008594 +E 12325.000000 60.000000 21.258284 178.865219 0.002390 0.008609 +E 12350.000000 60.000000 21.251062 178.873978 0.002384 0.008588 +E 12375.000000 60.000000 21.245384 178.879883 0.002380 0.008576 +E 12400.000000 60.000000 21.243769 178.876144 0.002394 0.008626 +E 12425.000000 60.000000 21.243036 178.869293 0.002389 0.008607 +E 12450.000000 60.000000 21.242037 178.863983 0.002377 0.008564 +E 12475.000000 60.000000 21.235929 178.881073 0.002387 0.008600 +E 12500.000000 60.000000 21.236635 178.889847 0.002379 0.008571 +E 12525.000000 60.000000 21.242243 178.892349 0.002358 0.008495 +E 12550.000000 60.000000 21.234257 178.906555 0.002352 0.008474 +E 12575.000000 60.000000 21.230221 178.907639 0.002343 0.008442 +E 12600.000000 60.000000 21.230721 178.893890 0.002331 0.008398 +E 12625.000000 60.000000 21.228958 178.892807 0.002325 0.008377 +E 12650.000000 60.000000 21.226398 178.894714 0.002317 0.008347 +E 12675.000000 60.000000 21.222862 178.899734 0.002303 0.008297 +E 12700.000000 60.000000 21.216702 178.903320 0.002287 0.008243 +E 12725.000000 60.000000 21.212925 178.906952 0.002276 0.008202 +E 12750.000000 60.000000 21.216877 178.911530 0.002277 0.008204 +E 12775.000000 60.000000 21.212503 178.910324 0.002264 0.008159 +E 12800.000000 60.000000 21.205692 178.908264 0.002248 0.008102 +E 12825.000000 60.000000 21.201622 178.911819 0.002238 0.008067 +E 12850.000000 60.000000 21.202280 178.921432 0.002228 0.008029 +E 12875.000000 60.000000 21.205050 178.933487 0.002217 0.007989 +E 12900.000000 60.000000 21.202749 178.936935 0.002209 0.007961 +E 12925.000000 60.000000 21.199600 178.940079 0.002197 0.007919 +E 12950.000000 60.000000 21.195812 178.942856 0.002183 0.007868 +E 12975.000000 60.000000 21.194353 178.930557 0.002177 0.007847 +E 13000.000000 60.000000 21.189571 178.922089 0.002170 0.007821 +E 13025.000000 60.000000 21.181059 178.917908 0.002162 0.007792 +E 13050.000000 60.000000 21.183168 178.923843 0.002150 0.007751 +E 13075.000000 60.000000 21.184031 178.925369 0.002141 0.007717 +E 13100.000000 60.000000 21.181644 178.918762 0.002135 0.007697 +E 13125.000000 60.000000 21.179976 178.936020 0.002130 0.007677 +E 13150.000000 60.000000 21.177814 178.949844 0.002124 0.007655 +E 13175.000000 60.000000 21.174274 178.946884 0.002117 0.007630 +E 13200.000000 60.000000 21.174377 178.939606 0.002111 0.007609 +E 13225.000000 60.000000 21.173948 178.937500 0.002107 0.007596 +E 13250.000000 60.000000 21.168396 178.956070 0.002110 0.007607 +E 13275.000000 60.000000 21.165648 178.959122 0.002108 0.007601 +E 13300.000000 60.000000 21.163738 178.956879 0.002106 0.007592 +E 13325.000000 60.000000 21.160034 178.961426 0.002109 0.007604 +E 13350.000000 60.000000 21.158607 178.957581 0.002113 0.007616 +E 13375.000000 60.000000 21.158293 178.949631 0.002116 0.007628 +E 13400.000000 60.000000 21.156019 178.948990 0.002117 0.007631 +E 13425.000000 60.000000 21.153503 178.958710 0.002122 0.007648 +E 13450.000000 60.000000 21.150789 178.975998 0.002130 0.007678 +E 13475.000000 60.000000 21.148476 178.980377 0.002143 0.007724 +E 13500.000000 60.000000 21.147963 178.974136 0.002157 0.007775 +E 13525.000000 60.000000 21.149271 178.957108 0.002172 0.007830 +E 13550.000000 60.000000 21.145205 178.982895 0.002201 0.007935 +E 13575.000000 60.000000 21.141298 178.991150 0.002231 0.008044 +E 13600.000000 60.000000 21.137802 178.974838 0.002263 0.008160 +E 13625.000000 60.000000 21.138525 178.974426 0.002282 0.008227 +E 13650.000000 60.000000 21.137794 178.979416 0.002301 0.008296 +E 13675.000000 60.000000 21.134073 178.990768 0.002323 0.008375 +E 13700.000000 60.000000 21.131861 178.993134 0.002377 0.008570 +E 13725.000000 60.000000 21.130264 178.994690 0.002469 0.008902 +E 13750.000000 60.000000 21.129519 178.997803 0.002638 0.009509 +E 13775.000000 60.000000 21.129263 178.998016 0.002876 0.010367 +E 13800.000000 60.000000 21.128136 178.995911 0.003126 0.011270 +E 13825.000000 60.000000 21.123857 178.989746 0.003279 0.011820 +E 13850.000000 60.000000 21.118710 178.992096 0.003253 0.011728 +E 13875.000000 60.000000 21.116119 178.997345 0.003157 0.011383 +E 13900.000000 60.000000 21.121500 179.003357 0.003023 0.010898 +E 13925.000000 60.000000 21.120661 179.008316 0.002940 0.010597 +E 13950.000000 60.000000 21.116556 179.009415 0.002861 0.010313 +E 13975.000000 60.000000 21.108747 178.997192 0.002728 0.009837 +E 14000.000000 60.000000 21.101583 178.995193 0.002649 0.009550 +E 14025.000000 60.000000 21.096470 178.998642 0.002591 0.009342 +E 14050.000000 60.000000 21.100515 179.007095 0.002526 0.009107 +E 14075.000000 60.000000 21.102694 179.016617 0.002481 0.008945 +E 14100.000000 60.000000 21.103296 179.023041 0.002446 0.008817 +E 14125.000000 60.000000 21.099791 179.002487 0.002399 0.008649 +E 14150.000000 60.000000 21.097134 179.000122 0.002368 0.008538 +E 14175.000000 60.000000 21.095373 179.009720 0.002347 0.008461 +E 14200.000000 60.000000 21.097595 179.022873 0.002322 0.008372 +E 14225.000000 60.000000 21.096169 179.031937 0.002307 0.008316 +E 14250.000000 60.000000 21.092171 179.037064 0.002298 0.008285 +E 14275.000000 60.000000 21.090797 179.023880 0.002284 0.008232 +E 14300.000000 60.000000 21.085629 179.020325 0.002273 0.008196 +E 14325.000000 60.000000 21.077559 179.024902 0.002267 0.008175 +E 14350.000000 60.000000 21.082062 179.031815 0.002261 0.008150 +E 14375.000000 60.000000 21.080105 179.030136 0.002254 0.008125 +E 14400.000000 60.000000 21.072092 179.020416 0.002247 0.008100 +E 14425.000000 60.000000 21.075012 179.046646 0.002248 0.008105 +E 14450.000000 60.000000 21.075239 179.049545 0.002244 0.008090 +E 14475.000000 60.000000 21.072664 179.028168 0.002234 0.008053 +E 14500.000000 60.000000 21.072016 179.038773 0.002232 0.008044 +E 14525.000000 60.000000 21.069973 179.049438 0.002233 0.008050 +E 14550.000000 60.000000 21.066278 179.059525 0.002239 0.008070 +E 14575.000000 60.000000 21.065853 179.055984 0.002230 0.008038 +E 14600.000000 60.000000 21.063932 179.052399 0.002229 0.008036 +E 14625.000000 60.000000 21.060051 179.049362 0.002239 0.008072 +E 14650.000000 60.000000 21.062275 179.051712 0.002233 0.008047 +E 14675.000000 60.000000 21.061193 179.058289 0.002233 0.008050 +E 14700.000000 60.000000 21.055496 179.070007 0.002245 0.008094 +E 14725.000000 60.000000 21.058531 179.064331 0.002239 0.008069 +E 14750.000000 60.000000 21.056492 179.057724 0.002239 0.008069 +E 14775.000000 60.000000 21.046925 179.051376 0.002249 0.008107 +E 14800.000000 60.000000 21.049509 179.065994 0.002247 0.008101 +E 14825.000000 60.000000 21.047678 179.067917 0.002247 0.008099 +E 14850.000000 60.000000 21.038521 179.050278 0.002249 0.008107 +E 14875.000000 60.000000 21.045326 179.074051 0.002251 0.008115 +E 14900.000000 60.000000 21.047333 179.087021 0.002257 0.008135 +E 14925.000000 60.000000 21.040768 179.080109 0.002267 0.008172 +E 14950.000000 60.000000 21.042368 179.078369 0.002266 0.008166 +E 14975.000000 60.000000 21.040455 179.074432 0.002271 0.008185 +E 15000.000000 60.000000 21.032591 179.066681 0.002287 0.008243 +E 15025.000000 60.000000 21.037014 179.072037 0.002283 0.008226 +E 15050.000000 60.000000 21.036997 179.076767 0.002285 0.008234 +E 15075.000000 60.000000 21.029419 179.079086 0.002299 0.008286 +E 15100.000000 60.000000 21.029924 179.073227 0.002298 0.008280 +E 15125.000000 60.000000 21.029226 179.077362 0.002298 0.008282 +E 15150.000000 60.000000 21.026056 179.095871 0.002304 0.008302 +E 15175.000000 60.000000 21.028156 179.092880 0.002308 0.008316 +E 15200.000000 60.000000 21.026619 179.088623 0.002315 0.008341 +E 15225.000000 60.000000 21.019823 179.084793 0.002326 0.008381 +E 15250.000000 60.000000 21.023294 179.098175 0.002330 0.008394 +E 15275.000000 60.000000 21.021626 179.097488 0.002338 0.008422 +E 15300.000000 60.000000 21.012756 179.078003 0.002351 0.008472 +E 15325.000000 60.000000 21.019438 179.083557 0.002352 0.008476 +E 15350.000000 60.000000 21.020315 179.089401 0.002358 0.008496 +E 15375.000000 60.000000 21.013624 179.094238 0.002370 0.008538 +E 15400.000000 60.000000 21.013042 179.095718 0.002374 0.008553 +E 15425.000000 60.000000 21.010447 179.099075 0.002384 0.008590 +E 15450.000000 60.000000 21.005461 179.104568 0.002402 0.008653 +E 15475.000000 60.000000 21.011929 179.092667 0.002407 0.008670 +E 15500.000000 60.000000 21.010900 179.096878 0.002415 0.008701 +E 15525.000000 60.000000 21.002522 179.116974 0.002427 0.008744 +E 15550.000000 60.000000 21.004925 179.119293 0.002425 0.008736 +E 15575.000000 60.000000 21.004660 179.119247 0.002433 0.008765 +E 15600.000000 60.000000 21.002121 179.116959 0.002450 0.008824 +E 15625.000000 60.000000 21.002026 179.112701 0.002455 0.008844 +E 15650.000000 60.000000 20.998526 179.112137 0.002466 0.008883 +E 15675.000000 60.000000 20.992752 179.114731 0.002480 0.008934 +E 15700.000000 60.000000 20.993113 179.119263 0.002484 0.008948 +E 15725.000000 60.000000 20.994875 179.120514 0.002494 0.008981 +E 15750.000000 60.000000 20.996733 179.119339 0.002507 0.009028 +E 15775.000000 60.000000 20.990519 179.117081 0.002518 0.009070 +E 15800.000000 60.000000 20.987068 179.117050 0.002529 0.009108 +E 15825.000000 60.000000 20.986206 179.118683 0.002540 0.009149 +E 15850.000000 60.000000 20.990820 179.122284 0.002556 0.009205 +E 15875.000000 60.000000 20.990707 179.125916 0.002567 0.009244 +E 15900.000000 60.000000 20.988661 179.129303 0.002576 0.009277 +E 15925.000000 60.000000 20.989021 179.131561 0.002591 0.009329 +E 15950.000000 60.000000 20.984917 179.129135 0.002607 0.009389 +E 15975.000000 60.000000 20.980352 179.130554 0.002624 0.009451 +E 16000.000000 60.000000 20.981201 179.153000 0.002638 0.009499 +E 16025.000000 60.000000 20.976559 179.153442 0.002650 0.009541 +E 16050.000000 60.000000 20.972925 179.142303 0.002663 0.009589 +E 16075.000000 60.000000 20.977463 179.120285 0.002683 0.009660 +E 16100.000000 60.000000 20.974829 179.126328 0.002700 0.009721 +E 16125.000000 60.000000 20.972452 179.138870 0.002715 0.009776 +E 16150.000000 60.000000 20.974855 179.149185 0.002728 0.009820 +E 16175.000000 60.000000 20.972359 179.142212 0.002750 0.009901 +E 16200.000000 60.000000 20.972656 179.141159 0.002772 0.009979 +E 16225.000000 60.000000 20.979527 179.156387 0.002789 0.010040 +E 16250.000000 60.000000 20.969889 179.157104 0.002809 0.010111 +E 16275.000000 60.000000 20.966637 179.151566 0.002830 0.010189 +E 16300.000000 60.000000 20.975115 179.139648 0.002854 0.010273 +E 16325.000000 60.000000 20.971657 179.152267 0.002877 0.010356 +E 16350.000000 60.000000 20.967148 179.159409 0.002904 0.010454 +E 16375.000000 60.000000 20.962227 179.159027 0.002936 0.010568 +E 16400.000000 60.000000 20.963692 179.163391 0.002956 0.010641 +E 16425.000000 60.000000 20.966311 179.167160 0.002992 0.010770 +E 16450.000000 60.000000 20.969114 179.169769 0.003041 0.010943 +E 16475.000000 60.000000 20.960278 179.163971 0.003061 0.011019 +E 16500.000000 60.000000 20.961136 179.174667 0.003105 0.011177 +E 16525.000000 60.000000 20.966970 179.190933 0.003165 0.011390 +E 16550.000000 60.000000 20.962191 179.169907 0.003220 0.011588 +E 16575.000000 60.000000 20.963964 179.175369 0.003302 0.011883 +E 16600.000000 60.000000 20.967409 179.185303 0.003404 0.012247 +E 16625.000000 60.000000 20.963537 179.157074 0.003519 0.012664 +E 16650.000000 60.000000 20.962151 179.161880 0.003718 0.013379 +E 16675.000000 60.000000 20.962458 179.175949 0.003979 0.014317 +E 16700.000000 60.000000 20.964846 179.178604 0.004298 0.015465 +E 16725.000000 60.000000 20.964939 179.173889 0.004778 0.017188 +E 16750.000000 60.000000 20.962988 179.171631 0.005398 0.019418 +E 16775.000000 60.000000 20.957264 179.181000 0.006167 0.022187 +E 16800.000000 60.000000 20.964642 179.161362 0.007190 0.025862 +E 16825.000000 60.000000 20.973606 179.165298 0.008441 0.030356 +E 16850.000000 60.000000 20.979858 179.225937 0.009863 0.035462 +E 16875.000000 60.000000 20.948915 179.180405 0.011534 0.041499 +E 16900.000000 60.000000 20.925520 179.162109 0.013527 0.048692 +E 16925.000000 60.000000 20.918762 179.185135 0.015819 0.056947 +E 16950.000000 60.000000 20.942108 179.076096 0.018319 0.065913 +E 16975.000000 60.000000 20.913437 179.051849 0.021060 0.075819 +E 17000.000000 60.000000 20.852385 179.117813 0.024083 0.086815 +E 1930.000000 70.000000 37.364731 90.587944 0.008912 0.032643 +E 1940.000000 70.000000 37.327927 90.918312 0.008126 0.029728 +E 1950.000000 70.000000 37.274158 91.285599 0.007502 0.027404 +E 1960.000000 70.000000 37.253658 91.658600 0.007096 0.025897 +E 1970.000000 70.000000 37.232479 91.998413 0.006756 0.024630 +E 1980.000000 70.000000 37.205528 92.431091 0.006483 0.023612 +E 1990.000000 70.000000 37.172489 92.904839 0.006278 0.022844 +E 2000.000000 70.000000 37.116592 93.317833 0.006091 0.022137 +E 2010.000000 70.000000 37.061775 93.725319 0.005917 0.021482 +E 2020.000000 70.000000 37.016304 94.225700 0.005743 0.020832 +E 2030.000000 70.000000 36.963127 94.682739 0.005572 0.020195 +E 2040.000000 70.000000 36.901291 95.068840 0.005418 0.019619 +E 2050.000000 70.000000 36.835468 95.499962 0.005268 0.019061 +E 2060.000000 70.000000 36.772411 95.937241 0.005118 0.018501 +E 2070.000000 70.000000 36.703846 96.383453 0.004977 0.017973 +E 2080.000000 70.000000 36.652714 96.756294 0.004841 0.017465 +E 2090.000000 70.000000 36.615101 97.117836 0.004707 0.016968 +E 2100.000000 70.000000 36.548481 97.499702 0.004590 0.016527 +E 2110.000000 70.000000 36.480022 97.927620 0.004493 0.016152 +E 2120.000000 70.000000 36.433453 98.323624 0.004397 0.015788 +E 2130.000000 70.000000 36.375908 98.718651 0.004308 0.015447 +E 2140.000000 70.000000 36.325573 99.132324 0.004230 0.015145 +E 2150.000000 70.000000 36.285294 99.568016 0.004156 0.014864 +E 2160.000000 70.000000 36.236328 99.971344 0.004092 0.014612 +E 2170.000000 70.000000 36.181240 100.366402 0.004033 0.014385 +E 2180.000000 70.000000 36.141354 100.747581 0.003972 0.014148 +E 2190.000000 70.000000 36.106136 101.128822 0.003906 0.013897 +E 2200.000000 70.000000 36.048424 101.608353 0.003850 0.013679 +E 2210.000000 70.000000 36.004749 102.024353 0.003791 0.013453 +E 2220.000000 70.000000 35.962479 102.474487 0.003733 0.013232 +E 2230.000000 70.000000 35.914478 102.920311 0.003680 0.013029 +E 2240.000000 70.000000 35.847569 103.395088 0.003634 0.012849 +E 2250.000000 70.000000 35.773613 103.885582 0.003591 0.012681 +E 2260.000000 70.000000 35.692127 104.354294 0.003551 0.012520 +E 2270.000000 70.000000 35.582951 104.862045 0.003515 0.012375 +E 2280.000000 70.000000 35.453472 105.334129 0.003481 0.012231 +E 2290.000000 70.000000 35.318150 105.749680 0.003447 0.012088 +E 2300.000000 70.000000 35.161972 106.134514 0.003417 0.011961 +E 2310.000000 70.000000 34.984295 106.456078 0.003393 0.011850 +E 2320.000000 70.000000 34.818676 106.705620 0.003369 0.011742 +E 2330.000000 70.000000 34.670010 106.901962 0.003347 0.011642 +E 2340.000000 70.000000 34.535183 107.019730 0.003324 0.011545 +E 2350.000000 70.000000 34.432842 107.095596 0.003301 0.011448 +E 2360.000000 70.000000 34.351742 107.155983 0.003279 0.011361 +E 2370.000000 70.000000 34.315086 107.199654 0.003256 0.011270 +E 2380.000000 70.000000 34.310715 107.277481 0.003229 0.011174 +E 2390.000000 70.000000 34.329380 107.358536 0.003207 0.011096 +E 2400.000000 70.000000 34.363380 107.432564 0.003186 0.011026 +E 2410.000000 70.000000 34.416073 107.574608 0.003166 0.010957 +E 2420.000000 70.000000 34.479912 107.771950 0.003147 0.010894 +E 2430.000000 70.000000 34.547676 108.020248 0.003133 0.010849 +E 2440.000000 70.000000 34.624744 108.262756 0.003119 0.010805 +E 2450.000000 70.000000 34.706661 108.556740 0.003104 0.010756 +E 2460.000000 70.000000 34.781773 108.891022 0.003093 0.010723 +E 2470.000000 70.000000 34.863846 109.214561 0.003084 0.010697 +E 2480.000000 70.000000 34.951580 109.588409 0.003076 0.010673 +E 2490.000000 70.000000 35.034187 109.973900 0.003069 0.010651 +E 2500.000000 70.000000 35.111958 110.371918 0.003066 0.010645 +E 2510.000000 70.000000 35.189865 110.804939 0.003066 0.010648 +E 2520.000000 70.000000 35.267097 111.230530 0.003062 0.010636 +E 2530.000000 70.000000 35.337391 111.670860 0.003065 0.010649 +E 2540.000000 70.000000 35.407669 112.179893 0.003073 0.010679 +E 2550.000000 70.000000 35.477032 112.674950 0.003079 0.010703 +E 2560.000000 70.000000 35.542759 113.134995 0.003091 0.010746 +E 2570.000000 70.000000 35.612579 113.679634 0.003104 0.010793 +E 2580.000000 70.000000 35.679558 114.213135 0.003118 0.010844 +E 2590.000000 70.000000 35.733543 114.767754 0.003136 0.010907 +E 2600.000000 70.000000 35.795723 115.336754 0.003157 0.010978 +E 2610.000000 70.000000 35.860703 115.884056 0.003178 0.011052 +E 2620.000000 70.000000 35.924427 116.493622 0.003200 0.011131 +E 2630.000000 70.000000 35.980713 117.119637 0.003225 0.011218 +E 2640.000000 70.000000 36.030968 117.754684 0.003253 0.011315 +E 2650.000000 70.000000 36.085064 118.407745 0.003284 0.011422 +E 2660.000000 70.000000 36.136944 119.116081 0.003319 0.011542 +E 2670.000000 70.000000 36.175995 119.824684 0.003353 0.011661 +E 2680.000000 70.000000 36.209717 120.552177 0.003387 0.011777 +E 2690.000000 70.000000 36.227795 121.342392 0.003424 0.011902 +E 2700.000000 70.000000 36.230461 122.148163 0.003463 0.012031 +E 2710.000000 70.000000 36.216698 122.968735 0.003507 0.012177 +E 2720.000000 70.000000 36.192696 123.859016 0.003552 0.012325 +E 2730.000000 70.000000 36.138039 124.700455 0.003596 0.012468 +E 2740.000000 70.000000 36.053299 125.508942 0.003644 0.012620 +E 2750.000000 70.000000 35.955658 126.359566 0.003693 0.012773 +E 2760.000000 70.000000 35.853817 127.210060 0.003743 0.012932 +E 2770.000000 70.000000 35.726540 127.983955 0.003805 0.013124 +E 2780.000000 70.000000 35.591911 128.808090 0.003851 0.013265 +E 2790.000000 70.000000 35.442772 129.640686 0.003894 0.013393 +E 2800.000000 70.000000 35.286263 130.410721 0.003943 0.013539 +E 2810.000000 70.000000 35.132835 131.150909 0.003997 0.013700 +E 2820.000000 70.000000 34.968052 131.900406 0.004053 0.013870 +E 2830.000000 70.000000 34.800484 132.662094 0.004109 0.014040 +E 2840.000000 70.000000 34.623726 133.434204 0.004163 0.014201 +E 2850.000000 70.000000 34.451305 134.206909 0.004226 0.014393 +E 2860.000000 70.000000 34.246681 135.003693 0.004296 0.014604 +E 2870.000000 70.000000 34.017262 135.794312 0.004364 0.014805 +E 2880.000000 70.000000 33.755402 136.631180 0.004442 0.015037 +E 2890.000000 70.000000 33.454830 137.405609 0.004532 0.015310 +E 2900.000000 70.000000 33.126427 138.131073 0.004628 0.015597 +E 2910.000000 70.000000 32.764652 138.827225 0.004728 0.015896 +E 2920.000000 70.000000 32.389965 139.340088 0.004834 0.016216 +E 2930.000000 70.000000 32.031475 139.807861 0.004936 0.016524 +E 2940.000000 70.000000 31.677370 140.208817 0.005033 0.016817 +E 2950.000000 70.000000 31.327654 140.538818 0.005133 0.017123 +E 2960.000000 70.000000 31.004843 140.832809 0.005234 0.017439 +E 2970.000000 70.000000 30.681906 141.030594 0.005332 0.017743 +E 2980.000000 70.000000 30.378723 141.186264 0.005431 0.018055 +E 2990.000000 70.000000 30.088404 141.302261 0.005535 0.018389 +E 3000.000000 70.000000 29.856674 141.441391 0.005628 0.018685 +E 3010.000000 70.000000 29.617622 141.536407 0.005714 0.018964 +E 3020.000000 70.000000 29.364843 141.586838 0.005817 0.019298 +E 3030.000000 70.000000 29.152470 141.661591 0.005924 0.019648 +E 3040.000000 70.000000 28.961008 141.737808 0.006021 0.019970 +E 3050.000000 70.000000 28.772602 141.795090 0.006124 0.020311 +E 3060.000000 70.000000 28.593479 141.829575 0.006228 0.020656 +E 3070.000000 70.000000 28.435537 141.907288 0.006325 0.020976 +E 3080.000000 70.000000 28.290312 141.942276 0.006422 0.021300 +E 3090.000000 70.000000 28.149612 141.977341 0.006525 0.021645 +E 3100.000000 70.000000 28.004360 142.055634 0.006621 0.021969 +E 3110.000000 70.000000 27.875938 142.112366 0.006713 0.022278 +E 3120.000000 70.000000 27.759203 142.160355 0.006816 0.022624 +E 3130.000000 70.000000 27.643923 142.266327 0.006900 0.022910 +E 3140.000000 70.000000 27.545515 142.326447 0.006986 0.023200 +E 3150.000000 70.000000 27.444738 142.361801 0.007083 0.023527 +E 3160.000000 70.000000 27.346674 142.391205 0.007176 0.023843 +E 3170.000000 70.000000 27.276217 142.512802 0.007263 0.024135 +E 3180.000000 70.000000 27.188883 142.639313 0.007348 0.024424 +E 3190.000000 70.000000 27.098475 142.707230 0.007449 0.024767 +E 3200.000000 70.000000 27.024204 142.801193 0.007534 0.025057 +E 3210.000000 70.000000 26.950668 142.849411 0.007632 0.025390 +E 3220.000000 70.000000 26.867342 142.914093 0.007743 0.025766 +E 3230.000000 70.000000 26.799820 143.009979 0.007826 0.026052 +E 3240.000000 70.000000 26.749958 143.158997 0.007905 0.026320 +E 3250.000000 70.000000 26.691898 143.326004 0.008008 0.026666 +E 3260.000000 70.000000 26.624580 143.414383 0.008168 0.027208 +E 3270.000000 70.000000 26.588827 143.505005 0.008348 0.027813 +E 3280.000000 70.000000 26.547674 143.647690 0.008523 0.028400 +E 3290.000000 70.000000 26.488834 143.852615 0.008660 0.028865 +E 3300.000000 70.000000 26.436474 143.953354 0.008786 0.029293 +E 3310.000000 70.000000 26.397264 144.055893 0.008925 0.029760 +E 3320.000000 70.000000 26.342291 144.276688 0.009032 0.030127 +E 3330.000000 70.000000 26.317158 144.368408 0.009107 0.030380 +E 3340.000000 70.000000 26.306942 144.455856 0.009170 0.030591 +E 3350.000000 70.000000 26.267775 144.613312 0.009236 0.030816 +E 3360.000000 70.000000 26.204828 144.812012 0.009313 0.031086 +E 3370.000000 70.000000 26.171967 144.969696 0.009369 0.031277 +E 3380.000000 70.000000 26.160604 145.038330 0.009401 0.031385 +E 3390.000000 70.000000 26.145649 145.239670 0.009413 0.031425 +E 3400.000000 70.000000 26.131344 145.414993 0.009436 0.031505 +E 3410.000000 70.000000 26.099709 145.574875 0.009484 0.031670 +E 3420.000000 70.000000 26.077091 145.712830 0.009570 0.031961 +E 3430.000000 70.000000 26.059452 145.914688 0.009640 0.032199 +E 3440.000000 70.000000 26.052078 146.114990 0.009694 0.032378 +E 3450.000000 70.000000 26.073477 146.297180 0.009782 0.032666 +E 3460.000000 70.000000 26.065239 146.498413 0.009862 0.032934 +E 3470.000000 70.000000 26.060627 146.646606 0.009951 0.033232 +E 3480.000000 70.000000 26.062428 146.801163 0.010019 0.033455 +E 3490.000000 70.000000 26.111877 147.066574 0.010081 0.033649 +E 3500.000000 70.000000 26.165169 147.308807 0.010147 0.033858 +E 3510.000000 70.000000 26.194157 147.496277 0.010219 0.034090 +E 3520.000000 70.000000 26.219084 147.731720 0.010295 0.034334 +E 3530.000000 70.000000 26.279291 147.946365 0.010354 0.034517 +E 3540.000000 70.000000 26.356745 148.327927 0.010434 0.034766 +E 3550.000000 70.000000 26.445419 148.634201 0.010493 0.034939 +E 3560.000000 70.000000 26.538935 149.020782 0.010536 0.035062 +E 3570.000000 70.000000 26.612930 149.462906 0.010608 0.035286 +E 3580.000000 70.000000 26.684912 149.837433 0.010675 0.035492 +E 3590.000000 70.000000 26.809250 150.350967 0.010722 0.035623 +E 3600.000000 70.000000 26.868715 150.934235 0.010779 0.035802 +E 3610.000000 70.000000 26.974009 151.630325 0.010824 0.035929 +E 3620.000000 70.000000 27.035006 152.352829 0.010861 0.036042 +E 3630.000000 70.000000 27.063824 153.032623 0.010908 0.036190 +E 3640.000000 70.000000 27.093979 153.851074 0.010980 0.036424 +E 3650.000000 70.000000 27.108665 154.728973 0.011058 0.036678 +E 3660.000000 70.000000 27.074831 155.624710 0.011057 0.036682 +E 3670.000000 70.000000 26.998297 156.526047 0.011003 0.036516 +E 3680.000000 70.000000 26.929335 157.427017 0.010992 0.036491 +E 3690.000000 70.000000 26.823792 158.302948 0.011066 0.036757 +E 3700.000000 70.000000 26.660860 159.244812 0.011236 0.037353 +E 3710.000000 70.000000 26.491405 160.106903 0.011411 0.037974 +E 3720.000000 70.000000 26.299400 160.876572 0.011509 0.038346 +E 3730.000000 70.000000 26.085173 161.752975 0.011636 0.038826 +E 3740.000000 70.000000 25.866016 162.510529 0.011771 0.039340 +E 3750.000000 70.000000 25.607012 163.173447 0.011830 0.039618 +E 3760.000000 70.000000 25.339903 163.804749 0.011844 0.039757 +E 3770.000000 70.000000 25.061275 164.464035 0.011916 0.040105 +E 3780.000000 70.000000 24.787838 164.987610 0.011908 0.040188 +E 3790.000000 70.000000 24.531576 165.428650 0.011868 0.040161 +E 3800.000000 70.000000 24.258633 165.849319 0.011918 0.040459 +E 3810.000000 70.000000 24.003521 166.143723 0.012083 0.041146 +E 3820.000000 70.000000 23.782835 166.495819 0.012211 0.041699 +E 3830.000000 70.000000 23.518969 166.788223 0.012169 0.041705 +E 3840.000000 70.000000 23.263922 166.994232 0.012213 0.042007 +E 3850.000000 70.000000 23.047279 167.277908 0.012367 0.042674 +E 3860.000000 70.000000 22.831839 167.577927 0.012336 0.042712 +E 3870.000000 70.000000 22.600477 167.722458 0.012191 0.042369 +E 3880.000000 70.000000 22.383007 167.853546 0.012036 0.041985 +E 3890.000000 70.000000 22.195124 168.051346 0.012106 0.042368 +E 3900.000000 70.000000 22.027351 168.127670 0.012470 0.043776 +E 3910.000000 70.000000 21.834549 168.254700 0.012862 0.045317 +E 3920.000000 70.000000 21.629786 168.414108 0.012812 0.045318 +E 3930.000000 70.000000 21.460327 168.469009 0.012616 0.044778 +E 3940.000000 70.000000 21.284803 168.617737 0.012482 0.044463 +E 3950.000000 70.000000 21.123819 168.785690 0.012464 0.044549 +E 3960.000000 70.000000 20.966738 168.835236 0.012609 0.045219 +E 3970.000000 70.000000 20.792219 168.900192 0.012767 0.045965 +E 3980.000000 70.000000 20.649120 169.078888 0.012609 0.045544 +E 3990.000000 70.000000 20.511387 169.022369 0.012430 0.045041 +E 4000.000000 70.000000 20.380026 169.138107 0.012529 0.045544 +E 4010.000000 70.000000 20.234409 169.266190 0.012842 0.046845 +E 4020.000000 70.000000 20.083815 169.179916 0.013040 0.047746 +E 4030.000000 70.000000 19.961927 169.274902 0.013061 0.047972 +E 4040.000000 70.000000 19.836092 169.424545 0.012971 0.047796 +E 4050.000000 70.000000 19.681059 169.551529 0.012719 0.047057 +E 4060.000000 70.000000 19.559454 169.606873 0.012460 0.046251 +E 4070.000000 70.000000 19.448360 169.612274 0.012528 0.046642 +E 4080.000000 70.000000 19.306227 169.714233 0.012900 0.048219 +E 4090.000000 70.000000 19.189598 169.779312 0.013204 0.049518 +E 4100.000000 70.000000 19.113008 169.788757 0.013247 0.049786 +E 4110.000000 70.000000 19.005634 169.979553 0.013248 0.049948 +E 4120.000000 70.000000 18.872583 170.033508 0.013106 0.049605 +E 4130.000000 70.000000 18.747465 169.932541 0.012739 0.048398 +E 4140.000000 70.000000 18.675760 170.055191 0.012579 0.047892 +E 4150.000000 70.000000 18.584326 170.128372 0.012785 0.048815 +E 4160.000000 70.000000 18.468733 170.124969 0.012921 0.049512 +E 4170.000000 70.000000 18.346674 170.120895 0.012906 0.049647 +E 4180.000000 70.000000 18.224989 170.109985 0.012930 0.049932 +E 4190.000000 70.000000 18.176970 170.195648 0.013078 0.050582 +E 4200.000000 70.000000 18.107901 170.358521 0.013116 0.050846 +E 4210.000000 70.000000 17.971607 170.357956 0.012796 0.049829 +E 4220.000000 70.000000 17.853750 170.333069 0.012397 0.048469 +E 4230.000000 70.000000 17.735748 170.372864 0.012164 0.047749 +E 4240.000000 70.000000 17.670206 170.417953 0.012150 0.047804 +E 4250.000000 70.000000 17.625563 170.450928 0.012565 0.049511 +E 4260.000000 70.000000 17.522587 170.524078 0.013064 0.051665 +E 4270.000000 70.000000 17.438272 170.655685 0.013026 0.051670 +E 4280.000000 70.000000 17.362068 170.637131 0.012653 0.050329 +E 4290.000000 70.000000 17.220146 170.626587 0.012787 0.051125 +E 4300.000000 70.000000 17.196371 170.641357 0.012849 0.051421 +E 4310.000000 70.000000 17.149319 170.682831 0.012741 0.051077 +E 4320.000000 70.000000 17.024426 170.638824 0.012968 0.052227 +E 4330.000000 70.000000 16.936495 170.573288 0.013179 0.053256 +E 4340.000000 70.000000 16.878851 170.674103 0.012878 0.052154 +E 4350.000000 70.000000 16.770741 170.739502 0.012755 0.051872 +E 4360.000000 70.000000 16.708717 170.709579 0.012940 0.052753 +E 4370.000000 70.000000 16.650553 170.794052 0.012951 0.052919 +E 4380.000000 70.000000 16.561031 170.836426 0.012880 0.052816 +E 4390.000000 70.000000 16.520384 170.861786 0.012787 0.052520 +E 4400.000000 70.000000 16.465357 170.907669 0.012737 0.052430 +E 4410.000000 70.000000 16.366589 170.884613 0.012533 0.051800 +E 4420.000000 70.000000 16.291142 170.941193 0.012133 0.050300 +E 4430.000000 70.000000 16.244478 170.976700 0.012078 0.050171 +E 4440.000000 70.000000 16.189871 171.058792 0.012189 0.050748 +E 4450.000000 70.000000 16.105812 171.049561 0.012133 0.050691 +E 4460.000000 70.000000 16.044970 170.971802 0.012045 0.050452 +E 4470.000000 70.000000 15.996713 171.026199 0.012112 0.050839 +E 4480.000000 70.000000 15.934414 171.059616 0.012179 0.051259 +E 4490.000000 70.000000 15.854892 171.122467 0.012187 0.051467 +E 4500.000000 70.000000 15.804461 171.102005 0.012123 0.051309 +E 4510.000000 70.000000 15.746460 171.155807 0.012128 0.051461 +E 4520.000000 70.000000 15.677960 171.210632 0.012181 0.051843 +E 4530.000000 70.000000 15.617671 171.141861 0.012162 0.051902 +E 4540.000000 70.000000 15.560222 171.307495 0.012112 0.051824 +E 4550.000000 70.000000 15.507298 171.350708 0.012056 0.051707 +E 4560.000000 70.000000 15.448170 171.298752 0.011946 0.051374 +E 4570.000000 70.000000 15.392149 171.349731 0.011769 0.050743 +E 4580.000000 70.000000 15.334008 171.402100 0.011515 0.049781 +E 4590.000000 70.000000 15.283431 171.373672 0.011320 0.049051 +E 4600.000000 70.000000 15.250581 171.278961 0.011492 0.049875 +E 4610.000000 70.000000 15.191825 171.312531 0.011783 0.051279 +E 4620.000000 70.000000 15.131215 171.462875 0.011884 0.051868 +E 4630.000000 70.000000 15.066402 171.403610 0.011614 0.050846 +E 4640.000000 70.000000 15.002156 171.399551 0.011191 0.049144 +E 4650.000000 70.000000 14.977331 171.387329 0.011046 0.048566 +E 4660.000000 70.000000 14.939166 171.391693 0.011192 0.049299 +E 4670.000000 70.000000 14.884884 171.490997 0.011417 0.050421 +E 4680.000000 70.000000 14.830277 171.489349 0.011507 0.050957 +E 4690.000000 70.000000 14.794390 171.535828 0.011564 0.051298 +E 4700.000000 70.000000 14.747604 171.564270 0.011791 0.052426 +E 4710.000000 70.000000 14.663223 171.507507 0.011978 0.053482 +E 4720.000000 70.000000 14.612101 171.505630 0.011843 0.053015 +E 4730.000000 70.000000 14.576301 171.532791 0.011596 0.052007 +E 4740.000000 70.000000 14.557932 171.617233 0.011509 0.051661 +E 4750.000000 70.000000 14.500517 171.555130 0.011557 0.052029 +E 4760.000000 70.000000 14.432364 171.550720 0.011523 0.052060 +E 4770.000000 70.000000 14.379240 171.597382 0.011434 0.051800 +E 4780.000000 70.000000 14.357383 171.649582 0.011324 0.051358 +E 4790.000000 70.000000 14.317633 171.669876 0.011224 0.051010 +E 4800.000000 70.000000 14.263372 171.625305 0.011206 0.051076 +E 4810.000000 70.000000 14.221684 171.641724 0.011184 0.051084 +E 4820.000000 70.000000 14.195223 171.704727 0.011183 0.051155 +E 4830.000000 70.000000 14.155863 171.714539 0.011142 0.051074 +E 4840.000000 70.000000 14.091934 171.836777 0.011019 0.050681 +E 4850.000000 70.000000 14.038381 171.808029 0.010523 0.048537 +E 4860.000000 70.000000 14.002892 171.776321 0.009249 0.042744 +E 4870.000000 70.000000 13.981593 171.844467 0.008796 0.040700 +E 4880.000000 70.000000 13.949656 171.860397 0.010111 0.046867 +E 4890.000000 70.000000 13.914122 171.945236 0.010773 0.050031 +E 4900.000000 70.000000 13.858474 171.882538 0.010769 0.050163 +E 4910.000000 70.000000 13.825664 171.802902 0.010671 0.049798 +E 4920.000000 70.000000 13.780122 171.933701 0.010702 0.050069 +E 4930.000000 70.000000 13.727965 171.949753 0.010670 0.050066 +E 4940.000000 70.000000 13.727051 171.926819 0.010591 0.049698 +E 4950.000000 70.000000 13.662642 171.895416 0.010715 0.050460 +E 4960.000000 70.000000 13.600838 171.905594 0.010785 0.050970 +E 4970.000000 70.000000 13.607749 171.949463 0.010693 0.050514 +E 4980.000000 70.000000 13.576309 171.982239 0.010585 0.050092 +E 4990.000000 70.000000 13.515537 171.991989 0.010458 0.049662 +E 5000.000000 70.000000 13.457089 171.979355 0.010420 0.049651 +E 5010.000000 70.000000 13.436554 171.989716 0.010395 0.049591 +E 5020.000000 70.000000 13.429926 172.039932 0.010317 0.049239 +E 5030.000000 70.000000 13.387953 172.110641 0.010319 0.049369 +E 5040.000000 70.000000 13.360041 172.084671 0.010349 0.049594 +E 5050.000000 70.000000 13.310696 172.056519 0.010374 0.049856 +E 5060.000000 70.000000 13.279428 172.121872 0.010327 0.049724 +E 5070.000000 70.000000 13.254642 172.198151 0.010307 0.049700 +E 5080.000000 70.000000 13.201105 172.238846 0.010335 0.049990 +E 5090.000000 70.000000 13.168996 172.195969 0.010326 0.050046 +E 5100.000000 70.000000 13.146140 172.165359 0.010318 0.050072 +E 5110.000000 70.000000 13.117195 172.132477 0.010276 0.049958 +E 5120.000000 70.000000 13.083791 172.186066 0.010216 0.049767 +E 5130.000000 70.000000 13.062965 172.094604 0.010207 0.049785 +E 5140.000000 70.000000 13.043760 172.055405 0.010195 0.049783 +E 5150.000000 70.000000 12.983300 172.233170 0.010180 0.049894 +E 5160.000000 70.000000 12.963504 172.330917 0.010139 0.049755 +E 5170.000000 70.000000 12.927883 172.290695 0.010124 0.049791 +E 5180.000000 70.000000 12.894392 172.191330 0.010097 0.049759 +E 5190.000000 70.000000 12.864182 172.242233 0.010068 0.049707 +E 5200.000000 70.000000 12.827656 172.320724 0.010014 0.049556 +E 5210.000000 70.000000 12.813833 172.252487 0.009971 0.049383 +E 5220.000000 70.000000 12.783376 172.306595 0.009964 0.049446 +E 5230.000000 70.000000 12.746502 172.369308 0.009934 0.049411 +E 5240.000000 70.000000 12.726078 172.376282 0.009909 0.049346 +E 5250.000000 70.000000 12.694133 172.375122 0.009872 0.049261 +E 5260.000000 70.000000 12.662826 172.307373 0.009802 0.049011 +E 5270.000000 70.000000 12.611479 172.307205 0.009723 0.048775 +E 5280.000000 70.000000 12.587087 172.340744 0.009703 0.048752 +E 5290.000000 70.000000 12.560678 172.371567 0.009690 0.048769 +E 5300.000000 70.000000 12.536326 172.333878 0.009659 0.048689 +E 5310.000000 70.000000 12.530879 172.311676 0.009653 0.048674 +E 5320.000000 70.000000 12.494526 172.376068 0.009644 0.048744 +E 5330.000000 70.000000 12.453995 172.418503 0.009575 0.048521 +E 5340.000000 70.000000 12.445150 172.285965 0.009489 0.048117 +E 5350.000000 70.000000 12.408788 172.361008 0.009468 0.048123 +E 5360.000000 70.000000 12.373638 172.434525 0.009453 0.048160 +E 5370.000000 70.000000 12.359411 172.365692 0.009432 0.048097 +E 5380.000000 70.000000 12.333626 172.357834 0.009400 0.048012 +E 5390.000000 70.000000 12.304389 172.441666 0.009328 0.047742 +E 5400.000000 70.000000 12.287143 172.551682 0.009291 0.047603 +E 5410.000000 70.000000 12.256410 172.454926 0.009268 0.047584 +E 5420.000000 70.000000 12.235332 172.457718 0.009204 0.047324 +E 5430.000000 70.000000 12.215872 172.494812 0.009128 0.046995 +E 5440.000000 70.000000 12.166745 172.449966 0.009105 0.047030 +E 5450.000000 70.000000 12.129880 172.391937 0.009082 0.047025 +E 5460.000000 70.000000 12.115445 172.448883 0.009079 0.047057 +E 5470.000000 70.000000 12.088482 172.588516 0.009067 0.047084 +E 5480.000000 70.000000 12.071642 172.570953 0.008997 0.046772 +E 5490.000000 70.000000 12.048635 172.607513 0.008935 0.046523 +E 5500.000000 70.000000 12.018157 172.614288 0.008923 0.046556 +E 5510.000000 70.000000 11.994914 172.600128 0.008928 0.046656 +E 5520.000000 70.000000 11.987124 172.573135 0.008916 0.046621 +E 5530.000000 70.000000 11.973194 172.569763 0.008884 0.046500 +E 5540.000000 70.000000 11.944142 172.681747 0.008850 0.046413 +E 5550.000000 70.000000 11.912913 172.635971 0.008835 0.046434 +E 5560.000000 70.000000 11.874080 172.600174 0.008823 0.046496 +E 5570.000000 70.000000 11.862383 172.620895 0.008794 0.046383 +E 5580.000000 70.000000 11.842405 172.678940 0.008775 0.046347 +E 5590.000000 70.000000 11.823432 172.662216 0.008770 0.046383 +E 5600.000000 70.000000 11.796490 172.640503 0.008747 0.046352 +E 5610.000000 70.000000 11.789158 172.680634 0.008697 0.046110 +E 5620.000000 70.000000 11.761437 172.676514 0.008678 0.046099 +E 5630.000000 70.000000 11.731346 172.744980 0.008669 0.046149 +E 5640.000000 70.000000 11.721725 172.784668 0.008638 0.046017 +E 5650.000000 70.000000 11.702127 172.761734 0.008600 0.045877 +E 5660.000000 70.000000 11.680478 172.697708 0.008569 0.045782 +E 5670.000000 70.000000 11.655467 172.677963 0.008482 0.045400 +E 5680.000000 70.000000 11.638405 172.836334 0.008332 0.044653 +E 5690.000000 70.000000 11.615869 172.801926 0.008158 0.043790 +E 5700.000000 70.000000 11.590267 172.782944 0.007924 0.042613 +E 5710.000000 70.000000 11.578173 172.838089 0.007808 0.042025 +E 5720.000000 70.000000 11.556172 172.818481 0.007747 0.041765 +E 5730.000000 70.000000 11.532859 172.843155 0.007675 0.041443 +E 5740.000000 70.000000 11.511471 172.876038 0.007536 0.040758 +E 5750.000000 70.000000 11.484875 172.828873 0.007465 0.040452 +E 5760.000000 70.000000 11.465578 172.807892 0.007412 0.040222 +E 5770.000000 70.000000 11.448228 172.881317 0.007270 0.039502 +E 5780.000000 70.000000 11.434128 172.899597 0.007164 0.038969 +E 5790.000000 70.000000 11.413200 172.840317 0.007154 0.038974 +E 5800.000000 70.000000 11.384785 172.818253 0.007106 0.038794 +E 5810.000000 70.000000 11.367579 172.867950 0.006930 0.037882 +E 5820.000000 70.000000 11.354798 172.871658 0.006755 0.036960 +E 5830.000000 70.000000 11.339818 172.862610 0.006919 0.037901 +E 5840.000000 70.000000 11.310710 172.917053 0.007242 0.039757 +E 5850.000000 70.000000 11.303096 172.917038 0.007193 0.039506 +E 5860.000000 70.000000 11.289329 172.975372 0.007228 0.039744 +E 5870.000000 70.000000 11.263792 172.873413 0.007303 0.040234 +E 5880.000000 70.000000 11.235555 172.904160 0.007238 0.039959 +E 5890.000000 70.000000 11.213624 172.935928 0.007218 0.039911 +E 5900.000000 70.000000 11.187429 172.907608 0.007460 0.041332 +E 5910.000000 70.000000 11.180805 172.914032 0.007614 0.042207 +E 5920.000000 70.000000 11.177961 172.959839 0.007613 0.042211 +E 5930.000000 70.000000 11.152356 172.990524 0.007494 0.041632 +E 5940.000000 70.000000 11.136552 172.991684 0.007382 0.041059 +E 5950.000000 70.000000 11.116196 173.031982 0.007293 0.040632 +E 5960.000000 70.000000 11.099436 172.964951 0.007312 0.040787 +E 5970.000000 70.000000 11.082603 172.951935 0.007436 0.041531 +E 5980.000000 70.000000 11.068828 173.037994 0.007501 0.041942 +E 5990.000000 70.000000 11.051756 173.083954 0.007505 0.042019 +E 6000.000000 70.000000 11.032812 173.028671 0.007513 0.042124 +E 6010.000000 70.000000 11.023314 173.053146 0.007459 0.041856 +E 6020.000000 70.000000 11.007709 173.072449 0.007373 0.041424 +E 6030.000000 70.000000 10.987975 173.055161 0.007271 0.040909 +E 6040.000000 70.000000 10.967356 173.081741 0.007242 0.040814 +E 6050.000000 70.000000 10.958225 173.042664 0.007390 0.041676 +E 6060.000000 70.000000 10.951637 173.013596 0.007433 0.041943 +E 6070.000000 70.000000 10.934222 173.079407 0.007443 0.042059 +E 6080.000000 70.000000 10.894495 173.136459 0.007471 0.042348 +E 6090.000000 70.000000 10.883726 173.053802 0.007499 0.042543 +E 6100.000000 70.000000 10.870139 173.141525 0.007473 0.042441 +E 6110.000000 70.000000 10.863460 173.138092 0.007431 0.042225 +E 6120.000000 70.000000 10.852050 173.133850 0.007417 0.042181 +E 6130.000000 70.000000 10.834374 173.186432 0.007401 0.042148 +E 6140.000000 70.000000 10.809425 173.156525 0.007383 0.042131 +E 6150.000000 70.000000 10.792129 173.097427 0.007430 0.042458 +E 6160.000000 70.000000 10.786530 173.175018 0.007497 0.042858 +E 6170.000000 70.000000 10.762918 173.199142 0.007535 0.043158 +E 6180.000000 70.000000 10.747923 173.175949 0.007550 0.043298 +E 6190.000000 70.000000 10.746305 173.110794 0.007576 0.043454 +E 6200.000000 70.000000 10.716991 173.134827 0.007544 0.043371 +E 6210.000000 70.000000 10.709064 173.121582 0.007549 0.043425 +E 6220.000000 70.000000 10.699302 173.145126 0.007579 0.043636 +E 6230.000000 70.000000 10.680178 173.197464 0.007540 0.043480 +E 6240.000000 70.000000 10.664915 173.172318 0.007519 0.043412 +E 6250.000000 70.000000 10.650968 173.239838 0.007586 0.043844 +E 6260.000000 70.000000 10.625656 173.200531 0.007640 0.044250 +E 6270.000000 70.000000 10.636355 173.182098 0.007639 0.044205 +E 6280.000000 70.000000 10.614540 173.205368 0.007632 0.044242 +E 6290.000000 70.000000 10.602071 173.255096 0.007638 0.044324 +E 6300.000000 70.000000 10.578819 173.349869 0.007644 0.044442 +E 6310.000000 70.000000 10.560072 173.298630 0.007683 0.044741 +E 6320.000000 70.000000 10.550346 173.178284 0.007696 0.044850 +E 6330.000000 70.000000 10.533011 173.329056 0.007673 0.044778 +E 6340.000000 70.000000 10.515390 173.339905 0.007684 0.044907 +E 6350.000000 70.000000 10.510254 173.305420 0.007682 0.044919 +E 6360.000000 70.000000 10.502902 173.328125 0.007657 0.044801 +E 6370.000000 70.000000 10.471516 173.342804 0.007645 0.044846 +E 6380.000000 70.000000 10.454593 173.328781 0.007658 0.044986 +E 6390.000000 70.000000 10.450792 173.312042 0.007658 0.044996 +E 6400.000000 70.000000 10.438745 173.288925 0.007657 0.045039 +E 6410.000000 70.000000 10.430684 173.270493 0.007669 0.045140 +E 6420.000000 70.000000 10.415838 173.404144 0.007693 0.045335 +E 6430.000000 70.000000 10.399295 173.536362 0.007685 0.045355 +E 6440.000000 70.000000 10.402256 173.435898 0.007687 0.045355 +E 6450.000000 70.000000 10.388330 173.310867 0.007701 0.045489 +E 6460.000000 70.000000 10.351901 173.357803 0.007699 0.045619 +E 6470.000000 70.000000 10.358933 173.357346 0.007692 0.045547 +E 6480.000000 70.000000 10.361680 173.404663 0.007681 0.045474 +E 6490.000000 70.000000 10.334061 173.408554 0.007672 0.045530 +E 6500.000000 70.000000 10.322186 173.406952 0.007672 0.045575 +E 6510.000000 70.000000 10.308403 173.458206 0.007676 0.045649 +E 6520.000000 70.000000 10.285506 173.402054 0.007669 0.045698 +E 6530.000000 70.000000 10.286395 173.401093 0.007676 0.045733 +E 6540.000000 70.000000 10.288983 173.435364 0.007746 0.046142 +E 6550.000000 70.000000 10.250113 173.468491 0.006866 0.041036 +E 6560.000000 70.000000 10.248907 173.462906 0.004813 0.028771 +E 6570.000000 70.000000 10.250183 173.429825 0.004650 0.027794 +E 6580.000000 70.000000 10.237034 173.436066 0.006353 0.038017 +E 6590.000000 70.000000 10.215320 173.461487 0.007609 0.045614 +E 6600.000000 70.000000 10.200864 173.388412 0.007655 0.045946 +E 6610.000000 70.000000 10.199327 173.367020 0.007661 0.045991 +E 6620.000000 70.000000 10.180434 173.408798 0.007645 0.045969 +E 6630.000000 70.000000 10.177233 173.419464 0.007634 0.045913 +E 6640.000000 70.000000 10.159374 173.487625 0.007639 0.046018 +E 6650.000000 70.000000 10.145863 173.522263 0.007645 0.046105 +E 6660.000000 70.000000 10.140770 173.569214 0.007643 0.046116 +E 6670.000000 70.000000 10.132472 173.557678 0.007641 0.046138 +E 6680.000000 70.000000 10.135470 173.514099 0.007632 0.046069 +E 6690.000000 70.000000 10.106279 173.502441 0.007618 0.046105 +E 6700.000000 70.000000 10.098595 173.622330 0.007597 0.046007 +E 6710.000000 70.000000 10.078350 173.630615 0.007601 0.046113 +E 6720.000000 70.000000 10.063108 173.560822 0.007591 0.046114 +E 6730.000000 70.000000 10.040607 173.474182 0.007588 0.046184 +E 6740.000000 70.000000 10.043713 173.541977 0.007598 0.046233 +E 6750.000000 70.000000 10.032000 173.606796 0.007606 0.046331 +E 6760.000000 70.000000 10.031154 173.488205 0.007605 0.046331 +E 6770.000000 70.000000 10.022972 173.504898 0.007598 0.046320 +E 6780.000000 70.000000 10.011140 173.551910 0.007584 0.046285 +E 6790.000000 70.000000 9.997108 173.572495 0.007568 0.046242 +E 6800.000000 70.000000 9.970707 173.551437 0.007560 0.046303 +E 6810.000000 70.000000 9.975588 173.630203 0.007557 0.046261 +E 6820.000000 70.000000 9.965106 173.666229 0.007560 0.046326 +E 6830.000000 70.000000 9.942946 173.612595 0.007558 0.046404 +E 6840.000000 70.000000 9.949089 173.666382 0.007548 0.046320 +E 6850.000000 70.000000 9.939376 173.623032 0.007517 0.046169 +E 6860.000000 70.000000 9.908001 173.687836 0.007515 0.046285 +E 6870.000000 70.000000 9.909123 173.668350 0.007535 0.046406 +E 6880.000000 70.000000 9.915418 173.652054 0.007545 0.046438 +E 6890.000000 70.000000 9.899430 173.570816 0.007549 0.046530 +E 6900.000000 70.000000 9.884955 173.615494 0.007558 0.046647 +E 6910.000000 70.000000 9.867867 173.714340 0.007556 0.046706 +E 6920.000000 70.000000 9.851445 173.717667 0.007549 0.046733 +E 6930.000000 70.000000 9.842437 173.678726 0.007543 0.046731 +E 6940.000000 70.000000 9.835801 173.842697 0.007534 0.046705 +E 6950.000000 70.000000 9.814747 173.839600 0.007546 0.046867 +E 6960.000000 70.000000 9.800947 173.668976 0.007548 0.046939 +E 6970.000000 70.000000 9.807914 173.715454 0.007534 0.046822 +E 6980.000000 70.000000 9.788121 173.727585 0.007526 0.046856 +E 6990.000000 70.000000 9.771259 173.744690 0.007532 0.046970 +E 7000.000000 70.000000 9.779154 173.776138 0.007543 0.047004 +E 7010.000000 70.000000 9.759831 173.799026 0.007555 0.047163 +E 7020.000000 70.000000 9.754523 173.845306 0.007559 0.047207 +E 7030.000000 70.000000 9.745038 173.830978 0.007558 0.047243 +E 7040.000000 70.000000 9.722622 173.781799 0.007572 0.047430 +E 7050.000000 70.000000 9.711342 173.755203 0.007585 0.047561 +E 7060.000000 70.000000 9.710948 173.855682 0.007588 0.047581 +E 7070.000000 70.000000 9.701822 173.865936 0.007560 0.047445 +E 7080.000000 70.000000 9.694470 173.780518 0.007565 0.047508 +E 7090.000000 70.000000 9.691283 173.845032 0.007583 0.047638 +E 7100.000000 70.000000 9.681171 173.885696 0.007600 0.047785 +E 7110.000000 70.000000 9.669317 173.828506 0.007602 0.047855 +E 7120.000000 70.000000 9.663428 173.793884 0.007604 0.047890 +E 7130.000000 70.000000 9.643742 173.828430 0.007607 0.047994 +E 7140.000000 70.000000 9.640675 173.799622 0.007598 0.047955 +E 7150.000000 70.000000 9.631563 173.814682 0.007592 0.047956 +E 7160.000000 70.000000 9.611721 173.779343 0.007600 0.048092 +E 7170.000000 70.000000 9.603939 173.852066 0.007625 0.048290 +E 7180.000000 70.000000 9.620442 173.986954 0.007623 0.048204 +E 7190.000000 70.000000 9.613693 173.897446 0.007625 0.048246 +E 7200.000000 70.000000 9.582446 173.921173 0.007639 0.048475 +E 7210.000000 70.000000 9.569226 173.999939 0.007655 0.048637 +E 7220.000000 70.000000 9.585300 173.949295 0.007655 0.048566 +E 7230.000000 70.000000 9.567454 173.985458 0.007673 0.048760 +E 7240.000000 70.000000 9.565096 174.004868 0.007670 0.048754 +E 7250.000000 70.000000 9.550028 173.933411 0.007639 0.048624 +E 7260.000000 70.000000 9.521615 173.925705 0.007610 0.048566 +E 7270.000000 70.000000 9.513081 173.940231 0.007629 0.048731 +E 7280.000000 70.000000 9.514208 173.954239 0.007636 0.048769 +E 7290.000000 70.000000 9.518766 173.974365 0.007627 0.048693 +E 7300.000000 70.000000 9.519683 173.952118 0.007635 0.048736 +E 7310.000000 70.000000 9.481967 173.987991 0.007631 0.048884 +E 7320.000000 70.000000 9.492261 173.985123 0.007641 0.048905 +E 7330.000000 70.000000 9.486000 173.950409 0.007673 0.049134 +E 7340.000000 70.000000 9.472294 173.946762 0.007667 0.049163 +E 7350.000000 70.000000 9.466720 174.037369 0.007625 0.048921 +E 7360.000000 70.000000 9.457794 174.025009 0.007630 0.048995 +E 7370.000000 70.000000 9.458140 173.985352 0.007666 0.049222 +E 7380.000000 70.000000 9.451670 173.994141 0.007719 0.049595 +E 7390.000000 70.000000 9.440516 174.064316 0.007748 0.049829 +E 7400.000000 70.000000 9.438191 174.046219 0.007717 0.049646 +E 7410.000000 70.000000 9.428780 174.087830 0.007747 0.049883 +E 7420.000000 70.000000 9.414704 174.083725 0.007805 0.050325 +E 7430.000000 70.000000 9.404902 174.113312 0.007830 0.050533 +E 7440.000000 70.000000 9.382589 174.120255 0.007837 0.050686 +E 7450.000000 70.000000 9.379965 174.132629 0.007845 0.050746 +E 7460.000000 70.000000 9.388845 174.107147 0.007851 0.050746 +E 7470.000000 70.000000 9.375950 174.094406 0.007821 0.050615 +E 7480.000000 70.000000 9.363350 174.080887 0.007818 0.050658 +E 7490.000000 70.000000 9.355113 174.144135 0.007853 0.050926 +E 7500.000000 70.000000 9.361959 174.153854 0.007854 0.050896 +E 7510.000000 70.000000 9.341738 174.149353 0.007853 0.050990 +E 7520.000000 70.000000 9.333494 174.095627 0.007911 0.051405 +E 7530.000000 70.000000 9.338209 174.080933 0.007937 0.051555 +E 7540.000000 70.000000 9.334275 174.142395 0.007893 0.051291 +E 7550.000000 70.000000 9.313696 174.216782 0.007912 0.051514 +E 7560.000000 70.000000 9.318128 174.284729 0.007923 0.051566 +E 7570.000000 70.000000 9.319859 174.220490 0.007915 0.051503 +E 7580.000000 70.000000 9.315630 174.140274 0.007903 0.051445 +E 7590.000000 70.000000 9.309307 174.212372 0.007899 0.051453 +E 7600.000000 70.000000 9.288897 174.206619 0.007962 0.051964 +E 7610.000000 70.000000 9.282671 174.265930 0.008024 0.052402 +E 7620.000000 70.000000 9.275507 174.235352 0.008069 0.052735 +E 7630.000000 70.000000 9.260244 174.149567 0.008050 0.052689 +E 7640.000000 70.000000 9.269856 174.157608 0.008036 0.052547 +E 7650.000000 70.000000 9.257846 174.228058 0.008067 0.052813 +E 7660.000000 70.000000 9.246433 174.235458 0.008122 0.053226 +E 7670.000000 70.000000 9.227341 174.358429 0.008192 0.053787 +E 7680.000000 70.000000 9.227748 174.302567 0.008180 0.053709 +E 7690.000000 70.000000 9.229633 174.262558 0.008095 0.053140 +E 7700.000000 70.000000 9.214854 174.278290 0.008064 0.053012 +E 7710.000000 70.000000 9.205322 174.234344 0.008125 0.053466 +E 7720.000000 70.000000 9.219481 174.289520 0.008214 0.053978 +E 7730.000000 70.000000 9.208651 174.351563 0.008278 0.054453 +E 7740.000000 70.000000 9.184813 174.284821 0.008297 0.054708 +E 7750.000000 70.000000 9.177646 174.259140 0.008335 0.054996 +E 7760.000000 70.000000 9.160827 174.313980 0.008383 0.055403 +E 7770.000000 70.000000 9.166468 174.361023 0.008410 0.055552 +E 7780.000000 70.000000 9.166428 174.266953 0.008402 0.055500 +E 7790.000000 70.000000 9.160894 174.427765 0.008353 0.055208 +E 7800.000000 70.000000 9.157903 174.301712 0.008342 0.055149 +E 7810.000000 70.000000 9.134407 174.226852 0.008411 0.055733 +E 7820.000000 70.000000 9.140054 174.362976 0.008448 0.055954 +E 7830.000000 70.000000 9.150946 174.413727 0.008458 0.055956 +E 7840.000000 70.000000 9.125465 174.317062 0.008505 0.056413 +E 7850.000000 70.000000 9.117087 174.279922 0.008569 0.056882 +E 7860.000000 70.000000 9.108488 174.381577 0.008609 0.057194 +E 7870.000000 70.000000 9.125469 174.330032 0.008602 0.057053 +E 7880.000000 70.000000 9.106487 174.335648 0.008588 0.057067 +E 7890.000000 70.000000 9.090854 174.347092 0.008615 0.057335 +E 7900.000000 70.000000 9.079696 174.458221 0.008658 0.057687 +E 7910.000000 70.000000 9.081581 174.472504 0.008664 0.057718 +E 7920.000000 70.000000 9.088305 174.384888 0.008684 0.057816 +E 7930.000000 70.000000 9.069597 174.463272 0.008705 0.058060 +E 7940.000000 70.000000 9.089453 174.464005 0.008681 0.057790 +E 7950.000000 70.000000 9.067080 174.508240 0.008690 0.057977 +E 7960.000000 70.000000 9.051100 174.423874 0.008742 0.058419 +E 7970.000000 70.000000 9.054414 174.494553 0.008791 0.058725 +E 7980.000000 70.000000 9.044289 174.405136 0.008820 0.058979 +E 7990.000000 70.000000 9.048944 174.376541 0.008839 0.059077 +E 8000.000000 70.000000 9.021362 174.418228 0.008834 0.059208 +E 8010.000000 70.000000 9.019710 174.414276 0.008823 0.059142 +E 8020.000000 70.000000 9.030197 174.388916 0.008885 0.059496 +E 8030.000000 70.000000 9.027197 174.392212 0.008939 0.059882 +E 8040.000000 70.000000 9.009150 174.446243 0.008941 0.059998 +E 8050.000000 70.000000 8.984633 174.459808 0.008928 0.060059 +E 8060.000000 70.000000 8.986261 174.415894 0.008958 0.060255 +E 8070.000000 70.000000 8.992615 174.375305 0.009043 0.060789 +E 8080.000000 70.000000 8.976461 174.352875 0.009080 0.061138 +E 8090.000000 70.000000 8.971928 174.483948 0.009021 0.060765 +E 8100.000000 70.000000 8.972869 174.480133 0.009036 0.060864 +E 8110.000000 70.000000 8.966395 174.470535 0.009085 0.061233 +E 8120.000000 70.000000 8.959633 174.596985 0.009145 0.061678 +E 8130.000000 70.000000 8.971983 174.628052 0.009137 0.061550 +E 8140.000000 70.000000 8.958868 174.599747 0.009089 0.061310 +E 8150.000000 70.000000 8.942255 174.606201 0.009123 0.061637 +E 8160.000000 70.000000 8.958334 174.523941 0.009188 0.061981 +E 8170.000000 70.000000 8.955948 174.514816 0.009229 0.062270 +E 8180.000000 70.000000 8.938348 174.560974 0.009209 0.062247 +E 8190.000000 70.000000 8.939431 174.610413 0.009202 0.062192 +E 8200.000000 70.000000 8.948799 174.641739 0.009245 0.062429 +E 8210.000000 70.000000 8.944346 174.649521 0.009282 0.062705 +E 8220.000000 70.000000 8.910946 174.636475 0.009315 0.063142 +E 8230.000000 70.000000 8.914278 174.437347 0.009282 0.062893 +E 8240.000000 70.000000 8.905667 174.594177 0.009276 0.062913 +E 8250.000000 70.000000 8.893200 174.635208 0.009350 0.063492 +E 8260.000000 70.000000 8.890527 174.555466 0.009405 0.063887 +E 8270.000000 70.000000 8.889400 174.434204 0.009380 0.063722 +E 8280.000000 70.000000 8.885114 174.541473 0.009339 0.063470 +E 8290.000000 70.000000 8.878053 174.571487 0.009350 0.063594 +E 8300.000000 70.000000 8.896312 174.743134 0.009438 0.064074 +E 8310.000000 70.000000 8.896188 174.758728 0.009492 0.064439 +E 8320.000000 70.000000 8.850922 174.587646 0.009474 0.064612 +E 8330.000000 70.000000 8.825754 174.669357 0.009428 0.064466 +E 8340.000000 70.000000 8.850741 174.731064 0.009409 0.064172 +E 8350.000000 70.000000 8.856588 174.554749 0.009452 0.064433 +E 8360.000000 70.000000 8.842800 174.489624 0.009531 0.065060 +E 8370.000000 70.000000 8.839125 174.544144 0.009511 0.064949 +E 8380.000000 70.000000 8.820309 174.659988 0.009496 0.064973 +E 8390.000000 70.000000 8.822253 174.760406 0.009523 0.065144 +E 8400.000000 70.000000 8.820306 174.708344 0.009602 0.065697 +E 8410.000000 70.000000 8.817249 174.726166 0.009638 0.065968 +E 8420.000000 70.000000 8.835634 174.698380 0.009619 0.065711 +E 8430.000000 70.000000 8.800640 174.652252 0.009595 0.065786 +E 8440.000000 70.000000 8.815183 174.678955 0.009597 0.065703 +E 8450.000000 70.000000 8.801238 174.678177 0.009648 0.066141 +E 8460.000000 70.000000 8.787373 174.836914 0.009677 0.066437 +E 8470.000000 70.000000 8.799990 174.777573 0.009654 0.066195 +E 8480.000000 70.000000 8.794261 174.753922 0.009617 0.065982 +E 8490.000000 70.000000 8.780627 174.663406 0.009695 0.066607 +E 8500.000000 70.000000 8.784750 174.669418 0.009866 0.067760 +E 8510.000000 70.000000 8.763975 174.586105 0.009920 0.068273 +E 8520.000000 70.000000 8.748459 174.696381 0.009714 0.066965 +E 8530.000000 70.000000 8.764171 174.869263 0.009494 0.065341 +E 8540.000000 70.000000 8.752581 174.833801 0.009470 0.065258 +E 8550.000000 70.000000 8.746904 174.708878 0.009609 0.066253 +E 8560.000000 70.000000 8.733954 174.660934 0.009713 0.067061 +E 8570.000000 70.000000 8.720658 174.605240 0.009737 0.067320 +E 8580.000000 70.000000 8.735291 174.792511 0.009698 0.066944 +E 8590.000000 70.000000 8.716925 174.710175 0.009674 0.066911 +E 8600.000000 70.000000 8.733969 174.689285 0.009708 0.067025 +E 8610.000000 70.000000 8.724585 174.890839 0.009797 0.067710 +E 8620.000000 70.000000 8.719799 174.816483 0.009837 0.068018 +E 8630.000000 70.000000 8.719354 174.805786 0.009834 0.068000 +E 8640.000000 70.000000 8.701517 174.922363 0.009771 0.067692 +E 8650.000000 70.000000 8.705914 174.856903 0.009739 0.067440 +E 8660.000000 70.000000 8.716096 174.762833 0.009788 0.067710 +E 8670.000000 70.000000 8.706722 174.881805 0.009861 0.068276 +E 8680.000000 70.000000 8.692905 174.813553 0.009870 0.068441 +E 8690.000000 70.000000 8.696210 174.860626 0.009854 0.068309 +E 8700.000000 70.000000 8.675367 174.866287 0.009836 0.068330 +E 8710.000000 70.000000 8.690472 174.910385 0.009858 0.068374 +E 8720.000000 70.000000 8.678859 174.782303 0.009908 0.068806 +E 8730.000000 70.000000 8.647379 174.943115 0.009913 0.069071 +E 8740.000000 70.000000 8.657319 174.847107 0.009873 0.068722 +E 8750.000000 70.000000 8.675156 174.824677 0.009841 0.068370 +E 8760.000000 70.000000 8.670392 174.928223 0.009851 0.068472 +E 8770.000000 70.000000 8.639541 174.787003 0.009912 0.069120 +E 8780.000000 70.000000 8.626282 174.790497 0.009960 0.069551 +E 8790.000000 70.000000 8.620787 174.833664 0.009947 0.069501 +E 8800.000000 70.000000 8.646818 174.813934 0.009937 0.069245 +E 8810.000000 70.000000 8.632964 174.817978 0.009973 0.069598 +E 8820.000000 70.000000 8.621170 175.019318 0.010014 0.069972 +E 8830.000000 70.000000 8.633305 174.994049 0.010051 0.070137 +E 8840.000000 70.000000 8.630743 174.895889 0.010061 0.070225 +E 8850.000000 70.000000 8.618359 175.023682 0.010081 0.070460 +E 8860.000000 70.000000 8.622253 174.903503 0.010060 0.070281 +E 8870.000000 70.000000 8.606414 174.921280 0.010030 0.070190 +E 8880.000000 70.000000 8.595314 174.936859 0.010034 0.070302 +E 8890.000000 70.000000 8.598085 174.983963 0.010079 0.070597 +E 8900.000000 70.000000 8.600169 174.924988 0.010118 0.070858 +E 8910.000000 70.000000 8.591242 174.851532 0.010143 0.071100 +E 8920.000000 70.000000 8.583925 174.981171 0.010140 0.071133 +E 8930.000000 70.000000 8.573763 175.009506 0.010138 0.071194 +E 8940.000000 70.000000 8.555571 174.868820 0.010148 0.071406 +E 8950.000000 70.000000 8.558867 175.066116 0.010183 0.071629 +E 8960.000000 70.000000 8.581882 174.857391 0.010210 0.071639 +E 8970.000000 70.000000 8.561497 174.897034 0.010235 0.071973 +E 8980.000000 70.000000 8.559835 174.913132 0.010255 0.072126 +E 8990.000000 70.000000 8.552236 174.743958 0.010240 0.072080 +E 9000.000000 70.000000 8.550808 174.872910 0.010280 0.072374 +E 9010.000000 70.000000 8.554516 174.972046 0.010310 0.072555 +E 9020.000000 70.000000 8.569343 175.113739 0.010312 0.072453 +E 9030.000000 70.000000 8.549447 175.006912 0.010361 0.072953 +E 9040.000000 70.000000 8.538127 175.084564 0.010371 0.073114 +E 9050.000000 70.000000 8.546661 175.149612 0.010352 0.072912 +E 9060.000000 70.000000 8.537910 174.898056 0.010384 0.073210 +E 9070.000000 70.000000 8.536934 174.930206 0.010427 0.073518 +E 9080.000000 70.000000 8.528360 175.151489 0.010484 0.073992 +E 9090.000000 70.000000 8.528864 174.964355 0.010529 0.074301 +E 9100.000000 70.000000 8.496531 174.854111 0.010541 0.074643 +E 9110.000000 70.000000 8.508589 174.931702 0.010509 0.074321 +E 9120.000000 70.000000 8.508849 175.047348 0.010528 0.074459 +E 9130.000000 70.000000 8.507488 175.007339 0.010577 0.074811 +E 9140.000000 70.000000 8.498118 175.060181 0.010659 0.075471 +E 9150.000000 70.000000 8.504669 175.019135 0.010657 0.075407 +E 9160.000000 70.000000 8.480077 175.054489 0.010622 0.075357 +E 9170.000000 70.000000 8.488358 175.130203 0.010606 0.075178 +E 9180.000000 70.000000 8.487889 175.113403 0.010616 0.075249 +E 9190.000000 70.000000 8.476492 175.066528 0.010674 0.075753 +E 9200.000000 70.000000 8.478591 174.922928 0.010762 0.076364 +E 9210.000000 70.000000 8.472970 175.120880 0.010810 0.076749 +E 9220.000000 70.000000 8.468168 175.132172 0.010861 0.077148 +E 9230.000000 70.000000 8.458891 175.140686 0.010887 0.077416 +E 9240.000000 70.000000 8.458486 175.132370 0.010901 0.077514 +E 9250.000000 70.000000 8.454440 174.966049 0.010924 0.077717 +E 9260.000000 70.000000 8.454695 175.120880 0.010968 0.078025 +E 9270.000000 70.000000 8.466520 175.274689 0.011022 0.078312 +E 9280.000000 70.000000 8.460687 175.196533 0.011080 0.078773 +E 9290.000000 70.000000 8.452767 174.932114 0.011116 0.079099 +E 9300.000000 70.000000 8.446152 174.997421 0.011136 0.079298 +E 9310.000000 70.000000 8.446439 175.049088 0.011154 0.079421 +E 9320.000000 70.000000 8.421367 175.228378 0.011168 0.079736 +E 9330.000000 70.000000 8.395915 175.138718 0.011210 0.080261 +E 9340.000000 70.000000 8.406946 175.194504 0.011258 0.080504 +E 9350.000000 70.000000 8.436943 175.221130 0.011319 0.080683 +E 9360.000000 70.000000 8.448875 175.163834 0.011385 0.081048 +E 9370.000000 70.000000 8.440248 175.347046 0.011417 0.081349 +E 9380.000000 70.000000 8.408854 175.177216 0.011431 0.081729 +E 9390.000000 70.000000 8.403489 175.083237 0.011457 0.081960 +E 9400.000000 70.000000 8.408162 175.171173 0.011548 0.082570 +E 9410.000000 70.000000 8.424427 175.292877 0.011611 0.082881 +E 9420.000000 70.000000 8.414208 175.338913 0.011671 0.083398 +E 9430.000000 70.000000 8.401778 175.036697 0.011735 0.083971 +E 9440.000000 70.000000 8.386297 175.165298 0.011744 0.084178 +E 9450.000000 70.000000 8.380025 175.090759 0.011782 0.084503 +E 9460.000000 70.000000 8.396639 175.237518 0.011840 0.084768 +E 9470.000000 70.000000 8.389497 175.245880 0.011909 0.085330 +E 9480.000000 70.000000 8.396621 175.333664 0.011969 0.085692 +E 9490.000000 70.000000 8.382241 175.256424 0.012039 0.086330 +E 9500.000000 70.000000 8.362041 175.209213 0.012105 0.086992 +E 9510.000000 70.000000 8.383402 175.067734 0.012151 0.087125 +E 9520.000000 70.000000 8.388864 175.043549 0.012188 0.087336 +E 9530.000000 70.000000 8.371493 175.175491 0.012252 0.087963 +E 9540.000000 70.000000 8.340021 175.187088 0.012359 0.089033 +E 9550.000000 70.000000 8.337351 175.201065 0.012446 0.089694 +E 9560.000000 70.000000 8.350050 175.216461 0.012475 0.089776 +E 9570.000000 70.000000 8.361102 175.414444 0.012496 0.089820 +E 9580.000000 70.000000 8.363356 175.371506 0.012526 0.090015 +E 9590.000000 70.000000 8.357409 175.204819 0.012582 0.090472 +E 9600.000000 70.000000 8.345102 175.299271 0.012646 0.091058 +E 9610.000000 70.000000 8.318431 175.428223 0.012694 0.091670 +E 9620.000000 70.000000 8.309038 175.299362 0.012772 0.092333 +E 9630.000000 70.000000 8.321168 175.249100 0.012833 0.092651 +E 9640.000000 70.000000 8.336560 175.282150 0.012887 0.092885 +E 9650.000000 70.000000 8.326828 175.316025 0.012954 0.093466 +E 9660.000000 70.000000 8.315522 175.465591 0.013008 0.093974 +E 9670.000000 70.000000 8.301159 175.563019 0.013099 0.094781 +E 9680.000000 70.000000 8.325414 175.332718 0.013195 0.095217 +E 9690.000000 70.000000 8.325931 175.237335 0.013269 0.095751 +E 9700.000000 70.000000 8.309796 175.099472 0.013308 0.096198 +E 9710.000000 70.000000 8.339731 175.405060 0.013389 0.096469 +E 9720.000000 70.000000 8.282105 175.512756 0.013487 0.097791 +E 9730.000000 70.000000 8.272711 175.393860 0.013586 0.098613 +E 9740.000000 70.000000 8.271445 175.380753 0.013671 0.099248 +E 9750.000000 70.000000 8.296926 175.294891 0.013710 0.099246 +E 9760.000000 70.000000 8.332147 175.336060 0.013790 0.099445 +E 9770.000000 70.000000 8.286115 175.326889 0.013888 0.100660 +E 9780.000000 70.000000 8.277268 175.494949 0.013963 0.101300 +E 9790.000000 70.000000 8.276253 175.254120 0.014057 0.101994 +E 9800.000000 70.000000 8.255424 175.159622 0.014168 0.103038 +E 9810.000000 70.000000 8.281021 175.241699 0.014278 0.103545 +E 9820.000000 70.000000 8.257392 175.382538 0.014402 0.104717 +E 9830.000000 70.000000 8.267316 175.262878 0.014455 0.104990 +E 9840.000000 70.000000 8.238717 175.118729 0.014557 0.106066 +E 9850.000000 70.000000 8.258997 175.342987 0.014659 0.106574 +E 9860.000000 70.000000 8.247291 175.211380 0.014750 0.107375 +E 9870.000000 70.000000 8.250484 175.184814 0.014898 0.108409 +E 9880.000000 70.000000 8.265643 175.353760 0.015018 0.109101 +E 9890.000000 70.000000 8.252702 175.560379 0.015109 0.109920 +E 9900.000000 70.000000 8.256435 175.729752 0.015192 0.110484 +E 9910.000000 70.000000 8.245546 175.558929 0.015307 0.111454 +E 9920.000000 70.000000 8.235231 175.491898 0.015464 0.112723 +E 9930.000000 70.000000 8.251116 175.414871 0.015630 0.113738 +E 9940.000000 70.000000 8.219556 175.596420 0.015775 0.115197 +E 9950.000000 70.000000 8.234161 175.489883 0.015879 0.115764 +E 9960.000000 70.000000 8.210146 175.370544 0.016033 0.117198 +E 9970.000000 70.000000 8.193875 175.396194 0.016151 0.118280 +E 9980.000000 70.000000 8.194836 175.378006 0.016342 0.119662 +E 9990.000000 70.000000 8.212622 175.541595 0.016519 0.120720 +E 10000.000000 70.000000 8.224506 175.505066 0.016685 0.121774 +E 10025.000000 70.000000 8.190679 175.534195 0.008064 0.059091 +E 10050.000000 70.000000 8.184579 175.487549 0.007874 0.057739 +E 10075.000000 70.000000 8.169347 175.522202 0.007645 0.056150 +E 10100.000000 70.000000 8.172769 175.523972 0.007465 0.054810 +E 10125.000000 70.000000 8.182145 175.506378 0.007308 0.053598 +E 10150.000000 70.000000 8.168519 175.433441 0.007121 0.052310 +E 10175.000000 70.000000 8.160705 175.446899 0.006952 0.051115 +E 10200.000000 70.000000 8.158606 175.546753 0.006800 0.050006 +E 10225.000000 70.000000 8.144069 175.528503 0.006631 0.048847 +E 10250.000000 70.000000 8.131223 175.524414 0.006478 0.047789 +E 10275.000000 70.000000 8.125073 175.587662 0.006355 0.046912 +E 10300.000000 70.000000 8.119646 175.573975 0.006197 0.045772 +E 10325.000000 70.000000 8.114458 175.537277 0.006032 0.044584 +E 10350.000000 70.000000 8.107176 175.580444 0.005902 0.043660 +E 10375.000000 70.000000 8.100228 175.584854 0.005778 0.042776 +E 10400.000000 70.000000 8.093657 175.553207 0.005660 0.041934 +E 10425.000000 70.000000 8.086782 175.564911 0.005549 0.041137 +E 10450.000000 70.000000 8.080079 175.578323 0.005440 0.040361 +E 10475.000000 70.000000 8.073559 175.586639 0.005332 0.039595 +E 10500.000000 70.000000 8.071528 175.600754 0.005233 0.038867 +E 10525.000000 70.000000 8.069858 175.616943 0.005139 0.038177 +E 10550.000000 70.000000 8.059555 175.634354 0.005051 0.037564 +E 10575.000000 70.000000 8.049754 175.673370 0.004972 0.037022 +E 10600.000000 70.000000 8.040311 175.730011 0.004902 0.036536 +E 10625.000000 70.000000 8.035843 175.681274 0.004805 0.035833 +E 10650.000000 70.000000 8.030298 175.669708 0.004720 0.035222 +E 10675.000000 70.000000 8.022291 175.729874 0.004654 0.034762 +E 10700.000000 70.000000 8.019765 175.735107 0.004570 0.034143 +E 10725.000000 70.000000 8.017097 175.728210 0.004489 0.033548 +E 10750.000000 70.000000 8.006824 175.736603 0.004436 0.033193 +E 10775.000000 70.000000 7.997991 175.730072 0.004357 0.032636 +E 10800.000000 70.000000 7.990237 175.714401 0.004264 0.031963 +E 10825.000000 70.000000 7.987331 175.731110 0.004200 0.031496 +E 10850.000000 70.000000 7.984536 175.728073 0.004132 0.030999 +E 10875.000000 70.000000 7.981798 175.699738 0.004059 0.030460 +E 10900.000000 70.000000 7.981146 175.736130 0.004003 0.030042 +E 10925.000000 70.000000 7.978756 175.779877 0.003947 0.029626 +E 10950.000000 70.000000 7.970494 175.812225 0.003878 0.029138 +E 10975.000000 70.000000 7.957333 175.834183 0.003824 0.028779 +E 11000.000000 70.000000 7.943127 175.848785 0.003779 0.028481 +E 11025.000000 70.000000 7.939655 175.839844 0.003736 0.028174 +E 11050.000000 70.000000 7.933967 175.815979 0.003700 0.027916 +E 11075.000000 70.000000 7.926233 175.778305 0.003668 0.027702 +E 11100.000000 70.000000 7.924328 175.767487 0.003613 0.027295 +E 11125.000000 70.000000 7.920842 175.778168 0.003571 0.026982 +E 11150.000000 70.000000 7.913671 175.824203 0.003550 0.026850 +E 11175.000000 70.000000 7.912203 175.836578 0.003521 0.026636 +E 11200.000000 70.000000 7.911076 175.838226 0.003493 0.026427 +E 11225.000000 70.000000 7.904621 175.836258 0.003476 0.026320 +E 11250.000000 70.000000 7.900852 175.859985 0.003452 0.026146 +E 11275.000000 70.000000 7.898427 175.899017 0.003424 0.025942 +E 11300.000000 70.000000 7.888583 175.935562 0.003420 0.025938 +E 11325.000000 70.000000 7.880345 175.957703 0.003406 0.025860 +E 11350.000000 70.000000 7.873960 175.963379 0.003382 0.025700 +E 11375.000000 70.000000 7.871910 175.896622 0.003370 0.025612 +E 11400.000000 70.000000 7.869700 175.870316 0.003358 0.025523 +E 11425.000000 70.000000 7.865981 175.948929 0.003341 0.025410 +E 11450.000000 70.000000 7.860325 175.943329 0.003325 0.025299 +E 11475.000000 70.000000 7.855378 175.920532 0.003306 0.025173 +E 11500.000000 70.000000 7.857015 175.953506 0.003280 0.024971 +E 11525.000000 70.000000 7.850841 175.968109 0.003258 0.024818 +E 11550.000000 70.000000 7.839879 175.969925 0.003238 0.024697 +E 11575.000000 70.000000 7.840657 175.944992 0.003224 0.024586 +E 11600.000000 70.000000 7.839085 175.938370 0.003200 0.024411 +E 11625.000000 70.000000 7.834796 175.952881 0.003166 0.024161 +E 11650.000000 70.000000 7.826550 175.967606 0.003146 0.024038 +E 11675.000000 70.000000 7.820414 175.984756 0.003126 0.023900 +E 11700.000000 70.000000 7.819611 176.007156 0.003100 0.023699 +E 11725.000000 70.000000 7.814298 176.046616 0.003082 0.023581 +E 11750.000000 70.000000 7.807539 176.084625 0.003065 0.023466 +E 11775.000000 70.000000 7.800848 176.093231 0.003034 0.023248 +E 11800.000000 70.000000 7.797514 176.088745 0.003006 0.023045 +E 11825.000000 70.000000 7.796220 176.074249 0.002981 0.022851 +E 11850.000000 70.000000 7.795309 176.021408 0.002955 0.022656 +E 11875.000000 70.000000 7.790823 176.011734 0.002931 0.022486 +E 11900.000000 70.000000 7.782712 176.045914 0.002910 0.022341 +E 11925.000000 70.000000 7.774875 176.044586 0.002883 0.022158 +E 11950.000000 70.000000 7.770673 176.061829 0.002859 0.021987 +E 11975.000000 70.000000 7.772564 176.115753 0.002841 0.021841 +E 12000.000000 70.000000 7.768823 176.114288 0.002822 0.021706 +E 12025.000000 70.000000 7.763596 176.105713 0.002803 0.021572 +E 12050.000000 70.000000 7.758069 176.117203 0.002784 0.021435 +E 12075.000000 70.000000 7.754148 176.114685 0.002770 0.021341 +E 12100.000000 70.000000 7.751001 176.109772 0.002758 0.021259 +E 12125.000000 70.000000 7.748141 176.134827 0.002740 0.021124 +E 12150.000000 70.000000 7.746853 176.140488 0.002723 0.020995 +E 12175.000000 70.000000 7.746752 176.131348 0.002707 0.020870 +E 12200.000000 70.000000 7.737659 176.154709 0.002701 0.020850 +E 12225.000000 70.000000 7.731359 176.159393 0.002693 0.020805 +E 12250.000000 70.000000 7.728441 176.141037 0.002683 0.020729 +E 12275.000000 70.000000 7.722176 176.119446 0.002679 0.020718 +E 12300.000000 70.000000 7.717067 176.119141 0.002679 0.020728 +E 12325.000000 70.000000 7.715099 176.162216 0.002683 0.020761 +E 12350.000000 70.000000 7.714838 176.171265 0.002675 0.020706 +E 12375.000000 70.000000 7.712655 176.181992 0.002671 0.020677 +E 12400.000000 70.000000 7.702073 176.232468 0.002687 0.020824 +E 12425.000000 70.000000 7.699123 176.236954 0.002680 0.020783 +E 12450.000000 70.000000 7.698757 176.218033 0.002667 0.020679 +E 12475.000000 70.000000 7.689717 176.193024 0.002677 0.020781 +E 12500.000000 70.000000 7.685834 176.209747 0.002669 0.020723 +E 12525.000000 70.000000 7.685857 176.257202 0.002646 0.020548 +E 12550.000000 70.000000 7.682617 176.267395 0.002638 0.020494 +E 12575.000000 70.000000 7.681589 176.272003 0.002628 0.020414 +E 12600.000000 70.000000 7.683123 176.270309 0.002614 0.020306 +E 12625.000000 70.000000 7.672031 176.254196 0.002608 0.020282 +E 12650.000000 70.000000 7.664077 176.243637 0.002598 0.020228 +E 12675.000000 70.000000 7.663437 176.244873 0.002583 0.020107 +E 12700.000000 70.000000 7.664115 176.262314 0.002565 0.019968 +E 12725.000000 70.000000 7.663427 176.274277 0.002552 0.019871 +E 12750.000000 70.000000 7.658377 176.262756 0.002553 0.019889 +E 12775.000000 70.000000 7.654431 176.272430 0.002539 0.019785 +E 12800.000000 70.000000 7.650038 176.286697 0.002520 0.019651 +E 12825.000000 70.000000 7.641693 176.286774 0.002509 0.019584 +E 12850.000000 70.000000 7.636244 176.276779 0.002497 0.019506 +E 12875.000000 70.000000 7.632925 176.266891 0.002486 0.019421 +E 12900.000000 70.000000 7.634320 176.312042 0.002476 0.019347 +E 12925.000000 70.000000 7.631661 176.336029 0.002464 0.019251 +E 12950.000000 70.000000 7.625803 176.342743 0.002448 0.019140 +E 12975.000000 70.000000 7.623119 176.320633 0.002441 0.019092 +E 13000.000000 70.000000 7.621535 176.325134 0.002432 0.019029 +E 13025.000000 70.000000 7.621192 176.359543 0.002422 0.018950 +E 13050.000000 70.000000 7.617200 176.361801 0.002409 0.018860 +E 13075.000000 70.000000 7.613778 176.351791 0.002399 0.018787 +E 13100.000000 70.000000 7.611639 176.326416 0.002393 0.018742 +E 13125.000000 70.000000 7.610495 176.330688 0.002386 0.018694 +E 13150.000000 70.000000 7.608545 176.341568 0.002379 0.018644 +E 13175.000000 70.000000 7.604410 176.355515 0.002371 0.018588 +E 13200.000000 70.000000 7.605469 176.355850 0.002365 0.018535 +E 13225.000000 70.000000 7.604286 176.357025 0.002361 0.018507 +E 13250.000000 70.000000 7.591013 176.373703 0.002364 0.018557 +E 13275.000000 70.000000 7.587031 176.403366 0.002362 0.018551 +E 13300.000000 70.000000 7.586469 176.431168 0.002359 0.018531 +E 13325.000000 70.000000 7.583136 176.421921 0.002362 0.018562 +E 13350.000000 70.000000 7.581042 176.427261 0.002366 0.018595 +E 13375.000000 70.000000 7.579059 176.439438 0.002369 0.018628 +E 13400.000000 70.000000 7.571485 176.435959 0.002370 0.018654 +E 13425.000000 70.000000 7.570040 176.448456 0.002376 0.018699 +E 13450.000000 70.000000 7.572906 176.472046 0.002385 0.018761 +E 13475.000000 70.000000 7.564561 176.460526 0.002399 0.018891 +E 13500.000000 70.000000 7.562156 176.458862 0.002414 0.019019 +E 13525.000000 70.000000 7.565754 176.467178 0.002431 0.019146 +E 13550.000000 70.000000 7.558186 176.450485 0.002463 0.019412 +E 13575.000000 70.000000 7.554492 176.449326 0.002497 0.019686 +E 13600.000000 70.000000 7.556288 176.469498 0.002532 0.019962 +E 13625.000000 70.000000 7.550681 176.481018 0.002552 0.020135 +E 13650.000000 70.000000 7.546614 176.494598 0.002573 0.020310 +E 13675.000000 70.000000 7.546169 176.512817 0.002598 0.020505 +E 13700.000000 70.000000 7.543208 176.526382 0.002658 0.020984 +E 13725.000000 70.000000 7.540652 176.524902 0.002760 0.021797 +E 13750.000000 70.000000 7.539940 176.490616 0.002947 0.023275 +E 13775.000000 70.000000 7.534299 176.504501 0.003212 0.025382 +E 13800.000000 70.000000 7.529454 176.535294 0.003490 0.027596 +E 13825.000000 70.000000 7.532458 176.569000 0.003657 0.028904 +E 13850.000000 70.000000 7.527297 176.557526 0.003627 0.028687 +E 13875.000000 70.000000 7.524582 176.549332 0.003520 0.027855 +E 13900.000000 70.000000 7.536506 176.592941 0.003373 0.026645 +E 13925.000000 70.000000 7.529437 176.608292 0.003280 0.025935 +E 13950.000000 70.000000 7.517886 176.610550 0.003192 0.025276 +E 13975.000000 70.000000 7.515663 176.602295 0.003045 0.024113 +E 14000.000000 70.000000 7.511015 176.582764 0.002955 0.023416 +E 14025.000000 70.000000 7.507217 176.562317 0.002890 0.022910 +E 14050.000000 70.000000 7.513268 176.562836 0.002819 0.022329 +E 14075.000000 70.000000 7.508609 176.583038 0.002769 0.021951 +E 14100.000000 70.000000 7.500174 176.610352 0.002730 0.021664 +E 14125.000000 70.000000 7.506389 176.611588 0.002679 0.021237 +E 14150.000000 70.000000 7.505394 176.619125 0.002644 0.020967 +E 14175.000000 70.000000 7.500313 176.627182 0.002620 0.020789 +E 14200.000000 70.000000 7.500991 176.596207 0.002593 0.020568 +E 14225.000000 70.000000 7.495366 176.625153 0.002576 0.020447 +E 14250.000000 70.000000 7.485721 176.692307 0.002566 0.020392 +E 14275.000000 70.000000 7.488999 176.636917 0.002549 0.020249 +E 14300.000000 70.000000 7.486016 176.631378 0.002538 0.020166 +E 14325.000000 70.000000 7.478040 176.666504 0.002531 0.020131 +E 14350.000000 70.000000 7.481941 176.646149 0.002524 0.020064 +E 14375.000000 70.000000 7.479649 176.644485 0.002515 0.020005 +E 14400.000000 70.000000 7.471559 176.660431 0.002507 0.019954 +E 14425.000000 70.000000 7.470483 176.682785 0.002509 0.019972 +E 14450.000000 70.000000 7.468678 176.684006 0.002504 0.019939 +E 14475.000000 70.000000 7.466112 176.663254 0.002492 0.019851 +E 14500.000000 70.000000 7.466144 176.726318 0.002490 0.019834 +E 14525.000000 70.000000 7.464204 176.733261 0.002492 0.019850 +E 14550.000000 70.000000 7.459921 176.674973 0.002497 0.019903 +E 14575.000000 70.000000 7.462031 176.658798 0.002487 0.019820 +E 14600.000000 70.000000 7.461195 176.662643 0.002486 0.019814 +E 14625.000000 70.000000 7.456511 176.688614 0.002497 0.019907 +E 14650.000000 70.000000 7.457918 176.668533 0.002490 0.019847 +E 14675.000000 70.000000 7.455740 176.673508 0.002491 0.019863 +E 14700.000000 70.000000 7.448565 176.713913 0.002504 0.019985 +E 14725.000000 70.000000 7.447608 176.740784 0.002497 0.019927 +E 14750.000000 70.000000 7.444593 176.758545 0.002496 0.019930 +E 14775.000000 70.000000 7.438248 176.765793 0.002506 0.020029 +E 14800.000000 70.000000 7.441097 176.774445 0.002505 0.020010 +E 14825.000000 70.000000 7.442250 176.765610 0.002504 0.019999 +E 14850.000000 70.000000 7.440130 176.732758 0.002505 0.020012 +E 14875.000000 70.000000 7.434871 176.730759 0.002509 0.020056 +E 14900.000000 70.000000 7.431441 176.734314 0.002516 0.020117 +E 14925.000000 70.000000 7.430923 176.741989 0.002526 0.020198 +E 14950.000000 70.000000 7.426220 176.755280 0.002525 0.020200 +E 14975.000000 70.000000 7.421728 176.766785 0.002530 0.020256 +E 15000.000000 70.000000 7.417948 176.775284 0.002547 0.020399 +E 15025.000000 70.000000 7.422662 176.796173 0.002543 0.020353 +E 15050.000000 70.000000 7.422897 176.802719 0.002545 0.020372 +E 15075.000000 70.000000 7.415967 176.788086 0.002560 0.020506 +E 15100.000000 70.000000 7.415520 176.778702 0.002559 0.020497 +E 15125.000000 70.000000 7.412258 176.784027 0.002559 0.020511 +E 15150.000000 70.000000 7.404537 176.808609 0.002565 0.020573 +E 15175.000000 70.000000 7.405032 176.782928 0.002570 0.020613 +E 15200.000000 70.000000 7.403090 176.781952 0.002578 0.020680 +E 15225.000000 70.000000 7.397163 176.818069 0.002589 0.020784 +E 15250.000000 70.000000 7.400163 176.813980 0.002594 0.020815 +E 15275.000000 70.000000 7.400557 176.815262 0.002602 0.020883 +E 15300.000000 70.000000 7.396998 176.826309 0.002616 0.021001 +E 15325.000000 70.000000 7.397190 176.793655 0.002618 0.021017 +E 15350.000000 70.000000 7.396678 176.791031 0.002624 0.021067 +E 15375.000000 70.000000 7.395159 176.825745 0.002635 0.021160 +E 15400.000000 70.000000 7.393733 176.860641 0.002641 0.021209 +E 15425.000000 70.000000 7.391715 176.856491 0.002653 0.021307 +E 15450.000000 70.000000 7.389040 176.809631 0.002671 0.021461 +E 15475.000000 70.000000 7.388014 176.867157 0.002677 0.021514 +E 15500.000000 70.000000 7.384254 176.899918 0.002687 0.021598 +E 15525.000000 70.000000 7.377914 176.907028 0.002699 0.021713 +E 15550.000000 70.000000 7.382770 176.879959 0.002697 0.021685 +E 15575.000000 70.000000 7.380264 176.873276 0.002706 0.021761 +E 15600.000000 70.000000 7.371546 176.883621 0.002723 0.021925 +E 15625.000000 70.000000 7.371965 176.865768 0.002729 0.021974 +E 15650.000000 70.000000 7.371367 176.870026 0.002741 0.022067 +E 15675.000000 70.000000 7.370029 176.891083 0.002756 0.022189 +E 15700.000000 70.000000 7.369778 176.898315 0.002761 0.022229 +E 15725.000000 70.000000 7.366600 176.910629 0.002771 0.022321 +E 15750.000000 70.000000 7.362186 176.923096 0.002785 0.022447 +E 15775.000000 70.000000 7.364956 176.905228 0.002798 0.022539 +E 15800.000000 70.000000 7.360466 176.924530 0.002809 0.022643 +E 15825.000000 70.000000 7.353909 176.957230 0.002821 0.022756 +E 15850.000000 70.000000 7.362233 176.930679 0.002839 0.022882 +E 15875.000000 70.000000 7.361823 176.945328 0.002851 0.022974 +E 15900.000000 70.000000 7.357434 176.973526 0.002860 0.023062 +E 15925.000000 70.000000 7.355625 176.964783 0.002878 0.023210 +E 15950.000000 70.000000 7.354343 176.925491 0.002895 0.023352 +E 15975.000000 70.000000 7.354206 176.897400 0.002912 0.023487 +E 16000.000000 70.000000 7.357422 176.956970 0.002928 0.023607 +E 16025.000000 70.000000 7.348132 176.943604 0.002940 0.023734 +E 16050.000000 70.000000 7.339770 176.924194 0.002954 0.023874 +E 16075.000000 70.000000 7.346188 176.959137 0.002977 0.024038 +E 16100.000000 70.000000 7.345031 176.967087 0.002995 0.024185 +E 16125.000000 70.000000 7.341625 176.976135 0.003011 0.024325 +E 16150.000000 70.000000 7.337707 177.003525 0.003026 0.024458 +E 16175.000000 70.000000 7.328842 177.039093 0.003050 0.024676 +E 16200.000000 70.000000 7.326591 177.059418 0.003074 0.024876 +E 16225.000000 70.000000 7.337694 177.049805 0.003095 0.025013 +E 16250.000000 70.000000 7.333883 177.014725 0.003115 0.025183 +E 16275.000000 70.000000 7.329737 177.004547 0.003138 0.025382 +E 16300.000000 70.000000 7.327592 177.033600 0.003166 0.025617 +E 16325.000000 70.000000 7.324088 177.003830 0.003190 0.025824 +E 16350.000000 70.000000 7.324510 176.986649 0.003219 0.026057 +E 16375.000000 70.000000 7.329310 176.987350 0.003254 0.026322 +E 16400.000000 70.000000 7.322974 177.029602 0.003276 0.026521 +E 16425.000000 70.000000 7.321688 177.032928 0.003316 0.026851 +E 16450.000000 70.000000 7.324388 177.003906 0.003370 0.027282 +E 16475.000000 70.000000 7.320839 177.000153 0.003391 0.027462 +E 16500.000000 70.000000 7.322691 177.021255 0.003440 0.027846 +E 16525.000000 70.000000 7.327149 177.051437 0.003506 0.028368 +E 16550.000000 70.000000 7.324503 177.029541 0.003565 0.028855 +E 16575.000000 70.000000 7.319481 177.068283 0.003656 0.029610 +E 16600.000000 70.000000 7.313515 177.109726 0.003768 0.030541 +E 16625.000000 70.000000 7.309005 177.031097 0.003893 0.031567 +E 16650.000000 70.000000 7.318780 177.027328 0.004110 0.033287 +E 16675.000000 70.000000 7.327247 177.066498 0.004395 0.035560 +E 16700.000000 70.000000 7.313661 177.148056 0.004745 0.038451 +E 16725.000000 70.000000 7.303569 177.106842 0.005271 0.042769 +E 16750.000000 70.000000 7.299397 177.051437 0.005950 0.048303 +E 16775.000000 70.000000 7.308707 177.050476 0.006786 0.055027 +E 16800.000000 70.000000 7.301926 177.036774 0.007911 0.064206 +E 16825.000000 70.000000 7.291903 176.975784 0.009287 0.075467 +E 16850.000000 70.000000 7.281566 176.831619 0.010842 0.088219 +E 16875.000000 70.000000 7.298783 177.085953 0.012665 0.102825 +E 16900.000000 70.000000 7.305838 177.267471 0.014837 0.120344 +E 16925.000000 70.000000 7.297638 177.291687 0.017333 0.140733 +E 16950.000000 70.000000 7.332868 177.041245 0.020080 0.162308 +E 16975.000000 70.000000 7.297152 176.912338 0.023077 0.187383 +E 17000.000000 70.000000 7.212368 176.874298 0.026374 0.216504 +uR 1930.000000 50.000000 inf 1.000000 +uR 1940.000000 50.000000 inf 1.000000 +uR 1950.000000 50.000000 inf 1.000000 +uR 1960.000000 50.000000 inf 1.000000 +uR 1970.000000 50.000000 inf 1.000000 +uR 1980.000000 50.000000 inf 1.000000 +uR 1990.000000 50.000000 inf 1.000000 +uR 2000.000000 50.000000 inf 1.000000 +uR 2010.000000 50.000000 inf 1.000000 +uR 2020.000000 50.000000 inf 1.000000 +uR 2030.000000 50.000000 inf 1.000000 +uR 2040.000000 50.000000 inf 1.000000 +uR 2050.000000 50.000000 inf 1.000000 +uR 2060.000000 50.000000 inf 1.000000 +uR 2070.000000 50.000000 inf 1.000000 +uR 2080.000000 50.000000 inf 1.000000 +uR 2090.000000 50.000000 inf 1.000000 +uR 2100.000000 50.000000 inf 1.000000 +uR 2110.000000 50.000000 inf 1.000000 +uR 2120.000000 50.000000 inf 1.000000 +uR 2130.000000 50.000000 inf 1.000000 +uR 2140.000000 50.000000 inf 1.000000 +uR 2150.000000 50.000000 inf 1.000000 +uR 2160.000000 50.000000 inf 1.000000 +uR 2170.000000 50.000000 inf 1.000000 +uR 2180.000000 50.000000 inf 1.000000 +uR 2190.000000 50.000000 inf 1.000000 +uR 2200.000000 50.000000 inf 1.000000 +uR 2210.000000 50.000000 inf 1.000000 +uR 2220.000000 50.000000 inf 1.000000 +uR 2230.000000 50.000000 inf 1.000000 +uR 2240.000000 50.000000 inf 1.000000 +uR 2250.000000 50.000000 inf 1.000000 +uR 2260.000000 50.000000 inf 1.000000 +uR 2270.000000 50.000000 inf 1.000000 +uR 2280.000000 50.000000 inf 1.000000 +uR 2290.000000 50.000000 inf 1.000000 +uR 2300.000000 50.000000 inf 1.000000 +uR 2310.000000 50.000000 inf 1.000000 +uR 2320.000000 50.000000 inf 1.000000 +uR 2330.000000 50.000000 inf 1.000000 +uR 2340.000000 50.000000 inf 1.000000 +uR 2350.000000 50.000000 inf 1.000000 +uR 2360.000000 50.000000 inf 1.000000 +uR 2370.000000 50.000000 inf 1.000000 +uR 2380.000000 50.000000 inf 1.000000 +uR 2390.000000 50.000000 inf 1.000000 +uR 2400.000000 50.000000 inf 1.000000 +uR 2410.000000 50.000000 inf 1.000000 +uR 2420.000000 50.000000 inf 1.000000 +uR 2430.000000 50.000000 inf 1.000000 +uR 2440.000000 50.000000 inf 1.000000 +uR 2450.000000 50.000000 inf 1.000000 +uR 2460.000000 50.000000 inf 1.000000 +uR 2470.000000 50.000000 inf 1.000000 +uR 2480.000000 50.000000 inf 1.000000 +uR 2490.000000 50.000000 inf 1.000000 +uR 2500.000000 50.000000 inf 1.000000 +uR 2510.000000 50.000000 inf 1.000000 +uR 2520.000000 50.000000 inf 1.000000 +uR 2530.000000 50.000000 inf 1.000000 +uR 2540.000000 50.000000 inf 1.000000 +uR 2550.000000 50.000000 inf 1.000000 +uR 2560.000000 50.000000 inf 1.000000 +uR 2570.000000 50.000000 inf 1.000000 +uR 2580.000000 50.000000 inf 1.000000 +uR 2590.000000 50.000000 inf 1.000000 +uR 2600.000000 50.000000 inf 1.000000 +uR 2610.000000 50.000000 inf 1.000000 +uR 2620.000000 50.000000 inf 1.000000 +uR 2630.000000 50.000000 inf 1.000000 +uR 2640.000000 50.000000 inf 1.000000 +uR 2650.000000 50.000000 inf 1.000000 +uR 2660.000000 50.000000 inf 1.000000 +uR 2670.000000 50.000000 inf 1.000000 +uR 2680.000000 50.000000 inf 1.000000 +uR 2690.000000 50.000000 inf 1.000000 +uR 2700.000000 50.000000 inf 1.000000 +uR 2710.000000 50.000000 inf 1.000000 +uR 2720.000000 50.000000 inf 1.000000 +uR 2730.000000 50.000000 inf 1.000000 +uR 2740.000000 50.000000 inf 1.000000 +uR 2750.000000 50.000000 inf 1.000000 +uR 2760.000000 50.000000 inf 1.000000 +uR 2770.000000 50.000000 inf 1.000000 +uR 2780.000000 50.000000 inf 1.000000 +uR 2790.000000 50.000000 inf 1.000000 +uR 2800.000000 50.000000 inf 1.000000 +uR 2810.000000 50.000000 inf 1.000000 +uR 2820.000000 50.000000 inf 1.000000 +uR 2830.000000 50.000000 inf 1.000000 +uR 2840.000000 50.000000 inf 1.000000 +uR 2850.000000 50.000000 inf 1.000000 +uR 2860.000000 50.000000 inf 1.000000 +uR 2870.000000 50.000000 inf 1.000000 +uR 2880.000000 50.000000 inf 1.000000 +uR 2890.000000 50.000000 inf 1.000000 +uR 2900.000000 50.000000 inf 1.000000 +uR 2910.000000 50.000000 inf 1.000000 +uR 2920.000000 50.000000 inf 1.000000 +uR 2930.000000 50.000000 inf 1.000000 +uR 2940.000000 50.000000 inf 1.000000 +uR 2950.000000 50.000000 inf 1.000000 +uR 2960.000000 50.000000 inf 1.000000 +uR 2970.000000 50.000000 inf 1.000000 +uR 2980.000000 50.000000 inf 1.000000 +uR 2990.000000 50.000000 inf 1.000000 +uR 3000.000000 50.000000 inf 1.000000 +uR 3010.000000 50.000000 inf 1.000000 +uR 3020.000000 50.000000 inf 1.000000 +uR 3030.000000 50.000000 inf 1.000000 +uR 3040.000000 50.000000 inf 1.000000 +uR 3050.000000 50.000000 inf 1.000000 +uR 3060.000000 50.000000 inf 1.000000 +uR 3070.000000 50.000000 inf 1.000000 +uR 3080.000000 50.000000 inf 1.000000 +uR 3090.000000 50.000000 inf 1.000000 +uR 3100.000000 50.000000 inf 1.000000 +uR 3110.000000 50.000000 inf 1.000000 +uR 3120.000000 50.000000 inf 1.000000 +uR 3130.000000 50.000000 inf 1.000000 +uR 3140.000000 50.000000 inf 1.000000 +uR 3150.000000 50.000000 inf 1.000000 +uR 3160.000000 50.000000 inf 1.000000 +uR 3170.000000 50.000000 inf 1.000000 +uR 3180.000000 50.000000 inf 1.000000 +uR 3190.000000 50.000000 inf 1.000000 +uR 3200.000000 50.000000 inf 1.000000 +uR 3210.000000 50.000000 inf 1.000000 +uR 3220.000000 50.000000 inf 1.000000 +uR 3230.000000 50.000000 inf 1.000000 +uR 3240.000000 50.000000 inf 1.000000 +uR 3250.000000 50.000000 inf 1.000000 +uR 3260.000000 50.000000 inf 1.000000 +uR 3270.000000 50.000000 inf 1.000000 +uR 3280.000000 50.000000 inf 1.000000 +uR 3290.000000 50.000000 inf 1.000000 +uR 3300.000000 50.000000 inf 1.000000 +uR 3310.000000 50.000000 inf 1.000000 +uR 3320.000000 50.000000 inf 1.000000 +uR 3330.000000 50.000000 inf 1.000000 +uR 3340.000000 50.000000 inf 1.000000 +uR 3350.000000 50.000000 inf 1.000000 +uR 3360.000000 50.000000 inf 1.000000 +uR 3370.000000 50.000000 inf 1.000000 +uR 3380.000000 50.000000 inf 1.000000 +uR 3390.000000 50.000000 inf 1.000000 +uR 3400.000000 50.000000 inf 1.000000 +uR 3410.000000 50.000000 inf 1.000000 +uR 3420.000000 50.000000 inf 1.000000 +uR 3430.000000 50.000000 inf 1.000000 +uR 3440.000000 50.000000 inf 1.000000 +uR 3450.000000 50.000000 inf 1.000000 +uR 3460.000000 50.000000 inf 1.000000 +uR 3470.000000 50.000000 inf 1.000000 +uR 3480.000000 50.000000 inf 1.000000 +uR 3490.000000 50.000000 inf 1.000000 +uR 3500.000000 50.000000 inf 1.000000 +uR 3510.000000 50.000000 inf 1.000000 +uR 3520.000000 50.000000 inf 1.000000 +uR 3530.000000 50.000000 inf 1.000000 +uR 3540.000000 50.000000 inf 1.000000 +uR 3550.000000 50.000000 inf 1.000000 +uR 3560.000000 50.000000 inf 1.000000 +uR 3570.000000 50.000000 inf 1.000000 +uR 3580.000000 50.000000 inf 1.000000 +uR 3590.000000 50.000000 inf 1.000000 +uR 3600.000000 50.000000 inf 1.000000 +uR 3610.000000 50.000000 inf 1.000000 +uR 3620.000000 50.000000 inf 1.000000 +uR 3630.000000 50.000000 inf 1.000000 +uR 3640.000000 50.000000 inf 1.000000 +uR 3650.000000 50.000000 inf 1.000000 +uR 3660.000000 50.000000 inf 1.000000 +uR 3670.000000 50.000000 inf 1.000000 +uR 3680.000000 50.000000 inf 1.000000 +uR 3690.000000 50.000000 inf 1.000000 +uR 3700.000000 50.000000 inf 1.000000 +uR 3710.000000 50.000000 inf 1.000000 +uR 3720.000000 50.000000 inf 1.000000 +uR 3730.000000 50.000000 inf 1.000000 +uR 3740.000000 50.000000 inf 1.000000 +uR 3750.000000 50.000000 inf 1.000000 +uR 3760.000000 50.000000 inf 1.000000 +uR 3770.000000 50.000000 inf 1.000000 +uR 3780.000000 50.000000 inf 1.000000 +uR 3790.000000 50.000000 inf 1.000000 +uR 3800.000000 50.000000 inf 1.000000 +uR 3810.000000 50.000000 inf 1.000000 +uR 3820.000000 50.000000 inf 1.000000 +uR 3830.000000 50.000000 inf 1.000000 +uR 3840.000000 50.000000 inf 1.000000 +uR 3850.000000 50.000000 inf 1.000000 +uR 3860.000000 50.000000 inf 1.000000 +uR 3870.000000 50.000000 inf 1.000000 +uR 3880.000000 50.000000 inf 1.000000 +uR 3890.000000 50.000000 inf 1.000000 +uR 3900.000000 50.000000 inf 1.000000 +uR 3910.000000 50.000000 inf 1.000000 +uR 3920.000000 50.000000 inf 1.000000 +uR 3930.000000 50.000000 inf 1.000000 +uR 3940.000000 50.000000 inf 1.000000 +uR 3950.000000 50.000000 inf 1.000000 +uR 3960.000000 50.000000 inf 1.000000 +uR 3970.000000 50.000000 inf 1.000000 +uR 3980.000000 50.000000 inf 1.000000 +uR 3990.000000 50.000000 inf 1.000000 +uR 4000.000000 50.000000 inf 1.000000 +uR 4010.000000 50.000000 inf 1.000000 +uR 4020.000000 50.000000 inf 1.000000 +uR 4030.000000 50.000000 inf 1.000000 +uR 4040.000000 50.000000 inf 1.000000 +uR 4050.000000 50.000000 inf 1.000000 +uR 4060.000000 50.000000 inf 1.000000 +uR 4070.000000 50.000000 inf 1.000000 +uR 4080.000000 50.000000 inf 1.000000 +uR 4090.000000 50.000000 inf 1.000000 +uR 4100.000000 50.000000 inf 1.000000 +uR 4110.000000 50.000000 inf 1.000000 +uR 4120.000000 50.000000 inf 1.000000 +uR 4130.000000 50.000000 inf 1.000000 +uR 4140.000000 50.000000 inf 1.000000 +uR 4150.000000 50.000000 inf 1.000000 +uR 4160.000000 50.000000 inf 1.000000 +uR 4170.000000 50.000000 inf 1.000000 +uR 4180.000000 50.000000 inf 1.000000 +uR 4190.000000 50.000000 inf 1.000000 +uR 4200.000000 50.000000 inf 1.000000 +uR 4210.000000 50.000000 inf 1.000000 +uR 4220.000000 50.000000 inf 1.000000 +uR 4230.000000 50.000000 inf 1.000000 +uR 4240.000000 50.000000 inf 1.000000 +uR 4250.000000 50.000000 inf 1.000000 +uR 4260.000000 50.000000 inf 1.000000 +uR 4270.000000 50.000000 inf 1.000000 +uR 4280.000000 50.000000 inf 1.000000 +uR 4290.000000 50.000000 inf 1.000000 +uR 4300.000000 50.000000 inf 1.000000 +uR 4310.000000 50.000000 inf 1.000000 +uR 4320.000000 50.000000 inf 1.000000 +uR 4330.000000 50.000000 inf 1.000000 +uR 4340.000000 50.000000 inf 1.000000 +uR 4350.000000 50.000000 inf 1.000000 +uR 4360.000000 50.000000 inf 1.000000 +uR 4370.000000 50.000000 inf 1.000000 +uR 4380.000000 50.000000 inf 1.000000 +uR 4390.000000 50.000000 inf 1.000000 +uR 4400.000000 50.000000 inf 1.000000 +uR 4410.000000 50.000000 inf 1.000000 +uR 4420.000000 50.000000 inf 1.000000 +uR 4430.000000 50.000000 inf 1.000000 +uR 4440.000000 50.000000 inf 1.000000 +uR 4450.000000 50.000000 inf 1.000000 +uR 4460.000000 50.000000 inf 1.000000 +uR 4470.000000 50.000000 inf 1.000000 +uR 4480.000000 50.000000 inf 1.000000 +uR 4490.000000 50.000000 inf 1.000000 +uR 4500.000000 50.000000 inf 1.000000 +uR 4510.000000 50.000000 inf 1.000000 +uR 4520.000000 50.000000 inf 1.000000 +uR 4530.000000 50.000000 inf 1.000000 +uR 4540.000000 50.000000 inf 1.000000 +uR 4550.000000 50.000000 inf 1.000000 +uR 4560.000000 50.000000 inf 1.000000 +uR 4570.000000 50.000000 inf 1.000000 +uR 4580.000000 50.000000 inf 1.000000 +uR 4590.000000 50.000000 inf 1.000000 +uR 4600.000000 50.000000 inf 1.000000 +uR 4610.000000 50.000000 inf 1.000000 +uR 4620.000000 50.000000 inf 1.000000 +uR 4630.000000 50.000000 inf 1.000000 +uR 4640.000000 50.000000 inf 1.000000 +uR 4650.000000 50.000000 inf 1.000000 +uR 4660.000000 50.000000 inf 1.000000 +uR 4670.000000 50.000000 inf 1.000000 +uR 4680.000000 50.000000 inf 1.000000 +uR 4690.000000 50.000000 inf 1.000000 +uR 4700.000000 50.000000 inf 1.000000 +uR 4710.000000 50.000000 inf 1.000000 +uR 4720.000000 50.000000 inf 1.000000 +uR 4730.000000 50.000000 inf 1.000000 +uR 4740.000000 50.000000 inf 1.000000 +uR 4750.000000 50.000000 inf 1.000000 +uR 4760.000000 50.000000 inf 1.000000 +uR 4770.000000 50.000000 inf 1.000000 +uR 4780.000000 50.000000 inf 1.000000 +uR 4790.000000 50.000000 inf 1.000000 +uR 4800.000000 50.000000 inf 1.000000 +uR 4810.000000 50.000000 inf 1.000000 +uR 4820.000000 50.000000 inf 1.000000 +uR 4830.000000 50.000000 inf 1.000000 +uR 4840.000000 50.000000 inf 1.000000 +uR 4850.000000 50.000000 inf 1.000000 +uR 4860.000000 50.000000 inf 1.000000 +uR 4870.000000 50.000000 inf 1.000000 +uR 4880.000000 50.000000 inf 1.000000 +uR 4890.000000 50.000000 inf 1.000000 +uR 4900.000000 50.000000 inf 1.000000 +uR 4910.000000 50.000000 inf 1.000000 +uR 4920.000000 50.000000 inf 1.000000 +uR 4930.000000 50.000000 inf 1.000000 +uR 4940.000000 50.000000 inf 1.000000 +uR 4950.000000 50.000000 inf 1.000000 +uR 4960.000000 50.000000 inf 1.000000 +uR 4970.000000 50.000000 inf 1.000000 +uR 4980.000000 50.000000 inf 1.000000 +uR 4990.000000 50.000000 inf 1.000000 +uR 5000.000000 50.000000 inf 1.000000 +uR 5010.000000 50.000000 inf 1.000000 +uR 5020.000000 50.000000 inf 1.000000 +uR 5030.000000 50.000000 inf 1.000000 +uR 5040.000000 50.000000 inf 1.000000 +uR 5050.000000 50.000000 inf 1.000000 +uR 5060.000000 50.000000 inf 1.000000 +uR 5070.000000 50.000000 inf 1.000000 +uR 5080.000000 50.000000 inf 1.000000 +uR 5090.000000 50.000000 inf 1.000000 +uR 5100.000000 50.000000 inf 1.000000 +uR 5110.000000 50.000000 inf 1.000000 +uR 5120.000000 50.000000 inf 1.000000 +uR 5130.000000 50.000000 inf 1.000000 +uR 5140.000000 50.000000 inf 1.000000 +uR 5150.000000 50.000000 inf 1.000000 +uR 5160.000000 50.000000 inf 1.000000 +uR 5170.000000 50.000000 inf 1.000000 +uR 5180.000000 50.000000 inf 1.000000 +uR 5190.000000 50.000000 inf 1.000000 +uR 5200.000000 50.000000 inf 1.000000 +uR 5210.000000 50.000000 inf 1.000000 +uR 5220.000000 50.000000 inf 1.000000 +uR 5230.000000 50.000000 inf 1.000000 +uR 5240.000000 50.000000 inf 1.000000 +uR 5250.000000 50.000000 inf 1.000000 +uR 5260.000000 50.000000 inf 1.000000 +uR 5270.000000 50.000000 inf 1.000000 +uR 5280.000000 50.000000 inf 1.000000 +uR 5290.000000 50.000000 inf 1.000000 +uR 5300.000000 50.000000 inf 1.000000 +uR 5310.000000 50.000000 inf 1.000000 +uR 5320.000000 50.000000 inf 1.000000 +uR 5330.000000 50.000000 inf 1.000000 +uR 5340.000000 50.000000 inf 1.000000 +uR 5350.000000 50.000000 inf 1.000000 +uR 5360.000000 50.000000 inf 1.000000 +uR 5370.000000 50.000000 inf 1.000000 +uR 5380.000000 50.000000 inf 1.000000 +uR 5390.000000 50.000000 inf 1.000000 +uR 5400.000000 50.000000 inf 1.000000 +uR 5410.000000 50.000000 inf 1.000000 +uR 5420.000000 50.000000 inf 1.000000 +uR 5430.000000 50.000000 inf 1.000000 +uR 5440.000000 50.000000 inf 1.000000 +uR 5450.000000 50.000000 inf 1.000000 +uR 5460.000000 50.000000 inf 1.000000 +uR 5470.000000 50.000000 inf 1.000000 +uR 5480.000000 50.000000 inf 1.000000 +uR 5490.000000 50.000000 inf 1.000000 +uR 5500.000000 50.000000 inf 1.000000 +uR 5510.000000 50.000000 inf 1.000000 +uR 5520.000000 50.000000 inf 1.000000 +uR 5530.000000 50.000000 inf 1.000000 +uR 5540.000000 50.000000 inf 1.000000 +uR 5550.000000 50.000000 inf 1.000000 +uR 5560.000000 50.000000 inf 1.000000 +uR 5570.000000 50.000000 inf 1.000000 +uR 5580.000000 50.000000 inf 1.000000 +uR 5590.000000 50.000000 inf 1.000000 +uR 5600.000000 50.000000 inf 1.000000 +uR 5610.000000 50.000000 inf 1.000000 +uR 5620.000000 50.000000 inf 1.000000 +uR 5630.000000 50.000000 inf 1.000000 +uR 5640.000000 50.000000 inf 1.000000 +uR 5650.000000 50.000000 inf 1.000000 +uR 5660.000000 50.000000 inf 1.000000 +uR 5670.000000 50.000000 inf 1.000000 +uR 5680.000000 50.000000 inf 1.000000 +uR 5690.000000 50.000000 inf 1.000000 +uR 5700.000000 50.000000 inf 1.000000 +uR 5710.000000 50.000000 inf 1.000000 +uR 5720.000000 50.000000 inf 1.000000 +uR 5730.000000 50.000000 inf 1.000000 +uR 5740.000000 50.000000 inf 1.000000 +uR 5750.000000 50.000000 inf 1.000000 +uR 5760.000000 50.000000 inf 1.000000 +uR 5770.000000 50.000000 inf 1.000000 +uR 5780.000000 50.000000 inf 1.000000 +uR 5790.000000 50.000000 inf 1.000000 +uR 5800.000000 50.000000 inf 1.000000 +uR 5810.000000 50.000000 inf 1.000000 +uR 5820.000000 50.000000 inf 1.000000 +uR 5830.000000 50.000000 inf 1.000000 +uR 5840.000000 50.000000 inf 1.000000 +uR 5850.000000 50.000000 inf 1.000000 +uR 5860.000000 50.000000 inf 1.000000 +uR 5870.000000 50.000000 inf 1.000000 +uR 5880.000000 50.000000 inf 1.000000 +uR 5890.000000 50.000000 inf 1.000000 +uR 5900.000000 50.000000 inf 1.000000 +uR 5910.000000 50.000000 inf 1.000000 +uR 5920.000000 50.000000 inf 1.000000 +uR 5930.000000 50.000000 inf 1.000000 +uR 5940.000000 50.000000 inf 1.000000 +uR 5950.000000 50.000000 inf 1.000000 +uR 5960.000000 50.000000 inf 1.000000 +uR 5970.000000 50.000000 inf 1.000000 +uR 5980.000000 50.000000 inf 1.000000 +uR 5990.000000 50.000000 inf 1.000000 +uR 6000.000000 50.000000 inf 1.000000 +uR 6010.000000 50.000000 inf 1.000000 +uR 6020.000000 50.000000 inf 1.000000 +uR 6030.000000 50.000000 inf 1.000000 +uR 6040.000000 50.000000 inf 1.000000 +uR 6050.000000 50.000000 inf 1.000000 +uR 6060.000000 50.000000 inf 1.000000 +uR 6070.000000 50.000000 inf 1.000000 +uR 6080.000000 50.000000 inf 1.000000 +uR 6090.000000 50.000000 inf 1.000000 +uR 6100.000000 50.000000 inf 1.000000 +uR 6110.000000 50.000000 inf 1.000000 +uR 6120.000000 50.000000 inf 1.000000 +uR 6130.000000 50.000000 inf 1.000000 +uR 6140.000000 50.000000 inf 1.000000 +uR 6150.000000 50.000000 inf 1.000000 +uR 6160.000000 50.000000 inf 1.000000 +uR 6170.000000 50.000000 inf 1.000000 +uR 6180.000000 50.000000 inf 1.000000 +uR 6190.000000 50.000000 inf 1.000000 +uR 6200.000000 50.000000 inf 1.000000 +uR 6210.000000 50.000000 inf 1.000000 +uR 6220.000000 50.000000 inf 1.000000 +uR 6230.000000 50.000000 inf 1.000000 +uR 6240.000000 50.000000 inf 1.000000 +uR 6250.000000 50.000000 inf 1.000000 +uR 6260.000000 50.000000 inf 1.000000 +uR 6270.000000 50.000000 inf 1.000000 +uR 6280.000000 50.000000 inf 1.000000 +uR 6290.000000 50.000000 inf 1.000000 +uR 6300.000000 50.000000 inf 1.000000 +uR 6310.000000 50.000000 inf 1.000000 +uR 6320.000000 50.000000 inf 1.000000 +uR 6330.000000 50.000000 inf 1.000000 +uR 6340.000000 50.000000 inf 1.000000 +uR 6350.000000 50.000000 inf 1.000000 +uR 6360.000000 50.000000 inf 1.000000 +uR 6370.000000 50.000000 inf 1.000000 +uR 6380.000000 50.000000 inf 1.000000 +uR 6390.000000 50.000000 inf 1.000000 +uR 6400.000000 50.000000 inf 1.000000 +uR 6410.000000 50.000000 inf 1.000000 +uR 6420.000000 50.000000 inf 1.000000 +uR 6430.000000 50.000000 inf 1.000000 +uR 6440.000000 50.000000 inf 1.000000 +uR 6450.000000 50.000000 inf 1.000000 +uR 6460.000000 50.000000 inf 1.000000 +uR 6470.000000 50.000000 inf 1.000000 +uR 6480.000000 50.000000 inf 1.000000 +uR 6490.000000 50.000000 inf 1.000000 +uR 6500.000000 50.000000 inf 1.000000 +uR 6510.000000 50.000000 inf 1.000000 +uR 6520.000000 50.000000 inf 1.000000 +uR 6530.000000 50.000000 inf 1.000000 +uR 6540.000000 50.000000 inf 1.000000 +uR 6550.000000 50.000000 inf 1.000000 +uR 6560.000000 50.000000 inf 1.000000 +uR 6570.000000 50.000000 inf 1.000000 +uR 6580.000000 50.000000 inf 1.000000 +uR 6590.000000 50.000000 inf 1.000000 +uR 6600.000000 50.000000 inf 1.000000 +uR 6610.000000 50.000000 inf 1.000000 +uR 6620.000000 50.000000 inf 1.000000 +uR 6630.000000 50.000000 inf 1.000000 +uR 6640.000000 50.000000 inf 1.000000 +uR 6650.000000 50.000000 inf 1.000000 +uR 6660.000000 50.000000 inf 1.000000 +uR 6670.000000 50.000000 inf 1.000000 +uR 6680.000000 50.000000 inf 1.000000 +uR 6690.000000 50.000000 inf 1.000000 +uR 6700.000000 50.000000 inf 1.000000 +uR 6710.000000 50.000000 inf 1.000000 +uR 6720.000000 50.000000 inf 1.000000 +uR 6730.000000 50.000000 inf 1.000000 +uR 6740.000000 50.000000 inf 1.000000 +uR 6750.000000 50.000000 inf 1.000000 +uR 6760.000000 50.000000 inf 1.000000 +uR 6770.000000 50.000000 inf 1.000000 +uR 6780.000000 50.000000 inf 1.000000 +uR 6790.000000 50.000000 inf 1.000000 +uR 6800.000000 50.000000 inf 1.000000 +uR 6810.000000 50.000000 inf 1.000000 +uR 6820.000000 50.000000 inf 1.000000 +uR 6830.000000 50.000000 inf 1.000000 +uR 6840.000000 50.000000 inf 1.000000 +uR 6850.000000 50.000000 inf 1.000000 +uR 6860.000000 50.000000 inf 1.000000 +uR 6870.000000 50.000000 inf 1.000000 +uR 6880.000000 50.000000 inf 1.000000 +uR 6890.000000 50.000000 inf 1.000000 +uR 6900.000000 50.000000 inf 1.000000 +uR 6910.000000 50.000000 inf 1.000000 +uR 6920.000000 50.000000 inf 1.000000 +uR 6930.000000 50.000000 inf 1.000000 +uR 6940.000000 50.000000 inf 1.000000 +uR 6950.000000 50.000000 inf 1.000000 +uR 6960.000000 50.000000 inf 1.000000 +uR 6970.000000 50.000000 inf 1.000000 +uR 6980.000000 50.000000 inf 1.000000 +uR 6990.000000 50.000000 inf 1.000000 +uR 7000.000000 50.000000 inf 1.000000 +uR 7010.000000 50.000000 inf 1.000000 +uR 7020.000000 50.000000 inf 1.000000 +uR 7030.000000 50.000000 inf 1.000000 +uR 7040.000000 50.000000 inf 1.000000 +uR 7050.000000 50.000000 inf 1.000000 +uR 7060.000000 50.000000 inf 1.000000 +uR 7070.000000 50.000000 inf 1.000000 +uR 7080.000000 50.000000 inf 1.000000 +uR 7090.000000 50.000000 inf 1.000000 +uR 7100.000000 50.000000 inf 1.000000 +uR 7110.000000 50.000000 inf 1.000000 +uR 7120.000000 50.000000 inf 1.000000 +uR 7130.000000 50.000000 inf 1.000000 +uR 7140.000000 50.000000 inf 1.000000 +uR 7150.000000 50.000000 inf 1.000000 +uR 7160.000000 50.000000 inf 1.000000 +uR 7170.000000 50.000000 inf 1.000000 +uR 7180.000000 50.000000 inf 1.000000 +uR 7190.000000 50.000000 inf 1.000000 +uR 7200.000000 50.000000 inf 1.000000 +uR 7210.000000 50.000000 inf 1.000000 +uR 7220.000000 50.000000 inf 1.000000 +uR 7230.000000 50.000000 inf 1.000000 +uR 7240.000000 50.000000 inf 1.000000 +uR 7250.000000 50.000000 inf 1.000000 +uR 7260.000000 50.000000 inf 1.000000 +uR 7270.000000 50.000000 inf 1.000000 +uR 7280.000000 50.000000 inf 1.000000 +uR 7290.000000 50.000000 inf 1.000000 +uR 7300.000000 50.000000 inf 1.000000 +uR 7310.000000 50.000000 inf 1.000000 +uR 7320.000000 50.000000 inf 1.000000 +uR 7330.000000 50.000000 inf 1.000000 +uR 7340.000000 50.000000 inf 1.000000 +uR 7350.000000 50.000000 inf 1.000000 +uR 7360.000000 50.000000 inf 1.000000 +uR 7370.000000 50.000000 inf 1.000000 +uR 7380.000000 50.000000 inf 1.000000 +uR 7390.000000 50.000000 inf 1.000000 +uR 7400.000000 50.000000 inf 1.000000 +uR 7410.000000 50.000000 inf 1.000000 +uR 7420.000000 50.000000 inf 1.000000 +uR 7430.000000 50.000000 inf 1.000000 +uR 7440.000000 50.000000 inf 1.000000 +uR 7450.000000 50.000000 inf 1.000000 +uR 7460.000000 50.000000 inf 1.000000 +uR 7470.000000 50.000000 inf 1.000000 +uR 7480.000000 50.000000 inf 1.000000 +uR 7490.000000 50.000000 inf 1.000000 +uR 7500.000000 50.000000 inf 1.000000 +uR 7510.000000 50.000000 inf 1.000000 +uR 7520.000000 50.000000 inf 1.000000 +uR 7530.000000 50.000000 inf 1.000000 +uR 7540.000000 50.000000 inf 1.000000 +uR 7550.000000 50.000000 inf 1.000000 +uR 7560.000000 50.000000 inf 1.000000 +uR 7570.000000 50.000000 inf 1.000000 +uR 7580.000000 50.000000 inf 1.000000 +uR 7590.000000 50.000000 inf 1.000000 +uR 7600.000000 50.000000 inf 1.000000 +uR 7610.000000 50.000000 inf 1.000000 +uR 7620.000000 50.000000 inf 1.000000 +uR 7630.000000 50.000000 inf 1.000000 +uR 7640.000000 50.000000 inf 1.000000 +uR 7650.000000 50.000000 inf 1.000000 +uR 7660.000000 50.000000 inf 1.000000 +uR 7670.000000 50.000000 inf 1.000000 +uR 7680.000000 50.000000 inf 1.000000 +uR 7690.000000 50.000000 inf 1.000000 +uR 7700.000000 50.000000 inf 1.000000 +uR 7710.000000 50.000000 inf 1.000000 +uR 7720.000000 50.000000 inf 1.000000 +uR 7730.000000 50.000000 inf 1.000000 +uR 7740.000000 50.000000 inf 1.000000 +uR 7750.000000 50.000000 inf 1.000000 +uR 7760.000000 50.000000 inf 1.000000 +uR 7770.000000 50.000000 inf 1.000000 +uR 7780.000000 50.000000 inf 1.000000 +uR 7790.000000 50.000000 inf 1.000000 +uR 7800.000000 50.000000 inf 1.000000 +uR 7810.000000 50.000000 inf 1.000000 +uR 7820.000000 50.000000 inf 1.000000 +uR 7830.000000 50.000000 inf 1.000000 +uR 7840.000000 50.000000 inf 1.000000 +uR 7850.000000 50.000000 inf 1.000000 +uR 7860.000000 50.000000 inf 1.000000 +uR 7870.000000 50.000000 inf 1.000000 +uR 7880.000000 50.000000 inf 1.000000 +uR 7890.000000 50.000000 inf 1.000000 +uR 7900.000000 50.000000 inf 1.000000 +uR 7910.000000 50.000000 inf 1.000000 +uR 7920.000000 50.000000 inf 1.000000 +uR 7930.000000 50.000000 inf 1.000000 +uR 7940.000000 50.000000 inf 1.000000 +uR 7950.000000 50.000000 inf 1.000000 +uR 7960.000000 50.000000 inf 1.000000 +uR 7970.000000 50.000000 inf 1.000000 +uR 7980.000000 50.000000 inf 1.000000 +uR 7990.000000 50.000000 inf 1.000000 +uR 8000.000000 50.000000 inf 1.000000 +uR 8010.000000 50.000000 inf 1.000000 +uR 8020.000000 50.000000 inf 1.000000 +uR 8030.000000 50.000000 inf 1.000000 +uR 8040.000000 50.000000 inf 1.000000 +uR 8050.000000 50.000000 inf 1.000000 +uR 8060.000000 50.000000 inf 1.000000 +uR 8070.000000 50.000000 inf 1.000000 +uR 8080.000000 50.000000 inf 1.000000 +uR 8090.000000 50.000000 inf 1.000000 +uR 8100.000000 50.000000 inf 1.000000 +uR 8110.000000 50.000000 inf 1.000000 +uR 8120.000000 50.000000 inf 1.000000 +uR 8130.000000 50.000000 inf 1.000000 +uR 8140.000000 50.000000 inf 1.000000 +uR 8150.000000 50.000000 inf 1.000000 +uR 8160.000000 50.000000 inf 1.000000 +uR 8170.000000 50.000000 inf 1.000000 +uR 8180.000000 50.000000 inf 1.000000 +uR 8190.000000 50.000000 inf 1.000000 +uR 8200.000000 50.000000 inf 1.000000 +uR 8210.000000 50.000000 inf 1.000000 +uR 8220.000000 50.000000 inf 1.000000 +uR 8230.000000 50.000000 inf 1.000000 +uR 8240.000000 50.000000 inf 1.000000 +uR 8250.000000 50.000000 inf 1.000000 +uR 8260.000000 50.000000 inf 1.000000 +uR 8270.000000 50.000000 inf 1.000000 +uR 8280.000000 50.000000 inf 1.000000 +uR 8290.000000 50.000000 inf 1.000000 +uR 8300.000000 50.000000 inf 1.000000 +uR 8310.000000 50.000000 inf 1.000000 +uR 8320.000000 50.000000 inf 1.000000 +uR 8330.000000 50.000000 inf 1.000000 +uR 8340.000000 50.000000 inf 1.000000 +uR 8350.000000 50.000000 inf 1.000000 +uR 8360.000000 50.000000 inf 1.000000 +uR 8370.000000 50.000000 inf 1.000000 +uR 8380.000000 50.000000 inf 1.000000 +uR 8390.000000 50.000000 inf 1.000000 +uR 8400.000000 50.000000 inf 1.000000 +uR 8410.000000 50.000000 inf 1.000000 +uR 8420.000000 50.000000 inf 1.000000 +uR 8430.000000 50.000000 inf 1.000000 +uR 8440.000000 50.000000 inf 1.000000 +uR 8450.000000 50.000000 inf 1.000000 +uR 8460.000000 50.000000 inf 1.000000 +uR 8470.000000 50.000000 inf 1.000000 +uR 8480.000000 50.000000 inf 1.000000 +uR 8490.000000 50.000000 inf 1.000000 +uR 8500.000000 50.000000 inf 1.000000 +uR 8510.000000 50.000000 inf 1.000000 +uR 8520.000000 50.000000 inf 1.000000 +uR 8530.000000 50.000000 inf 1.000000 +uR 8540.000000 50.000000 inf 1.000000 +uR 8550.000000 50.000000 inf 1.000000 +uR 8560.000000 50.000000 inf 1.000000 +uR 8570.000000 50.000000 inf 1.000000 +uR 8580.000000 50.000000 inf 1.000000 +uR 8590.000000 50.000000 inf 1.000000 +uR 8600.000000 50.000000 inf 1.000000 +uR 8610.000000 50.000000 inf 1.000000 +uR 8620.000000 50.000000 inf 1.000000 +uR 8630.000000 50.000000 inf 1.000000 +uR 8640.000000 50.000000 inf 1.000000 +uR 8650.000000 50.000000 inf 1.000000 +uR 8660.000000 50.000000 inf 1.000000 +uR 8670.000000 50.000000 inf 1.000000 +uR 8680.000000 50.000000 inf 1.000000 +uR 8690.000000 50.000000 inf 1.000000 +uR 8700.000000 50.000000 inf 1.000000 +uR 8710.000000 50.000000 inf 1.000000 +uR 8720.000000 50.000000 inf 1.000000 +uR 8730.000000 50.000000 inf 1.000000 +uR 8740.000000 50.000000 inf 1.000000 +uR 8750.000000 50.000000 inf 1.000000 +uR 8760.000000 50.000000 inf 1.000000 +uR 8770.000000 50.000000 inf 1.000000 +uR 8780.000000 50.000000 inf 1.000000 +uR 8790.000000 50.000000 inf 1.000000 +uR 8800.000000 50.000000 inf 1.000000 +uR 8810.000000 50.000000 inf 1.000000 +uR 8820.000000 50.000000 inf 1.000000 +uR 8830.000000 50.000000 inf 1.000000 +uR 8840.000000 50.000000 inf 1.000000 +uR 8850.000000 50.000000 inf 1.000000 +uR 8860.000000 50.000000 inf 1.000000 +uR 8870.000000 50.000000 inf 1.000000 +uR 8880.000000 50.000000 inf 1.000000 +uR 8890.000000 50.000000 inf 1.000000 +uR 8900.000000 50.000000 inf 1.000000 +uR 8910.000000 50.000000 inf 1.000000 +uR 8920.000000 50.000000 inf 1.000000 +uR 8930.000000 50.000000 inf 1.000000 +uR 8940.000000 50.000000 inf 1.000000 +uR 8950.000000 50.000000 inf 1.000000 +uR 8960.000000 50.000000 inf 1.000000 +uR 8970.000000 50.000000 inf 1.000000 +uR 8980.000000 50.000000 inf 1.000000 +uR 8990.000000 50.000000 inf 1.000000 +uR 9000.000000 50.000000 inf 1.000000 +uR 9010.000000 50.000000 inf 1.000000 +uR 9020.000000 50.000000 inf 1.000000 +uR 9030.000000 50.000000 inf 1.000000 +uR 9040.000000 50.000000 inf 1.000000 +uR 9050.000000 50.000000 inf 1.000000 +uR 9060.000000 50.000000 inf 1.000000 +uR 9070.000000 50.000000 inf 1.000000 +uR 9080.000000 50.000000 inf 1.000000 +uR 9090.000000 50.000000 inf 1.000000 +uR 9100.000000 50.000000 inf 1.000000 +uR 9110.000000 50.000000 inf 1.000000 +uR 9120.000000 50.000000 inf 1.000000 +uR 9130.000000 50.000000 inf 1.000000 +uR 9140.000000 50.000000 inf 1.000000 +uR 9150.000000 50.000000 inf 1.000000 +uR 9160.000000 50.000000 inf 1.000000 +uR 9170.000000 50.000000 inf 1.000000 +uR 9180.000000 50.000000 inf 1.000000 +uR 9190.000000 50.000000 inf 1.000000 +uR 9200.000000 50.000000 inf 1.000000 +uR 9210.000000 50.000000 inf 1.000000 +uR 9220.000000 50.000000 inf 1.000000 +uR 9230.000000 50.000000 inf 1.000000 +uR 9240.000000 50.000000 inf 1.000000 +uR 9250.000000 50.000000 inf 1.000000 +uR 9260.000000 50.000000 inf 1.000000 +uR 9270.000000 50.000000 inf 1.000000 +uR 9280.000000 50.000000 inf 1.000000 +uR 9290.000000 50.000000 inf 1.000000 +uR 9300.000000 50.000000 inf 1.000000 +uR 9310.000000 50.000000 inf 1.000000 +uR 9320.000000 50.000000 inf 1.000000 +uR 9330.000000 50.000000 inf 1.000000 +uR 9340.000000 50.000000 inf 1.000000 +uR 9350.000000 50.000000 inf 1.000000 +uR 9360.000000 50.000000 inf 1.000000 +uR 9370.000000 50.000000 inf 1.000000 +uR 9380.000000 50.000000 inf 1.000000 +uR 9390.000000 50.000000 inf 1.000000 +uR 9400.000000 50.000000 inf 1.000000 +uR 9410.000000 50.000000 inf 1.000000 +uR 9420.000000 50.000000 inf 1.000000 +uR 9430.000000 50.000000 inf 1.000000 +uR 9440.000000 50.000000 inf 1.000000 +uR 9450.000000 50.000000 inf 1.000000 +uR 9460.000000 50.000000 inf 1.000000 +uR 9470.000000 50.000000 inf 1.000000 +uR 9480.000000 50.000000 inf 1.000000 +uR 9490.000000 50.000000 inf 1.000000 +uR 9500.000000 50.000000 inf 1.000000 +uR 9510.000000 50.000000 inf 1.000000 +uR 9520.000000 50.000000 inf 1.000000 +uR 9530.000000 50.000000 inf 1.000000 +uR 9540.000000 50.000000 inf 1.000000 +uR 9550.000000 50.000000 inf 1.000000 +uR 9560.000000 50.000000 inf 1.000000 +uR 9570.000000 50.000000 inf 1.000000 +uR 9580.000000 50.000000 inf 1.000000 +uR 9590.000000 50.000000 inf 1.000000 +uR 9600.000000 50.000000 inf 1.000000 +uR 9610.000000 50.000000 inf 1.000000 +uR 9620.000000 50.000000 inf 1.000000 +uR 9630.000000 50.000000 inf 1.000000 +uR 9640.000000 50.000000 inf 1.000000 +uR 9650.000000 50.000000 inf 1.000000 +uR 9660.000000 50.000000 inf 1.000000 +uR 9670.000000 50.000000 inf 1.000000 +uR 9680.000000 50.000000 inf 1.000000 +uR 9690.000000 50.000000 inf 1.000000 +uR 9700.000000 50.000000 inf 1.000000 +uR 9710.000000 50.000000 inf 1.000000 +uR 9720.000000 50.000000 inf 1.000000 +uR 9730.000000 50.000000 inf 1.000000 +uR 9740.000000 50.000000 inf 1.000000 +uR 9750.000000 50.000000 inf 1.000000 +uR 9760.000000 50.000000 inf 1.000000 +uR 9770.000000 50.000000 inf 1.000000 +uR 9780.000000 50.000000 inf 1.000000 +uR 9790.000000 50.000000 inf 1.000000 +uR 9800.000000 50.000000 inf 1.000000 +uR 9810.000000 50.000000 inf 1.000000 +uR 9820.000000 50.000000 inf 1.000000 +uR 9830.000000 50.000000 inf 1.000000 +uR 9840.000000 50.000000 inf 1.000000 +uR 9850.000000 50.000000 inf 1.000000 +uR 9860.000000 50.000000 inf 1.000000 +uR 9870.000000 50.000000 inf 1.000000 +uR 9880.000000 50.000000 inf 1.000000 +uR 9890.000000 50.000000 inf 1.000000 +uR 9900.000000 50.000000 inf 1.000000 +uR 9910.000000 50.000000 inf 1.000000 +uR 9920.000000 50.000000 inf 1.000000 +uR 9930.000000 50.000000 inf 1.000000 +uR 9940.000000 50.000000 inf 1.000000 +uR 9950.000000 50.000000 inf 1.000000 +uR 9960.000000 50.000000 inf 1.000000 +uR 9970.000000 50.000000 inf 1.000000 +uR 9980.000000 50.000000 inf 1.000000 +uR 9990.000000 50.000000 inf 1.000000 +uR 10000.000000 50.000000 inf 1.000000 +uR 10025.000000 50.000000 inf 1.000000 +uR 10050.000000 50.000000 inf 1.000000 +uR 10075.000000 50.000000 inf 1.000000 +uR 10100.000000 50.000000 inf 1.000000 +uR 10125.000000 50.000000 inf 1.000000 +uR 10150.000000 50.000000 inf 1.000000 +uR 10175.000000 50.000000 inf 1.000000 +uR 10200.000000 50.000000 inf 1.000000 +uR 10225.000000 50.000000 inf 1.000000 +uR 10250.000000 50.000000 inf 1.000000 +uR 10275.000000 50.000000 inf 1.000000 +uR 10300.000000 50.000000 inf 1.000000 +uR 10325.000000 50.000000 inf 1.000000 +uR 10350.000000 50.000000 inf 1.000000 +uR 10375.000000 50.000000 inf 1.000000 +uR 10400.000000 50.000000 inf 1.000000 +uR 10425.000000 50.000000 inf 1.000000 +uR 10450.000000 50.000000 inf 1.000000 +uR 10475.000000 50.000000 inf 1.000000 +uR 10500.000000 50.000000 inf 1.000000 +uR 10525.000000 50.000000 inf 1.000000 +uR 10550.000000 50.000000 inf 1.000000 +uR 10575.000000 50.000000 inf 1.000000 +uR 10600.000000 50.000000 inf 1.000000 +uR 10625.000000 50.000000 inf 1.000000 +uR 10650.000000 50.000000 inf 1.000000 +uR 10675.000000 50.000000 inf 1.000000 +uR 10700.000000 50.000000 inf 1.000000 +uR 10725.000000 50.000000 inf 1.000000 +uR 10750.000000 50.000000 inf 1.000000 +uR 10775.000000 50.000000 inf 1.000000 +uR 10800.000000 50.000000 inf 1.000000 +uR 10825.000000 50.000000 inf 1.000000 +uR 10850.000000 50.000000 inf 1.000000 +uR 10875.000000 50.000000 inf 1.000000 +uR 10900.000000 50.000000 inf 1.000000 +uR 10925.000000 50.000000 inf 1.000000 +uR 10950.000000 50.000000 inf 1.000000 +uR 10975.000000 50.000000 inf 1.000000 +uR 11000.000000 50.000000 inf 1.000000 +uR 11025.000000 50.000000 inf 1.000000 +uR 11050.000000 50.000000 inf 1.000000 +uR 11075.000000 50.000000 inf 1.000000 +uR 11100.000000 50.000000 inf 1.000000 +uR 11125.000000 50.000000 inf 1.000000 +uR 11150.000000 50.000000 inf 1.000000 +uR 11175.000000 50.000000 inf 1.000000 +uR 11200.000000 50.000000 inf 1.000000 +uR 11225.000000 50.000000 inf 1.000000 +uR 11250.000000 50.000000 inf 1.000000 +uR 11275.000000 50.000000 inf 1.000000 +uR 11300.000000 50.000000 inf 1.000000 +uR 11325.000000 50.000000 inf 1.000000 +uR 11350.000000 50.000000 inf 1.000000 +uR 11375.000000 50.000000 inf 1.000000 +uR 11400.000000 50.000000 inf 1.000000 +uR 11425.000000 50.000000 inf 1.000000 +uR 11450.000000 50.000000 inf 1.000000 +uR 11475.000000 50.000000 inf 1.000000 +uR 11500.000000 50.000000 inf 1.000000 +uR 11525.000000 50.000000 inf 1.000000 +uR 11550.000000 50.000000 inf 1.000000 +uR 11575.000000 50.000000 inf 1.000000 +uR 11600.000000 50.000000 inf 1.000000 +uR 11625.000000 50.000000 inf 1.000000 +uR 11650.000000 50.000000 inf 1.000000 +uR 11675.000000 50.000000 inf 1.000000 +uR 11700.000000 50.000000 inf 1.000000 +uR 11725.000000 50.000000 inf 1.000000 +uR 11750.000000 50.000000 inf 1.000000 +uR 11775.000000 50.000000 inf 1.000000 +uR 11800.000000 50.000000 inf 1.000000 +uR 11825.000000 50.000000 inf 1.000000 +uR 11850.000000 50.000000 inf 1.000000 +uR 11875.000000 50.000000 inf 1.000000 +uR 11900.000000 50.000000 inf 1.000000 +uR 11925.000000 50.000000 inf 1.000000 +uR 11950.000000 50.000000 inf 1.000000 +uR 11975.000000 50.000000 inf 1.000000 +uR 12000.000000 50.000000 inf 1.000000 +uR 12025.000000 50.000000 inf 1.000000 +uR 12050.000000 50.000000 inf 1.000000 +uR 12075.000000 50.000000 inf 1.000000 +uR 12100.000000 50.000000 inf 1.000000 +uR 12125.000000 50.000000 inf 1.000000 +uR 12150.000000 50.000000 inf 1.000000 +uR 12175.000000 50.000000 inf 1.000000 +uR 12200.000000 50.000000 inf 1.000000 +uR 12225.000000 50.000000 inf 1.000000 +uR 12250.000000 50.000000 inf 1.000000 +uR 12275.000000 50.000000 inf 1.000000 +uR 12300.000000 50.000000 inf 1.000000 +uR 12325.000000 50.000000 inf 1.000000 +uR 12350.000000 50.000000 inf 1.000000 +uR 12375.000000 50.000000 inf 1.000000 +uR 12400.000000 50.000000 inf 1.000000 +uR 12425.000000 50.000000 inf 1.000000 +uR 12450.000000 50.000000 inf 1.000000 +uR 12475.000000 50.000000 inf 1.000000 +uR 12500.000000 50.000000 inf 1.000000 +uR 12525.000000 50.000000 inf 1.000000 +uR 12550.000000 50.000000 inf 1.000000 +uR 12575.000000 50.000000 inf 1.000000 +uR 12600.000000 50.000000 inf 1.000000 +uR 12625.000000 50.000000 inf 1.000000 +uR 12650.000000 50.000000 inf 1.000000 +uR 12675.000000 50.000000 inf 1.000000 +uR 12700.000000 50.000000 inf 1.000000 +uR 12725.000000 50.000000 inf 1.000000 +uR 12750.000000 50.000000 inf 1.000000 +uR 12775.000000 50.000000 inf 1.000000 +uR 12800.000000 50.000000 inf 1.000000 +uR 12825.000000 50.000000 inf 1.000000 +uR 12850.000000 50.000000 inf 1.000000 +uR 12875.000000 50.000000 inf 1.000000 +uR 12900.000000 50.000000 inf 1.000000 +uR 12925.000000 50.000000 inf 1.000000 +uR 12950.000000 50.000000 inf 1.000000 +uR 12975.000000 50.000000 inf 1.000000 +uR 13000.000000 50.000000 inf 1.000000 +uR 13025.000000 50.000000 inf 1.000000 +uR 13050.000000 50.000000 inf 1.000000 +uR 13075.000000 50.000000 inf 1.000000 +uR 13100.000000 50.000000 inf 1.000000 +uR 13125.000000 50.000000 inf 1.000000 +uR 13150.000000 50.000000 inf 1.000000 +uR 13175.000000 50.000000 inf 1.000000 +uR 13200.000000 50.000000 inf 1.000000 +uR 13225.000000 50.000000 inf 1.000000 +uR 13250.000000 50.000000 inf 1.000000 +uR 13275.000000 50.000000 inf 1.000000 +uR 13300.000000 50.000000 inf 1.000000 +uR 13325.000000 50.000000 inf 1.000000 +uR 13350.000000 50.000000 inf 1.000000 +uR 13375.000000 50.000000 inf 1.000000 +uR 13400.000000 50.000000 inf 1.000000 +uR 13425.000000 50.000000 inf 1.000000 +uR 13450.000000 50.000000 inf 1.000000 +uR 13475.000000 50.000000 inf 1.000000 +uR 13500.000000 50.000000 inf 1.000000 +uR 13525.000000 50.000000 inf 1.000000 +uR 13550.000000 50.000000 inf 1.000000 +uR 13575.000000 50.000000 inf 1.000000 +uR 13600.000000 50.000000 inf 1.000000 +uR 13625.000000 50.000000 inf 1.000000 +uR 13650.000000 50.000000 inf 1.000000 +uR 13675.000000 50.000000 inf 1.000000 +uR 13700.000000 50.000000 inf 1.000000 +uR 13725.000000 50.000000 inf 1.000000 +uR 13750.000000 50.000000 inf 1.000000 +uR 13775.000000 50.000000 inf 1.000000 +uR 13800.000000 50.000000 inf 1.000000 +uR 13825.000000 50.000000 inf 1.000000 +uR 13850.000000 50.000000 inf 1.000000 +uR 13875.000000 50.000000 inf 1.000000 +uR 13900.000000 50.000000 inf 1.000000 +uR 13925.000000 50.000000 inf 1.000000 +uR 13950.000000 50.000000 inf 1.000000 +uR 13975.000000 50.000000 inf 1.000000 +uR 14000.000000 50.000000 inf 1.000000 +uR 14025.000000 50.000000 inf 1.000000 +uR 14050.000000 50.000000 inf 1.000000 +uR 14075.000000 50.000000 inf 1.000000 +uR 14100.000000 50.000000 inf 1.000000 +uR 14125.000000 50.000000 inf 1.000000 +uR 14150.000000 50.000000 inf 1.000000 +uR 14175.000000 50.000000 inf 1.000000 +uR 14200.000000 50.000000 inf 1.000000 +uR 14225.000000 50.000000 inf 1.000000 +uR 14250.000000 50.000000 inf 1.000000 +uR 14275.000000 50.000000 inf 1.000000 +uR 14300.000000 50.000000 inf 1.000000 +uR 14325.000000 50.000000 inf 1.000000 +uR 14350.000000 50.000000 inf 1.000000 +uR 14375.000000 50.000000 inf 1.000000 +uR 14400.000000 50.000000 inf 1.000000 +uR 14425.000000 50.000000 inf 1.000000 +uR 14450.000000 50.000000 inf 1.000000 +uR 14475.000000 50.000000 inf 1.000000 +uR 14500.000000 50.000000 inf 1.000000 +uR 14525.000000 50.000000 inf 1.000000 +uR 14550.000000 50.000000 inf 1.000000 +uR 14575.000000 50.000000 inf 1.000000 +uR 14600.000000 50.000000 inf 1.000000 +uR 14625.000000 50.000000 inf 1.000000 +uR 14650.000000 50.000000 inf 1.000000 +uR 14675.000000 50.000000 inf 1.000000 +uR 14700.000000 50.000000 inf 1.000000 +uR 14725.000000 50.000000 inf 1.000000 +uR 14750.000000 50.000000 inf 1.000000 +uR 14775.000000 50.000000 inf 1.000000 +uR 14800.000000 50.000000 inf 1.000000 +uR 14825.000000 50.000000 inf 1.000000 +uR 14850.000000 50.000000 inf 1.000000 +uR 14875.000000 50.000000 inf 1.000000 +uR 14900.000000 50.000000 inf 1.000000 +uR 14925.000000 50.000000 inf 1.000000 +uR 14950.000000 50.000000 inf 1.000000 +uR 14975.000000 50.000000 inf 1.000000 +uR 15000.000000 50.000000 inf 1.000000 +uR 15025.000000 50.000000 inf 1.000000 +uR 15050.000000 50.000000 inf 1.000000 +uR 15075.000000 50.000000 inf 1.000000 +uR 15100.000000 50.000000 inf 1.000000 +uR 15125.000000 50.000000 inf 1.000000 +uR 15150.000000 50.000000 inf 1.000000 +uR 15175.000000 50.000000 inf 1.000000 +uR 15200.000000 50.000000 inf 1.000000 +uR 15225.000000 50.000000 inf 1.000000 +uR 15250.000000 50.000000 inf 1.000000 +uR 15275.000000 50.000000 inf 1.000000 +uR 15300.000000 50.000000 inf 1.000000 +uR 15325.000000 50.000000 inf 1.000000 +uR 15350.000000 50.000000 inf 1.000000 +uR 15375.000000 50.000000 inf 1.000000 +uR 15400.000000 50.000000 inf 1.000000 +uR 15425.000000 50.000000 inf 1.000000 +uR 15450.000000 50.000000 inf 1.000000 +uR 15475.000000 50.000000 inf 1.000000 +uR 15500.000000 50.000000 inf 1.000000 +uR 15525.000000 50.000000 inf 1.000000 +uR 15550.000000 50.000000 inf 1.000000 +uR 15575.000000 50.000000 inf 1.000000 +uR 15600.000000 50.000000 inf 1.000000 +uR 15625.000000 50.000000 inf 1.000000 +uR 15650.000000 50.000000 inf 1.000000 +uR 15675.000000 50.000000 inf 1.000000 +uR 15700.000000 50.000000 inf 1.000000 +uR 15725.000000 50.000000 inf 1.000000 +uR 15750.000000 50.000000 inf 1.000000 +uR 15775.000000 50.000000 inf 1.000000 +uR 15800.000000 50.000000 inf 1.000000 +uR 15825.000000 50.000000 inf 1.000000 +uR 15850.000000 50.000000 inf 1.000000 +uR 15875.000000 50.000000 inf 1.000000 +uR 15900.000000 50.000000 inf 1.000000 +uR 15925.000000 50.000000 inf 1.000000 +uR 15950.000000 50.000000 inf 1.000000 +uR 15975.000000 50.000000 inf 1.000000 +uR 16000.000000 50.000000 inf 1.000000 +uR 16025.000000 50.000000 inf 1.000000 +uR 16050.000000 50.000000 inf 1.000000 +uR 16075.000000 50.000000 inf 1.000000 +uR 16100.000000 50.000000 inf 1.000000 +uR 16125.000000 50.000000 inf 1.000000 +uR 16150.000000 50.000000 inf 1.000000 +uR 16175.000000 50.000000 inf 1.000000 +uR 16200.000000 50.000000 inf 1.000000 +uR 16225.000000 50.000000 inf 1.000000 +uR 16250.000000 50.000000 inf 1.000000 +uR 16275.000000 50.000000 inf 1.000000 +uR 16300.000000 50.000000 inf 1.000000 +uR 16325.000000 50.000000 inf 1.000000 +uR 16350.000000 50.000000 inf 1.000000 +uR 16375.000000 50.000000 inf 1.000000 +uR 16400.000000 50.000000 inf 1.000000 +uR 16425.000000 50.000000 inf 1.000000 +uR 16450.000000 50.000000 inf 1.000000 +uR 16475.000000 50.000000 inf 1.000000 +uR 16500.000000 50.000000 inf 1.000000 +uR 16525.000000 50.000000 inf 1.000000 +uR 16550.000000 50.000000 inf 1.000000 +uR 16575.000000 50.000000 inf 1.000000 +uR 16600.000000 50.000000 inf 1.000000 +uR 16625.000000 50.000000 inf 1.000000 +uR 16650.000000 50.000000 inf 1.000000 +uR 16675.000000 50.000000 inf 1.000000 +uR 16700.000000 50.000000 inf 1.000000 +uR 16725.000000 50.000000 inf 1.000000 +uR 16750.000000 50.000000 inf 1.000000 +uR 16775.000000 50.000000 inf 1.000000 +uR 16800.000000 50.000000 inf 1.000000 +uR 16825.000000 50.000000 inf 1.000000 +uR 16850.000000 50.000000 inf 1.000000 +uR 16875.000000 50.000000 inf 1.000000 +uR 16900.000000 50.000000 inf 1.000000 +uR 16925.000000 50.000000 inf 1.000000 +uR 16950.000000 50.000000 inf 1.000000 +uR 16975.000000 50.000000 inf 1.000000 +uR 17000.000000 50.000000 inf 1.000000 +uR 1930.000000 60.000000 inf 1.000000 +uR 1940.000000 60.000000 inf 1.000000 +uR 1950.000000 60.000000 inf 1.000000 +uR 1960.000000 60.000000 inf 1.000000 +uR 1970.000000 60.000000 inf 1.000000 +uR 1980.000000 60.000000 inf 1.000000 +uR 1990.000000 60.000000 inf 1.000000 +uR 2000.000000 60.000000 inf 1.000000 +uR 2010.000000 60.000000 inf 1.000000 +uR 2020.000000 60.000000 inf 1.000000 +uR 2030.000000 60.000000 inf 1.000000 +uR 2040.000000 60.000000 inf 1.000000 +uR 2050.000000 60.000000 inf 1.000000 +uR 2060.000000 60.000000 inf 1.000000 +uR 2070.000000 60.000000 inf 1.000000 +uR 2080.000000 60.000000 inf 1.000000 +uR 2090.000000 60.000000 inf 1.000000 +uR 2100.000000 60.000000 inf 1.000000 +uR 2110.000000 60.000000 inf 1.000000 +uR 2120.000000 60.000000 inf 1.000000 +uR 2130.000000 60.000000 inf 1.000000 +uR 2140.000000 60.000000 inf 1.000000 +uR 2150.000000 60.000000 inf 1.000000 +uR 2160.000000 60.000000 inf 1.000000 +uR 2170.000000 60.000000 inf 1.000000 +uR 2180.000000 60.000000 inf 1.000000 +uR 2190.000000 60.000000 inf 1.000000 +uR 2200.000000 60.000000 inf 1.000000 +uR 2210.000000 60.000000 inf 1.000000 +uR 2220.000000 60.000000 inf 1.000000 +uR 2230.000000 60.000000 inf 1.000000 +uR 2240.000000 60.000000 inf 1.000000 +uR 2250.000000 60.000000 inf 1.000000 +uR 2260.000000 60.000000 inf 1.000000 +uR 2270.000000 60.000000 inf 1.000000 +uR 2280.000000 60.000000 inf 1.000000 +uR 2290.000000 60.000000 inf 1.000000 +uR 2300.000000 60.000000 inf 1.000000 +uR 2310.000000 60.000000 inf 1.000000 +uR 2320.000000 60.000000 inf 1.000000 +uR 2330.000000 60.000000 inf 1.000000 +uR 2340.000000 60.000000 inf 1.000000 +uR 2350.000000 60.000000 inf 1.000000 +uR 2360.000000 60.000000 inf 1.000000 +uR 2370.000000 60.000000 inf 1.000000 +uR 2380.000000 60.000000 inf 1.000000 +uR 2390.000000 60.000000 inf 1.000000 +uR 2400.000000 60.000000 inf 1.000000 +uR 2410.000000 60.000000 inf 1.000000 +uR 2420.000000 60.000000 inf 1.000000 +uR 2430.000000 60.000000 inf 1.000000 +uR 2440.000000 60.000000 inf 1.000000 +uR 2450.000000 60.000000 inf 1.000000 +uR 2460.000000 60.000000 inf 1.000000 +uR 2470.000000 60.000000 inf 1.000000 +uR 2480.000000 60.000000 inf 1.000000 +uR 2490.000000 60.000000 inf 1.000000 +uR 2500.000000 60.000000 inf 1.000000 +uR 2510.000000 60.000000 inf 1.000000 +uR 2520.000000 60.000000 inf 1.000000 +uR 2530.000000 60.000000 inf 1.000000 +uR 2540.000000 60.000000 inf 1.000000 +uR 2550.000000 60.000000 inf 1.000000 +uR 2560.000000 60.000000 inf 1.000000 +uR 2570.000000 60.000000 inf 1.000000 +uR 2580.000000 60.000000 inf 1.000000 +uR 2590.000000 60.000000 inf 1.000000 +uR 2600.000000 60.000000 inf 1.000000 +uR 2610.000000 60.000000 inf 1.000000 +uR 2620.000000 60.000000 inf 1.000000 +uR 2630.000000 60.000000 inf 1.000000 +uR 2640.000000 60.000000 inf 1.000000 +uR 2650.000000 60.000000 inf 1.000000 +uR 2660.000000 60.000000 inf 1.000000 +uR 2670.000000 60.000000 inf 1.000000 +uR 2680.000000 60.000000 inf 1.000000 +uR 2690.000000 60.000000 inf 1.000000 +uR 2700.000000 60.000000 inf 1.000000 +uR 2710.000000 60.000000 inf 1.000000 +uR 2720.000000 60.000000 inf 1.000000 +uR 2730.000000 60.000000 inf 1.000000 +uR 2740.000000 60.000000 inf 1.000000 +uR 2750.000000 60.000000 inf 1.000000 +uR 2760.000000 60.000000 inf 1.000000 +uR 2770.000000 60.000000 inf 1.000000 +uR 2780.000000 60.000000 inf 1.000000 +uR 2790.000000 60.000000 inf 1.000000 +uR 2800.000000 60.000000 inf 1.000000 +uR 2810.000000 60.000000 inf 1.000000 +uR 2820.000000 60.000000 inf 1.000000 +uR 2830.000000 60.000000 inf 1.000000 +uR 2840.000000 60.000000 inf 1.000000 +uR 2850.000000 60.000000 inf 1.000000 +uR 2860.000000 60.000000 inf 1.000000 +uR 2870.000000 60.000000 inf 1.000000 +uR 2880.000000 60.000000 inf 1.000000 +uR 2890.000000 60.000000 inf 1.000000 +uR 2900.000000 60.000000 inf 1.000000 +uR 2910.000000 60.000000 inf 1.000000 +uR 2920.000000 60.000000 inf 1.000000 +uR 2930.000000 60.000000 inf 1.000000 +uR 2940.000000 60.000000 inf 1.000000 +uR 2950.000000 60.000000 inf 1.000000 +uR 2960.000000 60.000000 inf 1.000000 +uR 2970.000000 60.000000 inf 1.000000 +uR 2980.000000 60.000000 inf 1.000000 +uR 2990.000000 60.000000 inf 1.000000 +uR 3000.000000 60.000000 inf 1.000000 +uR 3010.000000 60.000000 inf 1.000000 +uR 3020.000000 60.000000 inf 1.000000 +uR 3030.000000 60.000000 inf 1.000000 +uR 3040.000000 60.000000 inf 1.000000 +uR 3050.000000 60.000000 inf 1.000000 +uR 3060.000000 60.000000 inf 1.000000 +uR 3070.000000 60.000000 inf 1.000000 +uR 3080.000000 60.000000 inf 1.000000 +uR 3090.000000 60.000000 inf 1.000000 +uR 3100.000000 60.000000 inf 1.000000 +uR 3110.000000 60.000000 inf 1.000000 +uR 3120.000000 60.000000 inf 1.000000 +uR 3130.000000 60.000000 inf 1.000000 +uR 3140.000000 60.000000 inf 1.000000 +uR 3150.000000 60.000000 inf 1.000000 +uR 3160.000000 60.000000 inf 1.000000 +uR 3170.000000 60.000000 inf 1.000000 +uR 3180.000000 60.000000 inf 1.000000 +uR 3190.000000 60.000000 inf 1.000000 +uR 3200.000000 60.000000 inf 1.000000 +uR 3210.000000 60.000000 inf 1.000000 +uR 3220.000000 60.000000 inf 1.000000 +uR 3230.000000 60.000000 inf 1.000000 +uR 3240.000000 60.000000 inf 1.000000 +uR 3250.000000 60.000000 inf 1.000000 +uR 3260.000000 60.000000 inf 1.000000 +uR 3270.000000 60.000000 inf 1.000000 +uR 3280.000000 60.000000 inf 1.000000 +uR 3290.000000 60.000000 inf 1.000000 +uR 3300.000000 60.000000 inf 1.000000 +uR 3310.000000 60.000000 inf 1.000000 +uR 3320.000000 60.000000 inf 1.000000 +uR 3330.000000 60.000000 inf 1.000000 +uR 3340.000000 60.000000 inf 1.000000 +uR 3350.000000 60.000000 inf 1.000000 +uR 3360.000000 60.000000 inf 1.000000 +uR 3370.000000 60.000000 inf 1.000000 +uR 3380.000000 60.000000 inf 1.000000 +uR 3390.000000 60.000000 inf 1.000000 +uR 3400.000000 60.000000 inf 1.000000 +uR 3410.000000 60.000000 inf 1.000000 +uR 3420.000000 60.000000 inf 1.000000 +uR 3430.000000 60.000000 inf 1.000000 +uR 3440.000000 60.000000 inf 1.000000 +uR 3450.000000 60.000000 inf 1.000000 +uR 3460.000000 60.000000 inf 1.000000 +uR 3470.000000 60.000000 inf 1.000000 +uR 3480.000000 60.000000 inf 1.000000 +uR 3490.000000 60.000000 inf 1.000000 +uR 3500.000000 60.000000 inf 1.000000 +uR 3510.000000 60.000000 inf 1.000000 +uR 3520.000000 60.000000 inf 1.000000 +uR 3530.000000 60.000000 inf 1.000000 +uR 3540.000000 60.000000 inf 1.000000 +uR 3550.000000 60.000000 inf 1.000000 +uR 3560.000000 60.000000 inf 1.000000 +uR 3570.000000 60.000000 inf 1.000000 +uR 3580.000000 60.000000 inf 1.000000 +uR 3590.000000 60.000000 inf 1.000000 +uR 3600.000000 60.000000 inf 1.000000 +uR 3610.000000 60.000000 inf 1.000000 +uR 3620.000000 60.000000 inf 1.000000 +uR 3630.000000 60.000000 inf 1.000000 +uR 3640.000000 60.000000 inf 1.000000 +uR 3650.000000 60.000000 inf 1.000000 +uR 3660.000000 60.000000 inf 1.000000 +uR 3670.000000 60.000000 inf 1.000000 +uR 3680.000000 60.000000 inf 1.000000 +uR 3690.000000 60.000000 inf 1.000000 +uR 3700.000000 60.000000 inf 1.000000 +uR 3710.000000 60.000000 inf 1.000000 +uR 3720.000000 60.000000 inf 1.000000 +uR 3730.000000 60.000000 inf 1.000000 +uR 3740.000000 60.000000 inf 1.000000 +uR 3750.000000 60.000000 inf 1.000000 +uR 3760.000000 60.000000 inf 1.000000 +uR 3770.000000 60.000000 inf 1.000000 +uR 3780.000000 60.000000 inf 1.000000 +uR 3790.000000 60.000000 inf 1.000000 +uR 3800.000000 60.000000 inf 1.000000 +uR 3810.000000 60.000000 inf 1.000000 +uR 3820.000000 60.000000 inf 1.000000 +uR 3830.000000 60.000000 inf 1.000000 +uR 3840.000000 60.000000 inf 1.000000 +uR 3850.000000 60.000000 inf 1.000000 +uR 3860.000000 60.000000 inf 1.000000 +uR 3870.000000 60.000000 inf 1.000000 +uR 3880.000000 60.000000 inf 1.000000 +uR 3890.000000 60.000000 inf 1.000000 +uR 3900.000000 60.000000 inf 1.000000 +uR 3910.000000 60.000000 inf 1.000000 +uR 3920.000000 60.000000 inf 1.000000 +uR 3930.000000 60.000000 inf 1.000000 +uR 3940.000000 60.000000 inf 1.000000 +uR 3950.000000 60.000000 inf 1.000000 +uR 3960.000000 60.000000 inf 1.000000 +uR 3970.000000 60.000000 inf 1.000000 +uR 3980.000000 60.000000 inf 1.000000 +uR 3990.000000 60.000000 inf 1.000000 +uR 4000.000000 60.000000 inf 1.000000 +uR 4010.000000 60.000000 inf 1.000000 +uR 4020.000000 60.000000 inf 1.000000 +uR 4030.000000 60.000000 inf 1.000000 +uR 4040.000000 60.000000 inf 1.000000 +uR 4050.000000 60.000000 inf 1.000000 +uR 4060.000000 60.000000 inf 1.000000 +uR 4070.000000 60.000000 inf 1.000000 +uR 4080.000000 60.000000 inf 1.000000 +uR 4090.000000 60.000000 inf 1.000000 +uR 4100.000000 60.000000 inf 1.000000 +uR 4110.000000 60.000000 inf 1.000000 +uR 4120.000000 60.000000 inf 1.000000 +uR 4130.000000 60.000000 inf 1.000000 +uR 4140.000000 60.000000 inf 1.000000 +uR 4150.000000 60.000000 inf 1.000000 +uR 4160.000000 60.000000 inf 1.000000 +uR 4170.000000 60.000000 inf 1.000000 +uR 4180.000000 60.000000 inf 1.000000 +uR 4190.000000 60.000000 inf 1.000000 +uR 4200.000000 60.000000 inf 1.000000 +uR 4210.000000 60.000000 inf 1.000000 +uR 4220.000000 60.000000 inf 1.000000 +uR 4230.000000 60.000000 inf 1.000000 +uR 4240.000000 60.000000 inf 1.000000 +uR 4250.000000 60.000000 inf 1.000000 +uR 4260.000000 60.000000 inf 1.000000 +uR 4270.000000 60.000000 inf 1.000000 +uR 4280.000000 60.000000 inf 1.000000 +uR 4290.000000 60.000000 inf 1.000000 +uR 4300.000000 60.000000 inf 1.000000 +uR 4310.000000 60.000000 inf 1.000000 +uR 4320.000000 60.000000 inf 1.000000 +uR 4330.000000 60.000000 inf 1.000000 +uR 4340.000000 60.000000 inf 1.000000 +uR 4350.000000 60.000000 inf 1.000000 +uR 4360.000000 60.000000 inf 1.000000 +uR 4370.000000 60.000000 inf 1.000000 +uR 4380.000000 60.000000 inf 1.000000 +uR 4390.000000 60.000000 inf 1.000000 +uR 4400.000000 60.000000 inf 1.000000 +uR 4410.000000 60.000000 inf 1.000000 +uR 4420.000000 60.000000 inf 1.000000 +uR 4430.000000 60.000000 inf 1.000000 +uR 4440.000000 60.000000 inf 1.000000 +uR 4450.000000 60.000000 inf 1.000000 +uR 4460.000000 60.000000 inf 1.000000 +uR 4470.000000 60.000000 inf 1.000000 +uR 4480.000000 60.000000 inf 1.000000 +uR 4490.000000 60.000000 inf 1.000000 +uR 4500.000000 60.000000 inf 1.000000 +uR 4510.000000 60.000000 inf 1.000000 +uR 4520.000000 60.000000 inf 1.000000 +uR 4530.000000 60.000000 inf 1.000000 +uR 4540.000000 60.000000 inf 1.000000 +uR 4550.000000 60.000000 inf 1.000000 +uR 4560.000000 60.000000 inf 1.000000 +uR 4570.000000 60.000000 inf 1.000000 +uR 4580.000000 60.000000 inf 1.000000 +uR 4590.000000 60.000000 inf 1.000000 +uR 4600.000000 60.000000 inf 1.000000 +uR 4610.000000 60.000000 inf 1.000000 +uR 4620.000000 60.000000 inf 1.000000 +uR 4630.000000 60.000000 inf 1.000000 +uR 4640.000000 60.000000 inf 1.000000 +uR 4650.000000 60.000000 inf 1.000000 +uR 4660.000000 60.000000 inf 1.000000 +uR 4670.000000 60.000000 inf 1.000000 +uR 4680.000000 60.000000 inf 1.000000 +uR 4690.000000 60.000000 inf 1.000000 +uR 4700.000000 60.000000 inf 1.000000 +uR 4710.000000 60.000000 inf 1.000000 +uR 4720.000000 60.000000 inf 1.000000 +uR 4730.000000 60.000000 inf 1.000000 +uR 4740.000000 60.000000 inf 1.000000 +uR 4750.000000 60.000000 inf 1.000000 +uR 4760.000000 60.000000 inf 1.000000 +uR 4770.000000 60.000000 inf 1.000000 +uR 4780.000000 60.000000 inf 1.000000 +uR 4790.000000 60.000000 inf 1.000000 +uR 4800.000000 60.000000 inf 1.000000 +uR 4810.000000 60.000000 inf 1.000000 +uR 4820.000000 60.000000 inf 1.000000 +uR 4830.000000 60.000000 inf 1.000000 +uR 4840.000000 60.000000 inf 1.000000 +uR 4850.000000 60.000000 inf 1.000000 +uR 4860.000000 60.000000 inf 1.000000 +uR 4870.000000 60.000000 inf 1.000000 +uR 4880.000000 60.000000 inf 1.000000 +uR 4890.000000 60.000000 inf 1.000000 +uR 4900.000000 60.000000 inf 1.000000 +uR 4910.000000 60.000000 inf 1.000000 +uR 4920.000000 60.000000 inf 1.000000 +uR 4930.000000 60.000000 inf 1.000000 +uR 4940.000000 60.000000 inf 1.000000 +uR 4950.000000 60.000000 inf 1.000000 +uR 4960.000000 60.000000 inf 1.000000 +uR 4970.000000 60.000000 inf 1.000000 +uR 4980.000000 60.000000 inf 1.000000 +uR 4990.000000 60.000000 inf 1.000000 +uR 5000.000000 60.000000 inf 1.000000 +uR 5010.000000 60.000000 inf 1.000000 +uR 5020.000000 60.000000 inf 1.000000 +uR 5030.000000 60.000000 inf 1.000000 +uR 5040.000000 60.000000 inf 1.000000 +uR 5050.000000 60.000000 inf 1.000000 +uR 5060.000000 60.000000 inf 1.000000 +uR 5070.000000 60.000000 inf 1.000000 +uR 5080.000000 60.000000 inf 1.000000 +uR 5090.000000 60.000000 inf 1.000000 +uR 5100.000000 60.000000 inf 1.000000 +uR 5110.000000 60.000000 inf 1.000000 +uR 5120.000000 60.000000 inf 1.000000 +uR 5130.000000 60.000000 inf 1.000000 +uR 5140.000000 60.000000 inf 1.000000 +uR 5150.000000 60.000000 inf 1.000000 +uR 5160.000000 60.000000 inf 1.000000 +uR 5170.000000 60.000000 inf 1.000000 +uR 5180.000000 60.000000 inf 1.000000 +uR 5190.000000 60.000000 inf 1.000000 +uR 5200.000000 60.000000 inf 1.000000 +uR 5210.000000 60.000000 inf 1.000000 +uR 5220.000000 60.000000 inf 1.000000 +uR 5230.000000 60.000000 inf 1.000000 +uR 5240.000000 60.000000 inf 1.000000 +uR 5250.000000 60.000000 inf 1.000000 +uR 5260.000000 60.000000 inf 1.000000 +uR 5270.000000 60.000000 inf 1.000000 +uR 5280.000000 60.000000 inf 1.000000 +uR 5290.000000 60.000000 inf 1.000000 +uR 5300.000000 60.000000 inf 1.000000 +uR 5310.000000 60.000000 inf 1.000000 +uR 5320.000000 60.000000 inf 1.000000 +uR 5330.000000 60.000000 inf 1.000000 +uR 5340.000000 60.000000 inf 1.000000 +uR 5350.000000 60.000000 inf 1.000000 +uR 5360.000000 60.000000 inf 1.000000 +uR 5370.000000 60.000000 inf 1.000000 +uR 5380.000000 60.000000 inf 1.000000 +uR 5390.000000 60.000000 inf 1.000000 +uR 5400.000000 60.000000 inf 1.000000 +uR 5410.000000 60.000000 inf 1.000000 +uR 5420.000000 60.000000 inf 1.000000 +uR 5430.000000 60.000000 inf 1.000000 +uR 5440.000000 60.000000 inf 1.000000 +uR 5450.000000 60.000000 inf 1.000000 +uR 5460.000000 60.000000 inf 1.000000 +uR 5470.000000 60.000000 inf 1.000000 +uR 5480.000000 60.000000 inf 1.000000 +uR 5490.000000 60.000000 inf 1.000000 +uR 5500.000000 60.000000 inf 1.000000 +uR 5510.000000 60.000000 inf 1.000000 +uR 5520.000000 60.000000 inf 1.000000 +uR 5530.000000 60.000000 inf 1.000000 +uR 5540.000000 60.000000 inf 1.000000 +uR 5550.000000 60.000000 inf 1.000000 +uR 5560.000000 60.000000 inf 1.000000 +uR 5570.000000 60.000000 inf 1.000000 +uR 5580.000000 60.000000 inf 1.000000 +uR 5590.000000 60.000000 inf 1.000000 +uR 5600.000000 60.000000 inf 1.000000 +uR 5610.000000 60.000000 inf 1.000000 +uR 5620.000000 60.000000 inf 1.000000 +uR 5630.000000 60.000000 inf 1.000000 +uR 5640.000000 60.000000 inf 1.000000 +uR 5650.000000 60.000000 inf 1.000000 +uR 5660.000000 60.000000 inf 1.000000 +uR 5670.000000 60.000000 inf 1.000000 +uR 5680.000000 60.000000 inf 1.000000 +uR 5690.000000 60.000000 inf 1.000000 +uR 5700.000000 60.000000 inf 1.000000 +uR 5710.000000 60.000000 inf 1.000000 +uR 5720.000000 60.000000 inf 1.000000 +uR 5730.000000 60.000000 inf 1.000000 +uR 5740.000000 60.000000 inf 1.000000 +uR 5750.000000 60.000000 inf 1.000000 +uR 5760.000000 60.000000 inf 1.000000 +uR 5770.000000 60.000000 inf 1.000000 +uR 5780.000000 60.000000 inf 1.000000 +uR 5790.000000 60.000000 inf 1.000000 +uR 5800.000000 60.000000 inf 1.000000 +uR 5810.000000 60.000000 inf 1.000000 +uR 5820.000000 60.000000 inf 1.000000 +uR 5830.000000 60.000000 inf 1.000000 +uR 5840.000000 60.000000 inf 1.000000 +uR 5850.000000 60.000000 inf 1.000000 +uR 5860.000000 60.000000 inf 1.000000 +uR 5870.000000 60.000000 inf 1.000000 +uR 5880.000000 60.000000 inf 1.000000 +uR 5890.000000 60.000000 inf 1.000000 +uR 5900.000000 60.000000 inf 1.000000 +uR 5910.000000 60.000000 inf 1.000000 +uR 5920.000000 60.000000 inf 1.000000 +uR 5930.000000 60.000000 inf 1.000000 +uR 5940.000000 60.000000 inf 1.000000 +uR 5950.000000 60.000000 inf 1.000000 +uR 5960.000000 60.000000 inf 1.000000 +uR 5970.000000 60.000000 inf 1.000000 +uR 5980.000000 60.000000 inf 1.000000 +uR 5990.000000 60.000000 inf 1.000000 +uR 6000.000000 60.000000 inf 1.000000 +uR 6010.000000 60.000000 inf 1.000000 +uR 6020.000000 60.000000 inf 1.000000 +uR 6030.000000 60.000000 inf 1.000000 +uR 6040.000000 60.000000 inf 1.000000 +uR 6050.000000 60.000000 inf 1.000000 +uR 6060.000000 60.000000 inf 1.000000 +uR 6070.000000 60.000000 inf 1.000000 +uR 6080.000000 60.000000 inf 1.000000 +uR 6090.000000 60.000000 inf 1.000000 +uR 6100.000000 60.000000 inf 1.000000 +uR 6110.000000 60.000000 inf 1.000000 +uR 6120.000000 60.000000 inf 1.000000 +uR 6130.000000 60.000000 inf 1.000000 +uR 6140.000000 60.000000 inf 1.000000 +uR 6150.000000 60.000000 inf 1.000000 +uR 6160.000000 60.000000 inf 1.000000 +uR 6170.000000 60.000000 inf 1.000000 +uR 6180.000000 60.000000 inf 1.000000 +uR 6190.000000 60.000000 inf 1.000000 +uR 6200.000000 60.000000 inf 1.000000 +uR 6210.000000 60.000000 inf 1.000000 +uR 6220.000000 60.000000 inf 1.000000 +uR 6230.000000 60.000000 inf 1.000000 +uR 6240.000000 60.000000 inf 1.000000 +uR 6250.000000 60.000000 inf 1.000000 +uR 6260.000000 60.000000 inf 1.000000 +uR 6270.000000 60.000000 inf 1.000000 +uR 6280.000000 60.000000 inf 1.000000 +uR 6290.000000 60.000000 inf 1.000000 +uR 6300.000000 60.000000 inf 1.000000 +uR 6310.000000 60.000000 inf 1.000000 +uR 6320.000000 60.000000 inf 1.000000 +uR 6330.000000 60.000000 inf 1.000000 +uR 6340.000000 60.000000 inf 1.000000 +uR 6350.000000 60.000000 inf 1.000000 +uR 6360.000000 60.000000 inf 1.000000 +uR 6370.000000 60.000000 inf 1.000000 +uR 6380.000000 60.000000 inf 1.000000 +uR 6390.000000 60.000000 inf 1.000000 +uR 6400.000000 60.000000 inf 1.000000 +uR 6410.000000 60.000000 inf 1.000000 +uR 6420.000000 60.000000 inf 1.000000 +uR 6430.000000 60.000000 inf 1.000000 +uR 6440.000000 60.000000 inf 1.000000 +uR 6450.000000 60.000000 inf 1.000000 +uR 6460.000000 60.000000 inf 1.000000 +uR 6470.000000 60.000000 inf 1.000000 +uR 6480.000000 60.000000 inf 1.000000 +uR 6490.000000 60.000000 inf 1.000000 +uR 6500.000000 60.000000 inf 1.000000 +uR 6510.000000 60.000000 inf 1.000000 +uR 6520.000000 60.000000 inf 1.000000 +uR 6530.000000 60.000000 inf 1.000000 +uR 6540.000000 60.000000 inf 1.000000 +uR 6550.000000 60.000000 inf 1.000000 +uR 6560.000000 60.000000 inf 1.000000 +uR 6570.000000 60.000000 inf 1.000000 +uR 6580.000000 60.000000 inf 1.000000 +uR 6590.000000 60.000000 inf 1.000000 +uR 6600.000000 60.000000 inf 1.000000 +uR 6610.000000 60.000000 inf 1.000000 +uR 6620.000000 60.000000 inf 1.000000 +uR 6630.000000 60.000000 inf 1.000000 +uR 6640.000000 60.000000 inf 1.000000 +uR 6650.000000 60.000000 inf 1.000000 +uR 6660.000000 60.000000 inf 1.000000 +uR 6670.000000 60.000000 inf 1.000000 +uR 6680.000000 60.000000 inf 1.000000 +uR 6690.000000 60.000000 inf 1.000000 +uR 6700.000000 60.000000 inf 1.000000 +uR 6710.000000 60.000000 inf 1.000000 +uR 6720.000000 60.000000 inf 1.000000 +uR 6730.000000 60.000000 inf 1.000000 +uR 6740.000000 60.000000 inf 1.000000 +uR 6750.000000 60.000000 inf 1.000000 +uR 6760.000000 60.000000 inf 1.000000 +uR 6770.000000 60.000000 inf 1.000000 +uR 6780.000000 60.000000 inf 1.000000 +uR 6790.000000 60.000000 inf 1.000000 +uR 6800.000000 60.000000 inf 1.000000 +uR 6810.000000 60.000000 inf 1.000000 +uR 6820.000000 60.000000 inf 1.000000 +uR 6830.000000 60.000000 inf 1.000000 +uR 6840.000000 60.000000 inf 1.000000 +uR 6850.000000 60.000000 inf 1.000000 +uR 6860.000000 60.000000 inf 1.000000 +uR 6870.000000 60.000000 inf 1.000000 +uR 6880.000000 60.000000 inf 1.000000 +uR 6890.000000 60.000000 inf 1.000000 +uR 6900.000000 60.000000 inf 1.000000 +uR 6910.000000 60.000000 inf 1.000000 +uR 6920.000000 60.000000 inf 1.000000 +uR 6930.000000 60.000000 inf 1.000000 +uR 6940.000000 60.000000 inf 1.000000 +uR 6950.000000 60.000000 inf 1.000000 +uR 6960.000000 60.000000 inf 1.000000 +uR 6970.000000 60.000000 inf 1.000000 +uR 6980.000000 60.000000 inf 1.000000 +uR 6990.000000 60.000000 inf 1.000000 +uR 7000.000000 60.000000 inf 1.000000 +uR 7010.000000 60.000000 inf 1.000000 +uR 7020.000000 60.000000 inf 1.000000 +uR 7030.000000 60.000000 inf 1.000000 +uR 7040.000000 60.000000 inf 1.000000 +uR 7050.000000 60.000000 inf 1.000000 +uR 7060.000000 60.000000 inf 1.000000 +uR 7070.000000 60.000000 inf 1.000000 +uR 7080.000000 60.000000 inf 1.000000 +uR 7090.000000 60.000000 inf 1.000000 +uR 7100.000000 60.000000 inf 1.000000 +uR 7110.000000 60.000000 inf 1.000000 +uR 7120.000000 60.000000 inf 1.000000 +uR 7130.000000 60.000000 inf 1.000000 +uR 7140.000000 60.000000 inf 1.000000 +uR 7150.000000 60.000000 inf 1.000000 +uR 7160.000000 60.000000 inf 1.000000 +uR 7170.000000 60.000000 inf 1.000000 +uR 7180.000000 60.000000 inf 1.000000 +uR 7190.000000 60.000000 inf 1.000000 +uR 7200.000000 60.000000 inf 1.000000 +uR 7210.000000 60.000000 inf 1.000000 +uR 7220.000000 60.000000 inf 1.000000 +uR 7230.000000 60.000000 inf 1.000000 +uR 7240.000000 60.000000 inf 1.000000 +uR 7250.000000 60.000000 inf 1.000000 +uR 7260.000000 60.000000 inf 1.000000 +uR 7270.000000 60.000000 inf 1.000000 +uR 7280.000000 60.000000 inf 1.000000 +uR 7290.000000 60.000000 inf 1.000000 +uR 7300.000000 60.000000 inf 1.000000 +uR 7310.000000 60.000000 inf 1.000000 +uR 7320.000000 60.000000 inf 1.000000 +uR 7330.000000 60.000000 inf 1.000000 +uR 7340.000000 60.000000 inf 1.000000 +uR 7350.000000 60.000000 inf 1.000000 +uR 7360.000000 60.000000 inf 1.000000 +uR 7370.000000 60.000000 inf 1.000000 +uR 7380.000000 60.000000 inf 1.000000 +uR 7390.000000 60.000000 inf 1.000000 +uR 7400.000000 60.000000 inf 1.000000 +uR 7410.000000 60.000000 inf 1.000000 +uR 7420.000000 60.000000 inf 1.000000 +uR 7430.000000 60.000000 inf 1.000000 +uR 7440.000000 60.000000 inf 1.000000 +uR 7450.000000 60.000000 inf 1.000000 +uR 7460.000000 60.000000 inf 1.000000 +uR 7470.000000 60.000000 inf 1.000000 +uR 7480.000000 60.000000 inf 1.000000 +uR 7490.000000 60.000000 inf 1.000000 +uR 7500.000000 60.000000 inf 1.000000 +uR 7510.000000 60.000000 inf 1.000000 +uR 7520.000000 60.000000 inf 1.000000 +uR 7530.000000 60.000000 inf 1.000000 +uR 7540.000000 60.000000 inf 1.000000 +uR 7550.000000 60.000000 inf 1.000000 +uR 7560.000000 60.000000 inf 1.000000 +uR 7570.000000 60.000000 inf 1.000000 +uR 7580.000000 60.000000 inf 1.000000 +uR 7590.000000 60.000000 inf 1.000000 +uR 7600.000000 60.000000 inf 1.000000 +uR 7610.000000 60.000000 inf 1.000000 +uR 7620.000000 60.000000 inf 1.000000 +uR 7630.000000 60.000000 inf 1.000000 +uR 7640.000000 60.000000 inf 1.000000 +uR 7650.000000 60.000000 inf 1.000000 +uR 7660.000000 60.000000 inf 1.000000 +uR 7670.000000 60.000000 inf 1.000000 +uR 7680.000000 60.000000 inf 1.000000 +uR 7690.000000 60.000000 inf 1.000000 +uR 7700.000000 60.000000 inf 1.000000 +uR 7710.000000 60.000000 inf 1.000000 +uR 7720.000000 60.000000 inf 1.000000 +uR 7730.000000 60.000000 inf 1.000000 +uR 7740.000000 60.000000 inf 1.000000 +uR 7750.000000 60.000000 inf 1.000000 +uR 7760.000000 60.000000 inf 1.000000 +uR 7770.000000 60.000000 inf 1.000000 +uR 7780.000000 60.000000 inf 1.000000 +uR 7790.000000 60.000000 inf 1.000000 +uR 7800.000000 60.000000 inf 1.000000 +uR 7810.000000 60.000000 inf 1.000000 +uR 7820.000000 60.000000 inf 1.000000 +uR 7830.000000 60.000000 inf 1.000000 +uR 7840.000000 60.000000 inf 1.000000 +uR 7850.000000 60.000000 inf 1.000000 +uR 7860.000000 60.000000 inf 1.000000 +uR 7870.000000 60.000000 inf 1.000000 +uR 7880.000000 60.000000 inf 1.000000 +uR 7890.000000 60.000000 inf 1.000000 +uR 7900.000000 60.000000 inf 1.000000 +uR 7910.000000 60.000000 inf 1.000000 +uR 7920.000000 60.000000 inf 1.000000 +uR 7930.000000 60.000000 inf 1.000000 +uR 7940.000000 60.000000 inf 1.000000 +uR 7950.000000 60.000000 inf 1.000000 +uR 7960.000000 60.000000 inf 1.000000 +uR 7970.000000 60.000000 inf 1.000000 +uR 7980.000000 60.000000 inf 1.000000 +uR 7990.000000 60.000000 inf 1.000000 +uR 8000.000000 60.000000 inf 1.000000 +uR 8010.000000 60.000000 inf 1.000000 +uR 8020.000000 60.000000 inf 1.000000 +uR 8030.000000 60.000000 inf 1.000000 +uR 8040.000000 60.000000 inf 1.000000 +uR 8050.000000 60.000000 inf 1.000000 +uR 8060.000000 60.000000 inf 1.000000 +uR 8070.000000 60.000000 inf 1.000000 +uR 8080.000000 60.000000 inf 1.000000 +uR 8090.000000 60.000000 inf 1.000000 +uR 8100.000000 60.000000 inf 1.000000 +uR 8110.000000 60.000000 inf 1.000000 +uR 8120.000000 60.000000 inf 1.000000 +uR 8130.000000 60.000000 inf 1.000000 +uR 8140.000000 60.000000 inf 1.000000 +uR 8150.000000 60.000000 inf 1.000000 +uR 8160.000000 60.000000 inf 1.000000 +uR 8170.000000 60.000000 inf 1.000000 +uR 8180.000000 60.000000 inf 1.000000 +uR 8190.000000 60.000000 inf 1.000000 +uR 8200.000000 60.000000 inf 1.000000 +uR 8210.000000 60.000000 inf 1.000000 +uR 8220.000000 60.000000 inf 1.000000 +uR 8230.000000 60.000000 inf 1.000000 +uR 8240.000000 60.000000 inf 1.000000 +uR 8250.000000 60.000000 inf 1.000000 +uR 8260.000000 60.000000 inf 1.000000 +uR 8270.000000 60.000000 inf 1.000000 +uR 8280.000000 60.000000 inf 1.000000 +uR 8290.000000 60.000000 inf 1.000000 +uR 8300.000000 60.000000 inf 1.000000 +uR 8310.000000 60.000000 inf 1.000000 +uR 8320.000000 60.000000 inf 1.000000 +uR 8330.000000 60.000000 inf 1.000000 +uR 8340.000000 60.000000 inf 1.000000 +uR 8350.000000 60.000000 inf 1.000000 +uR 8360.000000 60.000000 inf 1.000000 +uR 8370.000000 60.000000 inf 1.000000 +uR 8380.000000 60.000000 inf 1.000000 +uR 8390.000000 60.000000 inf 1.000000 +uR 8400.000000 60.000000 inf 1.000000 +uR 8410.000000 60.000000 inf 1.000000 +uR 8420.000000 60.000000 inf 1.000000 +uR 8430.000000 60.000000 inf 1.000000 +uR 8440.000000 60.000000 inf 1.000000 +uR 8450.000000 60.000000 inf 1.000000 +uR 8460.000000 60.000000 inf 1.000000 +uR 8470.000000 60.000000 inf 1.000000 +uR 8480.000000 60.000000 inf 1.000000 +uR 8490.000000 60.000000 inf 1.000000 +uR 8500.000000 60.000000 inf 1.000000 +uR 8510.000000 60.000000 inf 1.000000 +uR 8520.000000 60.000000 inf 1.000000 +uR 8530.000000 60.000000 inf 1.000000 +uR 8540.000000 60.000000 inf 1.000000 +uR 8550.000000 60.000000 inf 1.000000 +uR 8560.000000 60.000000 inf 1.000000 +uR 8570.000000 60.000000 inf 1.000000 +uR 8580.000000 60.000000 inf 1.000000 +uR 8590.000000 60.000000 inf 1.000000 +uR 8600.000000 60.000000 inf 1.000000 +uR 8610.000000 60.000000 inf 1.000000 +uR 8620.000000 60.000000 inf 1.000000 +uR 8630.000000 60.000000 inf 1.000000 +uR 8640.000000 60.000000 inf 1.000000 +uR 8650.000000 60.000000 inf 1.000000 +uR 8660.000000 60.000000 inf 1.000000 +uR 8670.000000 60.000000 inf 1.000000 +uR 8680.000000 60.000000 inf 1.000000 +uR 8690.000000 60.000000 inf 1.000000 +uR 8700.000000 60.000000 inf 1.000000 +uR 8710.000000 60.000000 inf 1.000000 +uR 8720.000000 60.000000 inf 1.000000 +uR 8730.000000 60.000000 inf 1.000000 +uR 8740.000000 60.000000 inf 1.000000 +uR 8750.000000 60.000000 inf 1.000000 +uR 8760.000000 60.000000 inf 1.000000 +uR 8770.000000 60.000000 inf 1.000000 +uR 8780.000000 60.000000 inf 1.000000 +uR 8790.000000 60.000000 inf 1.000000 +uR 8800.000000 60.000000 inf 1.000000 +uR 8810.000000 60.000000 inf 1.000000 +uR 8820.000000 60.000000 inf 1.000000 +uR 8830.000000 60.000000 inf 1.000000 +uR 8840.000000 60.000000 inf 1.000000 +uR 8850.000000 60.000000 inf 1.000000 +uR 8860.000000 60.000000 inf 1.000000 +uR 8870.000000 60.000000 inf 1.000000 +uR 8880.000000 60.000000 inf 1.000000 +uR 8890.000000 60.000000 inf 1.000000 +uR 8900.000000 60.000000 inf 1.000000 +uR 8910.000000 60.000000 inf 1.000000 +uR 8920.000000 60.000000 inf 1.000000 +uR 8930.000000 60.000000 inf 1.000000 +uR 8940.000000 60.000000 inf 1.000000 +uR 8950.000000 60.000000 inf 1.000000 +uR 8960.000000 60.000000 inf 1.000000 +uR 8970.000000 60.000000 inf 1.000000 +uR 8980.000000 60.000000 inf 1.000000 +uR 8990.000000 60.000000 inf 1.000000 +uR 9000.000000 60.000000 inf 1.000000 +uR 9010.000000 60.000000 inf 1.000000 +uR 9020.000000 60.000000 inf 1.000000 +uR 9030.000000 60.000000 inf 1.000000 +uR 9040.000000 60.000000 inf 1.000000 +uR 9050.000000 60.000000 inf 1.000000 +uR 9060.000000 60.000000 inf 1.000000 +uR 9070.000000 60.000000 inf 1.000000 +uR 9080.000000 60.000000 inf 1.000000 +uR 9090.000000 60.000000 inf 1.000000 +uR 9100.000000 60.000000 inf 1.000000 +uR 9110.000000 60.000000 inf 1.000000 +uR 9120.000000 60.000000 inf 1.000000 +uR 9130.000000 60.000000 inf 1.000000 +uR 9140.000000 60.000000 inf 1.000000 +uR 9150.000000 60.000000 inf 1.000000 +uR 9160.000000 60.000000 inf 1.000000 +uR 9170.000000 60.000000 inf 1.000000 +uR 9180.000000 60.000000 inf 1.000000 +uR 9190.000000 60.000000 inf 1.000000 +uR 9200.000000 60.000000 inf 1.000000 +uR 9210.000000 60.000000 inf 1.000000 +uR 9220.000000 60.000000 inf 1.000000 +uR 9230.000000 60.000000 inf 1.000000 +uR 9240.000000 60.000000 inf 1.000000 +uR 9250.000000 60.000000 inf 1.000000 +uR 9260.000000 60.000000 inf 1.000000 +uR 9270.000000 60.000000 inf 1.000000 +uR 9280.000000 60.000000 inf 1.000000 +uR 9290.000000 60.000000 inf 1.000000 +uR 9300.000000 60.000000 inf 1.000000 +uR 9310.000000 60.000000 inf 1.000000 +uR 9320.000000 60.000000 inf 1.000000 +uR 9330.000000 60.000000 inf 1.000000 +uR 9340.000000 60.000000 inf 1.000000 +uR 9350.000000 60.000000 inf 1.000000 +uR 9360.000000 60.000000 inf 1.000000 +uR 9370.000000 60.000000 inf 1.000000 +uR 9380.000000 60.000000 inf 1.000000 +uR 9390.000000 60.000000 inf 1.000000 +uR 9400.000000 60.000000 inf 1.000000 +uR 9410.000000 60.000000 inf 1.000000 +uR 9420.000000 60.000000 inf 1.000000 +uR 9430.000000 60.000000 inf 1.000000 +uR 9440.000000 60.000000 inf 1.000000 +uR 9450.000000 60.000000 inf 1.000000 +uR 9460.000000 60.000000 inf 1.000000 +uR 9470.000000 60.000000 inf 1.000000 +uR 9480.000000 60.000000 inf 1.000000 +uR 9490.000000 60.000000 inf 1.000000 +uR 9500.000000 60.000000 inf 1.000000 +uR 9510.000000 60.000000 inf 1.000000 +uR 9520.000000 60.000000 inf 1.000000 +uR 9530.000000 60.000000 inf 1.000000 +uR 9540.000000 60.000000 inf 1.000000 +uR 9550.000000 60.000000 inf 1.000000 +uR 9560.000000 60.000000 inf 1.000000 +uR 9570.000000 60.000000 inf 1.000000 +uR 9580.000000 60.000000 inf 1.000000 +uR 9590.000000 60.000000 inf 1.000000 +uR 9600.000000 60.000000 inf 1.000000 +uR 9610.000000 60.000000 inf 1.000000 +uR 9620.000000 60.000000 inf 1.000000 +uR 9630.000000 60.000000 inf 1.000000 +uR 9640.000000 60.000000 inf 1.000000 +uR 9650.000000 60.000000 inf 1.000000 +uR 9660.000000 60.000000 inf 1.000000 +uR 9670.000000 60.000000 inf 1.000000 +uR 9680.000000 60.000000 inf 1.000000 +uR 9690.000000 60.000000 inf 1.000000 +uR 9700.000000 60.000000 inf 1.000000 +uR 9710.000000 60.000000 inf 1.000000 +uR 9720.000000 60.000000 inf 1.000000 +uR 9730.000000 60.000000 inf 1.000000 +uR 9740.000000 60.000000 inf 1.000000 +uR 9750.000000 60.000000 inf 1.000000 +uR 9760.000000 60.000000 inf 1.000000 +uR 9770.000000 60.000000 inf 1.000000 +uR 9780.000000 60.000000 inf 1.000000 +uR 9790.000000 60.000000 inf 1.000000 +uR 9800.000000 60.000000 inf 1.000000 +uR 9810.000000 60.000000 inf 1.000000 +uR 9820.000000 60.000000 inf 1.000000 +uR 9830.000000 60.000000 inf 1.000000 +uR 9840.000000 60.000000 inf 1.000000 +uR 9850.000000 60.000000 inf 1.000000 +uR 9860.000000 60.000000 inf 1.000000 +uR 9870.000000 60.000000 inf 1.000000 +uR 9880.000000 60.000000 inf 1.000000 +uR 9890.000000 60.000000 inf 1.000000 +uR 9900.000000 60.000000 inf 1.000000 +uR 9910.000000 60.000000 inf 1.000000 +uR 9920.000000 60.000000 inf 1.000000 +uR 9930.000000 60.000000 inf 1.000000 +uR 9940.000000 60.000000 inf 1.000000 +uR 9950.000000 60.000000 inf 1.000000 +uR 9960.000000 60.000000 inf 1.000000 +uR 9970.000000 60.000000 inf 1.000000 +uR 9980.000000 60.000000 inf 1.000000 +uR 9990.000000 60.000000 inf 1.000000 +uR 10000.000000 60.000000 inf 1.000000 +uR 10025.000000 60.000000 inf 1.000000 +uR 10050.000000 60.000000 inf 1.000000 +uR 10075.000000 60.000000 inf 1.000000 +uR 10100.000000 60.000000 inf 1.000000 +uR 10125.000000 60.000000 inf 1.000000 +uR 10150.000000 60.000000 inf 1.000000 +uR 10175.000000 60.000000 inf 1.000000 +uR 10200.000000 60.000000 inf 1.000000 +uR 10225.000000 60.000000 inf 1.000000 +uR 10250.000000 60.000000 inf 1.000000 +uR 10275.000000 60.000000 inf 1.000000 +uR 10300.000000 60.000000 inf 1.000000 +uR 10325.000000 60.000000 inf 1.000000 +uR 10350.000000 60.000000 inf 1.000000 +uR 10375.000000 60.000000 inf 1.000000 +uR 10400.000000 60.000000 inf 1.000000 +uR 10425.000000 60.000000 inf 1.000000 +uR 10450.000000 60.000000 inf 1.000000 +uR 10475.000000 60.000000 inf 1.000000 +uR 10500.000000 60.000000 inf 1.000000 +uR 10525.000000 60.000000 inf 1.000000 +uR 10550.000000 60.000000 inf 1.000000 +uR 10575.000000 60.000000 inf 1.000000 +uR 10600.000000 60.000000 inf 1.000000 +uR 10625.000000 60.000000 inf 1.000000 +uR 10650.000000 60.000000 inf 1.000000 +uR 10675.000000 60.000000 inf 1.000000 +uR 10700.000000 60.000000 inf 1.000000 +uR 10725.000000 60.000000 inf 1.000000 +uR 10750.000000 60.000000 inf 1.000000 +uR 10775.000000 60.000000 inf 1.000000 +uR 10800.000000 60.000000 inf 1.000000 +uR 10825.000000 60.000000 inf 1.000000 +uR 10850.000000 60.000000 inf 1.000000 +uR 10875.000000 60.000000 inf 1.000000 +uR 10900.000000 60.000000 inf 1.000000 +uR 10925.000000 60.000000 inf 1.000000 +uR 10950.000000 60.000000 inf 1.000000 +uR 10975.000000 60.000000 inf 1.000000 +uR 11000.000000 60.000000 inf 1.000000 +uR 11025.000000 60.000000 inf 1.000000 +uR 11050.000000 60.000000 inf 1.000000 +uR 11075.000000 60.000000 inf 1.000000 +uR 11100.000000 60.000000 inf 1.000000 +uR 11125.000000 60.000000 inf 1.000000 +uR 11150.000000 60.000000 inf 1.000000 +uR 11175.000000 60.000000 inf 1.000000 +uR 11200.000000 60.000000 inf 1.000000 +uR 11225.000000 60.000000 inf 1.000000 +uR 11250.000000 60.000000 inf 1.000000 +uR 11275.000000 60.000000 inf 1.000000 +uR 11300.000000 60.000000 inf 1.000000 +uR 11325.000000 60.000000 inf 1.000000 +uR 11350.000000 60.000000 inf 1.000000 +uR 11375.000000 60.000000 inf 1.000000 +uR 11400.000000 60.000000 inf 1.000000 +uR 11425.000000 60.000000 inf 1.000000 +uR 11450.000000 60.000000 inf 1.000000 +uR 11475.000000 60.000000 inf 1.000000 +uR 11500.000000 60.000000 inf 1.000000 +uR 11525.000000 60.000000 inf 1.000000 +uR 11550.000000 60.000000 inf 1.000000 +uR 11575.000000 60.000000 inf 1.000000 +uR 11600.000000 60.000000 inf 1.000000 +uR 11625.000000 60.000000 inf 1.000000 +uR 11650.000000 60.000000 inf 1.000000 +uR 11675.000000 60.000000 inf 1.000000 +uR 11700.000000 60.000000 inf 1.000000 +uR 11725.000000 60.000000 inf 1.000000 +uR 11750.000000 60.000000 inf 1.000000 +uR 11775.000000 60.000000 inf 1.000000 +uR 11800.000000 60.000000 inf 1.000000 +uR 11825.000000 60.000000 inf 1.000000 +uR 11850.000000 60.000000 inf 1.000000 +uR 11875.000000 60.000000 inf 1.000000 +uR 11900.000000 60.000000 inf 1.000000 +uR 11925.000000 60.000000 inf 1.000000 +uR 11950.000000 60.000000 inf 1.000000 +uR 11975.000000 60.000000 inf 1.000000 +uR 12000.000000 60.000000 inf 1.000000 +uR 12025.000000 60.000000 inf 1.000000 +uR 12050.000000 60.000000 inf 1.000000 +uR 12075.000000 60.000000 inf 1.000000 +uR 12100.000000 60.000000 inf 1.000000 +uR 12125.000000 60.000000 inf 1.000000 +uR 12150.000000 60.000000 inf 1.000000 +uR 12175.000000 60.000000 inf 1.000000 +uR 12200.000000 60.000000 inf 1.000000 +uR 12225.000000 60.000000 inf 1.000000 +uR 12250.000000 60.000000 inf 1.000000 +uR 12275.000000 60.000000 inf 1.000000 +uR 12300.000000 60.000000 inf 1.000000 +uR 12325.000000 60.000000 inf 1.000000 +uR 12350.000000 60.000000 inf 1.000000 +uR 12375.000000 60.000000 inf 1.000000 +uR 12400.000000 60.000000 inf 1.000000 +uR 12425.000000 60.000000 inf 1.000000 +uR 12450.000000 60.000000 inf 1.000000 +uR 12475.000000 60.000000 inf 1.000000 +uR 12500.000000 60.000000 inf 1.000000 +uR 12525.000000 60.000000 inf 1.000000 +uR 12550.000000 60.000000 inf 1.000000 +uR 12575.000000 60.000000 inf 1.000000 +uR 12600.000000 60.000000 inf 1.000000 +uR 12625.000000 60.000000 inf 1.000000 +uR 12650.000000 60.000000 inf 1.000000 +uR 12675.000000 60.000000 inf 1.000000 +uR 12700.000000 60.000000 inf 1.000000 +uR 12725.000000 60.000000 inf 1.000000 +uR 12750.000000 60.000000 inf 1.000000 +uR 12775.000000 60.000000 inf 1.000000 +uR 12800.000000 60.000000 inf 1.000000 +uR 12825.000000 60.000000 inf 1.000000 +uR 12850.000000 60.000000 inf 1.000000 +uR 12875.000000 60.000000 inf 1.000000 +uR 12900.000000 60.000000 inf 1.000000 +uR 12925.000000 60.000000 inf 1.000000 +uR 12950.000000 60.000000 inf 1.000000 +uR 12975.000000 60.000000 inf 1.000000 +uR 13000.000000 60.000000 inf 1.000000 +uR 13025.000000 60.000000 inf 1.000000 +uR 13050.000000 60.000000 inf 1.000000 +uR 13075.000000 60.000000 inf 1.000000 +uR 13100.000000 60.000000 inf 1.000000 +uR 13125.000000 60.000000 inf 1.000000 +uR 13150.000000 60.000000 inf 1.000000 +uR 13175.000000 60.000000 inf 1.000000 +uR 13200.000000 60.000000 inf 1.000000 +uR 13225.000000 60.000000 inf 1.000000 +uR 13250.000000 60.000000 inf 1.000000 +uR 13275.000000 60.000000 inf 1.000000 +uR 13300.000000 60.000000 inf 1.000000 +uR 13325.000000 60.000000 inf 1.000000 +uR 13350.000000 60.000000 inf 1.000000 +uR 13375.000000 60.000000 inf 1.000000 +uR 13400.000000 60.000000 inf 1.000000 +uR 13425.000000 60.000000 inf 1.000000 +uR 13450.000000 60.000000 inf 1.000000 +uR 13475.000000 60.000000 inf 1.000000 +uR 13500.000000 60.000000 inf 1.000000 +uR 13525.000000 60.000000 inf 1.000000 +uR 13550.000000 60.000000 inf 1.000000 +uR 13575.000000 60.000000 inf 1.000000 +uR 13600.000000 60.000000 inf 1.000000 +uR 13625.000000 60.000000 inf 1.000000 +uR 13650.000000 60.000000 inf 1.000000 +uR 13675.000000 60.000000 inf 1.000000 +uR 13700.000000 60.000000 inf 1.000000 +uR 13725.000000 60.000000 inf 1.000000 +uR 13750.000000 60.000000 inf 1.000000 +uR 13775.000000 60.000000 inf 1.000000 +uR 13800.000000 60.000000 inf 1.000000 +uR 13825.000000 60.000000 inf 1.000000 +uR 13850.000000 60.000000 inf 1.000000 +uR 13875.000000 60.000000 inf 1.000000 +uR 13900.000000 60.000000 inf 1.000000 +uR 13925.000000 60.000000 inf 1.000000 +uR 13950.000000 60.000000 inf 1.000000 +uR 13975.000000 60.000000 inf 1.000000 +uR 14000.000000 60.000000 inf 1.000000 +uR 14025.000000 60.000000 inf 1.000000 +uR 14050.000000 60.000000 inf 1.000000 +uR 14075.000000 60.000000 inf 1.000000 +uR 14100.000000 60.000000 inf 1.000000 +uR 14125.000000 60.000000 inf 1.000000 +uR 14150.000000 60.000000 inf 1.000000 +uR 14175.000000 60.000000 inf 1.000000 +uR 14200.000000 60.000000 inf 1.000000 +uR 14225.000000 60.000000 inf 1.000000 +uR 14250.000000 60.000000 inf 1.000000 +uR 14275.000000 60.000000 inf 1.000000 +uR 14300.000000 60.000000 inf 1.000000 +uR 14325.000000 60.000000 inf 1.000000 +uR 14350.000000 60.000000 inf 1.000000 +uR 14375.000000 60.000000 inf 1.000000 +uR 14400.000000 60.000000 inf 1.000000 +uR 14425.000000 60.000000 inf 1.000000 +uR 14450.000000 60.000000 inf 1.000000 +uR 14475.000000 60.000000 inf 1.000000 +uR 14500.000000 60.000000 inf 1.000000 +uR 14525.000000 60.000000 inf 1.000000 +uR 14550.000000 60.000000 inf 1.000000 +uR 14575.000000 60.000000 inf 1.000000 +uR 14600.000000 60.000000 inf 1.000000 +uR 14625.000000 60.000000 inf 1.000000 +uR 14650.000000 60.000000 inf 1.000000 +uR 14675.000000 60.000000 inf 1.000000 +uR 14700.000000 60.000000 inf 1.000000 +uR 14725.000000 60.000000 inf 1.000000 +uR 14750.000000 60.000000 inf 1.000000 +uR 14775.000000 60.000000 inf 1.000000 +uR 14800.000000 60.000000 inf 1.000000 +uR 14825.000000 60.000000 inf 1.000000 +uR 14850.000000 60.000000 inf 1.000000 +uR 14875.000000 60.000000 inf 1.000000 +uR 14900.000000 60.000000 inf 1.000000 +uR 14925.000000 60.000000 inf 1.000000 +uR 14950.000000 60.000000 inf 1.000000 +uR 14975.000000 60.000000 inf 1.000000 +uR 15000.000000 60.000000 inf 1.000000 +uR 15025.000000 60.000000 inf 1.000000 +uR 15050.000000 60.000000 inf 1.000000 +uR 15075.000000 60.000000 inf 1.000000 +uR 15100.000000 60.000000 inf 1.000000 +uR 15125.000000 60.000000 inf 1.000000 +uR 15150.000000 60.000000 inf 1.000000 +uR 15175.000000 60.000000 inf 1.000000 +uR 15200.000000 60.000000 inf 1.000000 +uR 15225.000000 60.000000 inf 1.000000 +uR 15250.000000 60.000000 inf 1.000000 +uR 15275.000000 60.000000 inf 1.000000 +uR 15300.000000 60.000000 inf 1.000000 +uR 15325.000000 60.000000 inf 1.000000 +uR 15350.000000 60.000000 inf 1.000000 +uR 15375.000000 60.000000 inf 1.000000 +uR 15400.000000 60.000000 inf 1.000000 +uR 15425.000000 60.000000 inf 1.000000 +uR 15450.000000 60.000000 inf 1.000000 +uR 15475.000000 60.000000 inf 1.000000 +uR 15500.000000 60.000000 inf 1.000000 +uR 15525.000000 60.000000 inf 1.000000 +uR 15550.000000 60.000000 inf 1.000000 +uR 15575.000000 60.000000 inf 1.000000 +uR 15600.000000 60.000000 inf 1.000000 +uR 15625.000000 60.000000 inf 1.000000 +uR 15650.000000 60.000000 inf 1.000000 +uR 15675.000000 60.000000 inf 1.000000 +uR 15700.000000 60.000000 inf 1.000000 +uR 15725.000000 60.000000 inf 1.000000 +uR 15750.000000 60.000000 inf 1.000000 +uR 15775.000000 60.000000 inf 1.000000 +uR 15800.000000 60.000000 inf 1.000000 +uR 15825.000000 60.000000 inf 1.000000 +uR 15850.000000 60.000000 inf 1.000000 +uR 15875.000000 60.000000 inf 1.000000 +uR 15900.000000 60.000000 inf 1.000000 +uR 15925.000000 60.000000 inf 1.000000 +uR 15950.000000 60.000000 inf 1.000000 +uR 15975.000000 60.000000 inf 1.000000 +uR 16000.000000 60.000000 inf 1.000000 +uR 16025.000000 60.000000 inf 1.000000 +uR 16050.000000 60.000000 inf 1.000000 +uR 16075.000000 60.000000 inf 1.000000 +uR 16100.000000 60.000000 inf 1.000000 +uR 16125.000000 60.000000 inf 1.000000 +uR 16150.000000 60.000000 inf 1.000000 +uR 16175.000000 60.000000 inf 1.000000 +uR 16200.000000 60.000000 inf 1.000000 +uR 16225.000000 60.000000 inf 1.000000 +uR 16250.000000 60.000000 inf 1.000000 +uR 16275.000000 60.000000 inf 1.000000 +uR 16300.000000 60.000000 inf 1.000000 +uR 16325.000000 60.000000 inf 1.000000 +uR 16350.000000 60.000000 inf 1.000000 +uR 16375.000000 60.000000 inf 1.000000 +uR 16400.000000 60.000000 inf 1.000000 +uR 16425.000000 60.000000 inf 1.000000 +uR 16450.000000 60.000000 inf 1.000000 +uR 16475.000000 60.000000 inf 1.000000 +uR 16500.000000 60.000000 inf 1.000000 +uR 16525.000000 60.000000 inf 1.000000 +uR 16550.000000 60.000000 inf 1.000000 +uR 16575.000000 60.000000 inf 1.000000 +uR 16600.000000 60.000000 inf 1.000000 +uR 16625.000000 60.000000 inf 1.000000 +uR 16650.000000 60.000000 inf 1.000000 +uR 16675.000000 60.000000 inf 1.000000 +uR 16700.000000 60.000000 inf 1.000000 +uR 16725.000000 60.000000 inf 1.000000 +uR 16750.000000 60.000000 inf 1.000000 +uR 16775.000000 60.000000 inf 1.000000 +uR 16800.000000 60.000000 inf 1.000000 +uR 16825.000000 60.000000 inf 1.000000 +uR 16850.000000 60.000000 inf 1.000000 +uR 16875.000000 60.000000 inf 1.000000 +uR 16900.000000 60.000000 inf 1.000000 +uR 16925.000000 60.000000 inf 1.000000 +uR 16950.000000 60.000000 inf 1.000000 +uR 16975.000000 60.000000 inf 1.000000 +uR 17000.000000 60.000000 inf 1.000000 +uR 1930.000000 70.000000 inf 1.000000 +uR 1940.000000 70.000000 inf 1.000000 +uR 1950.000000 70.000000 inf 1.000000 +uR 1960.000000 70.000000 inf 1.000000 +uR 1970.000000 70.000000 inf 1.000000 +uR 1980.000000 70.000000 inf 1.000000 +uR 1990.000000 70.000000 inf 1.000000 +uR 2000.000000 70.000000 inf 1.000000 +uR 2010.000000 70.000000 inf 1.000000 +uR 2020.000000 70.000000 inf 1.000000 +uR 2030.000000 70.000000 inf 1.000000 +uR 2040.000000 70.000000 inf 1.000000 +uR 2050.000000 70.000000 inf 1.000000 +uR 2060.000000 70.000000 inf 1.000000 +uR 2070.000000 70.000000 inf 1.000000 +uR 2080.000000 70.000000 inf 1.000000 +uR 2090.000000 70.000000 inf 1.000000 +uR 2100.000000 70.000000 inf 1.000000 +uR 2110.000000 70.000000 inf 1.000000 +uR 2120.000000 70.000000 inf 1.000000 +uR 2130.000000 70.000000 inf 1.000000 +uR 2140.000000 70.000000 inf 1.000000 +uR 2150.000000 70.000000 inf 1.000000 +uR 2160.000000 70.000000 inf 1.000000 +uR 2170.000000 70.000000 inf 1.000000 +uR 2180.000000 70.000000 inf 1.000000 +uR 2190.000000 70.000000 inf 1.000000 +uR 2200.000000 70.000000 inf 1.000000 +uR 2210.000000 70.000000 inf 1.000000 +uR 2220.000000 70.000000 inf 1.000000 +uR 2230.000000 70.000000 inf 1.000000 +uR 2240.000000 70.000000 inf 1.000000 +uR 2250.000000 70.000000 inf 1.000000 +uR 2260.000000 70.000000 inf 1.000000 +uR 2270.000000 70.000000 inf 1.000000 +uR 2280.000000 70.000000 inf 1.000000 +uR 2290.000000 70.000000 inf 1.000000 +uR 2300.000000 70.000000 inf 1.000000 +uR 2310.000000 70.000000 inf 1.000000 +uR 2320.000000 70.000000 inf 1.000000 +uR 2330.000000 70.000000 inf 1.000000 +uR 2340.000000 70.000000 inf 1.000000 +uR 2350.000000 70.000000 inf 1.000000 +uR 2360.000000 70.000000 inf 1.000000 +uR 2370.000000 70.000000 inf 1.000000 +uR 2380.000000 70.000000 inf 1.000000 +uR 2390.000000 70.000000 inf 1.000000 +uR 2400.000000 70.000000 inf 1.000000 +uR 2410.000000 70.000000 inf 1.000000 +uR 2420.000000 70.000000 inf 1.000000 +uR 2430.000000 70.000000 inf 1.000000 +uR 2440.000000 70.000000 inf 1.000000 +uR 2450.000000 70.000000 inf 1.000000 +uR 2460.000000 70.000000 inf 1.000000 +uR 2470.000000 70.000000 inf 1.000000 +uR 2480.000000 70.000000 inf 1.000000 +uR 2490.000000 70.000000 inf 1.000000 +uR 2500.000000 70.000000 inf 1.000000 +uR 2510.000000 70.000000 inf 1.000000 +uR 2520.000000 70.000000 inf 1.000000 +uR 2530.000000 70.000000 inf 1.000000 +uR 2540.000000 70.000000 inf 1.000000 +uR 2550.000000 70.000000 inf 1.000000 +uR 2560.000000 70.000000 inf 1.000000 +uR 2570.000000 70.000000 inf 1.000000 +uR 2580.000000 70.000000 inf 1.000000 +uR 2590.000000 70.000000 inf 1.000000 +uR 2600.000000 70.000000 inf 1.000000 +uR 2610.000000 70.000000 inf 1.000000 +uR 2620.000000 70.000000 inf 1.000000 +uR 2630.000000 70.000000 inf 1.000000 +uR 2640.000000 70.000000 inf 1.000000 +uR 2650.000000 70.000000 inf 1.000000 +uR 2660.000000 70.000000 inf 1.000000 +uR 2670.000000 70.000000 inf 1.000000 +uR 2680.000000 70.000000 inf 1.000000 +uR 2690.000000 70.000000 inf 1.000000 +uR 2700.000000 70.000000 inf 1.000000 +uR 2710.000000 70.000000 inf 1.000000 +uR 2720.000000 70.000000 inf 1.000000 +uR 2730.000000 70.000000 inf 1.000000 +uR 2740.000000 70.000000 inf 1.000000 +uR 2750.000000 70.000000 inf 1.000000 +uR 2760.000000 70.000000 inf 1.000000 +uR 2770.000000 70.000000 inf 1.000000 +uR 2780.000000 70.000000 inf 1.000000 +uR 2790.000000 70.000000 inf 1.000000 +uR 2800.000000 70.000000 inf 1.000000 +uR 2810.000000 70.000000 inf 1.000000 +uR 2820.000000 70.000000 inf 1.000000 +uR 2830.000000 70.000000 inf 1.000000 +uR 2840.000000 70.000000 inf 1.000000 +uR 2850.000000 70.000000 inf 1.000000 +uR 2860.000000 70.000000 inf 1.000000 +uR 2870.000000 70.000000 inf 1.000000 +uR 2880.000000 70.000000 inf 1.000000 +uR 2890.000000 70.000000 inf 1.000000 +uR 2900.000000 70.000000 inf 1.000000 +uR 2910.000000 70.000000 inf 1.000000 +uR 2920.000000 70.000000 inf 1.000000 +uR 2930.000000 70.000000 inf 1.000000 +uR 2940.000000 70.000000 inf 1.000000 +uR 2950.000000 70.000000 inf 1.000000 +uR 2960.000000 70.000000 inf 1.000000 +uR 2970.000000 70.000000 inf 1.000000 +uR 2980.000000 70.000000 inf 1.000000 +uR 2990.000000 70.000000 inf 1.000000 +uR 3000.000000 70.000000 inf 1.000000 +uR 3010.000000 70.000000 inf 1.000000 +uR 3020.000000 70.000000 inf 1.000000 +uR 3030.000000 70.000000 inf 1.000000 +uR 3040.000000 70.000000 inf 1.000000 +uR 3050.000000 70.000000 inf 1.000000 +uR 3060.000000 70.000000 inf 1.000000 +uR 3070.000000 70.000000 inf 1.000000 +uR 3080.000000 70.000000 inf 1.000000 +uR 3090.000000 70.000000 inf 1.000000 +uR 3100.000000 70.000000 inf 1.000000 +uR 3110.000000 70.000000 inf 1.000000 +uR 3120.000000 70.000000 inf 1.000000 +uR 3130.000000 70.000000 inf 1.000000 +uR 3140.000000 70.000000 inf 1.000000 +uR 3150.000000 70.000000 inf 1.000000 +uR 3160.000000 70.000000 inf 1.000000 +uR 3170.000000 70.000000 inf 1.000000 +uR 3180.000000 70.000000 inf 1.000000 +uR 3190.000000 70.000000 inf 1.000000 +uR 3200.000000 70.000000 inf 1.000000 +uR 3210.000000 70.000000 inf 1.000000 +uR 3220.000000 70.000000 inf 1.000000 +uR 3230.000000 70.000000 inf 1.000000 +uR 3240.000000 70.000000 inf 1.000000 +uR 3250.000000 70.000000 inf 1.000000 +uR 3260.000000 70.000000 inf 1.000000 +uR 3270.000000 70.000000 inf 1.000000 +uR 3280.000000 70.000000 inf 1.000000 +uR 3290.000000 70.000000 inf 1.000000 +uR 3300.000000 70.000000 inf 1.000000 +uR 3310.000000 70.000000 inf 1.000000 +uR 3320.000000 70.000000 inf 1.000000 +uR 3330.000000 70.000000 inf 1.000000 +uR 3340.000000 70.000000 inf 1.000000 +uR 3350.000000 70.000000 inf 1.000000 +uR 3360.000000 70.000000 inf 1.000000 +uR 3370.000000 70.000000 inf 1.000000 +uR 3380.000000 70.000000 inf 1.000000 +uR 3390.000000 70.000000 inf 1.000000 +uR 3400.000000 70.000000 inf 1.000000 +uR 3410.000000 70.000000 inf 1.000000 +uR 3420.000000 70.000000 inf 1.000000 +uR 3430.000000 70.000000 inf 1.000000 +uR 3440.000000 70.000000 inf 1.000000 +uR 3450.000000 70.000000 inf 1.000000 +uR 3460.000000 70.000000 inf 1.000000 +uR 3470.000000 70.000000 inf 1.000000 +uR 3480.000000 70.000000 inf 1.000000 +uR 3490.000000 70.000000 inf 1.000000 +uR 3500.000000 70.000000 inf 1.000000 +uR 3510.000000 70.000000 inf 1.000000 +uR 3520.000000 70.000000 inf 1.000000 +uR 3530.000000 70.000000 inf 1.000000 +uR 3540.000000 70.000000 inf 1.000000 +uR 3550.000000 70.000000 inf 1.000000 +uR 3560.000000 70.000000 inf 1.000000 +uR 3570.000000 70.000000 inf 1.000000 +uR 3580.000000 70.000000 inf 1.000000 +uR 3590.000000 70.000000 inf 1.000000 +uR 3600.000000 70.000000 inf 1.000000 +uR 3610.000000 70.000000 inf 1.000000 +uR 3620.000000 70.000000 inf 1.000000 +uR 3630.000000 70.000000 inf 1.000000 +uR 3640.000000 70.000000 inf 1.000000 +uR 3650.000000 70.000000 inf 1.000000 +uR 3660.000000 70.000000 inf 1.000000 +uR 3670.000000 70.000000 inf 1.000000 +uR 3680.000000 70.000000 inf 1.000000 +uR 3690.000000 70.000000 inf 1.000000 +uR 3700.000000 70.000000 inf 1.000000 +uR 3710.000000 70.000000 inf 1.000000 +uR 3720.000000 70.000000 inf 1.000000 +uR 3730.000000 70.000000 inf 1.000000 +uR 3740.000000 70.000000 inf 1.000000 +uR 3750.000000 70.000000 inf 1.000000 +uR 3760.000000 70.000000 inf 1.000000 +uR 3770.000000 70.000000 inf 1.000000 +uR 3780.000000 70.000000 inf 1.000000 +uR 3790.000000 70.000000 inf 1.000000 +uR 3800.000000 70.000000 inf 1.000000 +uR 3810.000000 70.000000 inf 1.000000 +uR 3820.000000 70.000000 inf 1.000000 +uR 3830.000000 70.000000 inf 1.000000 +uR 3840.000000 70.000000 inf 1.000000 +uR 3850.000000 70.000000 inf 1.000000 +uR 3860.000000 70.000000 inf 1.000000 +uR 3870.000000 70.000000 inf 1.000000 +uR 3880.000000 70.000000 inf 1.000000 +uR 3890.000000 70.000000 inf 1.000000 +uR 3900.000000 70.000000 inf 1.000000 +uR 3910.000000 70.000000 inf 1.000000 +uR 3920.000000 70.000000 inf 1.000000 +uR 3930.000000 70.000000 inf 1.000000 +uR 3940.000000 70.000000 inf 1.000000 +uR 3950.000000 70.000000 inf 1.000000 +uR 3960.000000 70.000000 inf 1.000000 +uR 3970.000000 70.000000 inf 1.000000 +uR 3980.000000 70.000000 inf 1.000000 +uR 3990.000000 70.000000 inf 1.000000 +uR 4000.000000 70.000000 inf 1.000000 +uR 4010.000000 70.000000 inf 1.000000 +uR 4020.000000 70.000000 inf 1.000000 +uR 4030.000000 70.000000 inf 1.000000 +uR 4040.000000 70.000000 inf 1.000000 +uR 4050.000000 70.000000 inf 1.000000 +uR 4060.000000 70.000000 inf 1.000000 +uR 4070.000000 70.000000 inf 1.000000 +uR 4080.000000 70.000000 inf 1.000000 +uR 4090.000000 70.000000 inf 1.000000 +uR 4100.000000 70.000000 inf 1.000000 +uR 4110.000000 70.000000 inf 1.000000 +uR 4120.000000 70.000000 inf 1.000000 +uR 4130.000000 70.000000 inf 1.000000 +uR 4140.000000 70.000000 inf 1.000000 +uR 4150.000000 70.000000 inf 1.000000 +uR 4160.000000 70.000000 inf 1.000000 +uR 4170.000000 70.000000 inf 1.000000 +uR 4180.000000 70.000000 inf 1.000000 +uR 4190.000000 70.000000 inf 1.000000 +uR 4200.000000 70.000000 inf 1.000000 +uR 4210.000000 70.000000 inf 1.000000 +uR 4220.000000 70.000000 inf 1.000000 +uR 4230.000000 70.000000 inf 1.000000 +uR 4240.000000 70.000000 inf 1.000000 +uR 4250.000000 70.000000 inf 1.000000 +uR 4260.000000 70.000000 inf 1.000000 +uR 4270.000000 70.000000 inf 1.000000 +uR 4280.000000 70.000000 inf 1.000000 +uR 4290.000000 70.000000 inf 1.000000 +uR 4300.000000 70.000000 inf 1.000000 +uR 4310.000000 70.000000 inf 1.000000 +uR 4320.000000 70.000000 inf 1.000000 +uR 4330.000000 70.000000 inf 1.000000 +uR 4340.000000 70.000000 inf 1.000000 +uR 4350.000000 70.000000 inf 1.000000 +uR 4360.000000 70.000000 inf 1.000000 +uR 4370.000000 70.000000 inf 1.000000 +uR 4380.000000 70.000000 inf 1.000000 +uR 4390.000000 70.000000 inf 1.000000 +uR 4400.000000 70.000000 inf 1.000000 +uR 4410.000000 70.000000 inf 1.000000 +uR 4420.000000 70.000000 inf 1.000000 +uR 4430.000000 70.000000 inf 1.000000 +uR 4440.000000 70.000000 inf 1.000000 +uR 4450.000000 70.000000 inf 1.000000 +uR 4460.000000 70.000000 inf 1.000000 +uR 4470.000000 70.000000 inf 1.000000 +uR 4480.000000 70.000000 inf 1.000000 +uR 4490.000000 70.000000 inf 1.000000 +uR 4500.000000 70.000000 inf 1.000000 +uR 4510.000000 70.000000 inf 1.000000 +uR 4520.000000 70.000000 inf 1.000000 +uR 4530.000000 70.000000 inf 1.000000 +uR 4540.000000 70.000000 inf 1.000000 +uR 4550.000000 70.000000 inf 1.000000 +uR 4560.000000 70.000000 inf 1.000000 +uR 4570.000000 70.000000 inf 1.000000 +uR 4580.000000 70.000000 inf 1.000000 +uR 4590.000000 70.000000 inf 1.000000 +uR 4600.000000 70.000000 inf 1.000000 +uR 4610.000000 70.000000 inf 1.000000 +uR 4620.000000 70.000000 inf 1.000000 +uR 4630.000000 70.000000 inf 1.000000 +uR 4640.000000 70.000000 inf 1.000000 +uR 4650.000000 70.000000 inf 1.000000 +uR 4660.000000 70.000000 inf 1.000000 +uR 4670.000000 70.000000 inf 1.000000 +uR 4680.000000 70.000000 inf 1.000000 +uR 4690.000000 70.000000 inf 1.000000 +uR 4700.000000 70.000000 inf 1.000000 +uR 4710.000000 70.000000 inf 1.000000 +uR 4720.000000 70.000000 inf 1.000000 +uR 4730.000000 70.000000 inf 1.000000 +uR 4740.000000 70.000000 inf 1.000000 +uR 4750.000000 70.000000 inf 1.000000 +uR 4760.000000 70.000000 inf 1.000000 +uR 4770.000000 70.000000 inf 1.000000 +uR 4780.000000 70.000000 inf 1.000000 +uR 4790.000000 70.000000 inf 1.000000 +uR 4800.000000 70.000000 inf 1.000000 +uR 4810.000000 70.000000 inf 1.000000 +uR 4820.000000 70.000000 inf 1.000000 +uR 4830.000000 70.000000 inf 1.000000 +uR 4840.000000 70.000000 inf 1.000000 +uR 4850.000000 70.000000 inf 1.000000 +uR 4860.000000 70.000000 inf 1.000000 +uR 4870.000000 70.000000 inf 1.000000 +uR 4880.000000 70.000000 inf 1.000000 +uR 4890.000000 70.000000 inf 1.000000 +uR 4900.000000 70.000000 inf 1.000000 +uR 4910.000000 70.000000 inf 1.000000 +uR 4920.000000 70.000000 inf 1.000000 +uR 4930.000000 70.000000 inf 1.000000 +uR 4940.000000 70.000000 inf 1.000000 +uR 4950.000000 70.000000 inf 1.000000 +uR 4960.000000 70.000000 inf 1.000000 +uR 4970.000000 70.000000 inf 1.000000 +uR 4980.000000 70.000000 inf 1.000000 +uR 4990.000000 70.000000 inf 1.000000 +uR 5000.000000 70.000000 inf 1.000000 +uR 5010.000000 70.000000 inf 1.000000 +uR 5020.000000 70.000000 inf 1.000000 +uR 5030.000000 70.000000 inf 1.000000 +uR 5040.000000 70.000000 inf 1.000000 +uR 5050.000000 70.000000 inf 1.000000 +uR 5060.000000 70.000000 inf 1.000000 +uR 5070.000000 70.000000 inf 1.000000 +uR 5080.000000 70.000000 inf 1.000000 +uR 5090.000000 70.000000 inf 1.000000 +uR 5100.000000 70.000000 inf 1.000000 +uR 5110.000000 70.000000 inf 1.000000 +uR 5120.000000 70.000000 inf 1.000000 +uR 5130.000000 70.000000 inf 1.000000 +uR 5140.000000 70.000000 inf 1.000000 +uR 5150.000000 70.000000 inf 1.000000 +uR 5160.000000 70.000000 inf 1.000000 +uR 5170.000000 70.000000 inf 1.000000 +uR 5180.000000 70.000000 inf 1.000000 +uR 5190.000000 70.000000 inf 1.000000 +uR 5200.000000 70.000000 inf 1.000000 +uR 5210.000000 70.000000 inf 1.000000 +uR 5220.000000 70.000000 inf 1.000000 +uR 5230.000000 70.000000 inf 1.000000 +uR 5240.000000 70.000000 inf 1.000000 +uR 5250.000000 70.000000 inf 1.000000 +uR 5260.000000 70.000000 inf 1.000000 +uR 5270.000000 70.000000 inf 1.000000 +uR 5280.000000 70.000000 inf 1.000000 +uR 5290.000000 70.000000 inf 1.000000 +uR 5300.000000 70.000000 inf 1.000000 +uR 5310.000000 70.000000 inf 1.000000 +uR 5320.000000 70.000000 inf 1.000000 +uR 5330.000000 70.000000 inf 1.000000 +uR 5340.000000 70.000000 inf 1.000000 +uR 5350.000000 70.000000 inf 1.000000 +uR 5360.000000 70.000000 inf 1.000000 +uR 5370.000000 70.000000 inf 1.000000 +uR 5380.000000 70.000000 inf 1.000000 +uR 5390.000000 70.000000 inf 1.000000 +uR 5400.000000 70.000000 inf 1.000000 +uR 5410.000000 70.000000 inf 1.000000 +uR 5420.000000 70.000000 inf 1.000000 +uR 5430.000000 70.000000 inf 1.000000 +uR 5440.000000 70.000000 inf 1.000000 +uR 5450.000000 70.000000 inf 1.000000 +uR 5460.000000 70.000000 inf 1.000000 +uR 5470.000000 70.000000 inf 1.000000 +uR 5480.000000 70.000000 inf 1.000000 +uR 5490.000000 70.000000 inf 1.000000 +uR 5500.000000 70.000000 inf 1.000000 +uR 5510.000000 70.000000 inf 1.000000 +uR 5520.000000 70.000000 inf 1.000000 +uR 5530.000000 70.000000 inf 1.000000 +uR 5540.000000 70.000000 inf 1.000000 +uR 5550.000000 70.000000 inf 1.000000 +uR 5560.000000 70.000000 inf 1.000000 +uR 5570.000000 70.000000 inf 1.000000 +uR 5580.000000 70.000000 inf 1.000000 +uR 5590.000000 70.000000 inf 1.000000 +uR 5600.000000 70.000000 inf 1.000000 +uR 5610.000000 70.000000 inf 1.000000 +uR 5620.000000 70.000000 inf 1.000000 +uR 5630.000000 70.000000 inf 1.000000 +uR 5640.000000 70.000000 inf 1.000000 +uR 5650.000000 70.000000 inf 1.000000 +uR 5660.000000 70.000000 inf 1.000000 +uR 5670.000000 70.000000 inf 1.000000 +uR 5680.000000 70.000000 inf 1.000000 +uR 5690.000000 70.000000 inf 1.000000 +uR 5700.000000 70.000000 inf 1.000000 +uR 5710.000000 70.000000 inf 1.000000 +uR 5720.000000 70.000000 inf 1.000000 +uR 5730.000000 70.000000 inf 1.000000 +uR 5740.000000 70.000000 inf 1.000000 +uR 5750.000000 70.000000 inf 1.000000 +uR 5760.000000 70.000000 inf 1.000000 +uR 5770.000000 70.000000 inf 1.000000 +uR 5780.000000 70.000000 inf 1.000000 +uR 5790.000000 70.000000 inf 1.000000 +uR 5800.000000 70.000000 inf 1.000000 +uR 5810.000000 70.000000 inf 1.000000 +uR 5820.000000 70.000000 inf 1.000000 +uR 5830.000000 70.000000 inf 1.000000 +uR 5840.000000 70.000000 inf 1.000000 +uR 5850.000000 70.000000 inf 1.000000 +uR 5860.000000 70.000000 inf 1.000000 +uR 5870.000000 70.000000 inf 1.000000 +uR 5880.000000 70.000000 inf 1.000000 +uR 5890.000000 70.000000 inf 1.000000 +uR 5900.000000 70.000000 inf 1.000000 +uR 5910.000000 70.000000 inf 1.000000 +uR 5920.000000 70.000000 inf 1.000000 +uR 5930.000000 70.000000 inf 1.000000 +uR 5940.000000 70.000000 inf 1.000000 +uR 5950.000000 70.000000 inf 1.000000 +uR 5960.000000 70.000000 inf 1.000000 +uR 5970.000000 70.000000 inf 1.000000 +uR 5980.000000 70.000000 inf 1.000000 +uR 5990.000000 70.000000 inf 1.000000 +uR 6000.000000 70.000000 inf 1.000000 +uR 6010.000000 70.000000 inf 1.000000 +uR 6020.000000 70.000000 inf 1.000000 +uR 6030.000000 70.000000 inf 1.000000 +uR 6040.000000 70.000000 inf 1.000000 +uR 6050.000000 70.000000 inf 1.000000 +uR 6060.000000 70.000000 inf 1.000000 +uR 6070.000000 70.000000 inf 1.000000 +uR 6080.000000 70.000000 inf 1.000000 +uR 6090.000000 70.000000 inf 1.000000 +uR 6100.000000 70.000000 inf 1.000000 +uR 6110.000000 70.000000 inf 1.000000 +uR 6120.000000 70.000000 inf 1.000000 +uR 6130.000000 70.000000 inf 1.000000 +uR 6140.000000 70.000000 inf 1.000000 +uR 6150.000000 70.000000 inf 1.000000 +uR 6160.000000 70.000000 inf 1.000000 +uR 6170.000000 70.000000 inf 1.000000 +uR 6180.000000 70.000000 inf 1.000000 +uR 6190.000000 70.000000 inf 1.000000 +uR 6200.000000 70.000000 inf 1.000000 +uR 6210.000000 70.000000 inf 1.000000 +uR 6220.000000 70.000000 inf 1.000000 +uR 6230.000000 70.000000 inf 1.000000 +uR 6240.000000 70.000000 inf 1.000000 +uR 6250.000000 70.000000 inf 1.000000 +uR 6260.000000 70.000000 inf 1.000000 +uR 6270.000000 70.000000 inf 1.000000 +uR 6280.000000 70.000000 inf 1.000000 +uR 6290.000000 70.000000 inf 1.000000 +uR 6300.000000 70.000000 inf 1.000000 +uR 6310.000000 70.000000 inf 1.000000 +uR 6320.000000 70.000000 inf 1.000000 +uR 6330.000000 70.000000 inf 1.000000 +uR 6340.000000 70.000000 inf 1.000000 +uR 6350.000000 70.000000 inf 1.000000 +uR 6360.000000 70.000000 inf 1.000000 +uR 6370.000000 70.000000 inf 1.000000 +uR 6380.000000 70.000000 inf 1.000000 +uR 6390.000000 70.000000 inf 1.000000 +uR 6400.000000 70.000000 inf 1.000000 +uR 6410.000000 70.000000 inf 1.000000 +uR 6420.000000 70.000000 inf 1.000000 +uR 6430.000000 70.000000 inf 1.000000 +uR 6440.000000 70.000000 inf 1.000000 +uR 6450.000000 70.000000 inf 1.000000 +uR 6460.000000 70.000000 inf 1.000000 +uR 6470.000000 70.000000 inf 1.000000 +uR 6480.000000 70.000000 inf 1.000000 +uR 6490.000000 70.000000 inf 1.000000 +uR 6500.000000 70.000000 inf 1.000000 +uR 6510.000000 70.000000 inf 1.000000 +uR 6520.000000 70.000000 inf 1.000000 +uR 6530.000000 70.000000 inf 1.000000 +uR 6540.000000 70.000000 inf 1.000000 +uR 6550.000000 70.000000 inf 1.000000 +uR 6560.000000 70.000000 inf 1.000000 +uR 6570.000000 70.000000 inf 1.000000 +uR 6580.000000 70.000000 inf 1.000000 +uR 6590.000000 70.000000 inf 1.000000 +uR 6600.000000 70.000000 inf 1.000000 +uR 6610.000000 70.000000 inf 1.000000 +uR 6620.000000 70.000000 inf 1.000000 +uR 6630.000000 70.000000 inf 1.000000 +uR 6640.000000 70.000000 inf 1.000000 +uR 6650.000000 70.000000 inf 1.000000 +uR 6660.000000 70.000000 inf 1.000000 +uR 6670.000000 70.000000 inf 1.000000 +uR 6680.000000 70.000000 inf 1.000000 +uR 6690.000000 70.000000 inf 1.000000 +uR 6700.000000 70.000000 inf 1.000000 +uR 6710.000000 70.000000 inf 1.000000 +uR 6720.000000 70.000000 inf 1.000000 +uR 6730.000000 70.000000 inf 1.000000 +uR 6740.000000 70.000000 inf 1.000000 +uR 6750.000000 70.000000 inf 1.000000 +uR 6760.000000 70.000000 inf 1.000000 +uR 6770.000000 70.000000 inf 1.000000 +uR 6780.000000 70.000000 inf 1.000000 +uR 6790.000000 70.000000 inf 1.000000 +uR 6800.000000 70.000000 inf 1.000000 +uR 6810.000000 70.000000 inf 1.000000 +uR 6820.000000 70.000000 inf 1.000000 +uR 6830.000000 70.000000 inf 1.000000 +uR 6840.000000 70.000000 inf 1.000000 +uR 6850.000000 70.000000 inf 1.000000 +uR 6860.000000 70.000000 inf 1.000000 +uR 6870.000000 70.000000 inf 1.000000 +uR 6880.000000 70.000000 inf 1.000000 +uR 6890.000000 70.000000 inf 1.000000 +uR 6900.000000 70.000000 inf 1.000000 +uR 6910.000000 70.000000 inf 1.000000 +uR 6920.000000 70.000000 inf 1.000000 +uR 6930.000000 70.000000 inf 1.000000 +uR 6940.000000 70.000000 inf 1.000000 +uR 6950.000000 70.000000 inf 1.000000 +uR 6960.000000 70.000000 inf 1.000000 +uR 6970.000000 70.000000 inf 1.000000 +uR 6980.000000 70.000000 inf 1.000000 +uR 6990.000000 70.000000 inf 1.000000 +uR 7000.000000 70.000000 inf 1.000000 +uR 7010.000000 70.000000 inf 1.000000 +uR 7020.000000 70.000000 inf 1.000000 +uR 7030.000000 70.000000 inf 1.000000 +uR 7040.000000 70.000000 inf 1.000000 +uR 7050.000000 70.000000 inf 1.000000 +uR 7060.000000 70.000000 inf 1.000000 +uR 7070.000000 70.000000 inf 1.000000 +uR 7080.000000 70.000000 inf 1.000000 +uR 7090.000000 70.000000 inf 1.000000 +uR 7100.000000 70.000000 inf 1.000000 +uR 7110.000000 70.000000 inf 1.000000 +uR 7120.000000 70.000000 inf 1.000000 +uR 7130.000000 70.000000 inf 1.000000 +uR 7140.000000 70.000000 inf 1.000000 +uR 7150.000000 70.000000 inf 1.000000 +uR 7160.000000 70.000000 inf 1.000000 +uR 7170.000000 70.000000 inf 1.000000 +uR 7180.000000 70.000000 inf 1.000000 +uR 7190.000000 70.000000 inf 1.000000 +uR 7200.000000 70.000000 inf 1.000000 +uR 7210.000000 70.000000 inf 1.000000 +uR 7220.000000 70.000000 inf 1.000000 +uR 7230.000000 70.000000 inf 1.000000 +uR 7240.000000 70.000000 inf 1.000000 +uR 7250.000000 70.000000 inf 1.000000 +uR 7260.000000 70.000000 inf 1.000000 +uR 7270.000000 70.000000 inf 1.000000 +uR 7280.000000 70.000000 inf 1.000000 +uR 7290.000000 70.000000 inf 1.000000 +uR 7300.000000 70.000000 inf 1.000000 +uR 7310.000000 70.000000 inf 1.000000 +uR 7320.000000 70.000000 inf 1.000000 +uR 7330.000000 70.000000 inf 1.000000 +uR 7340.000000 70.000000 inf 1.000000 +uR 7350.000000 70.000000 inf 1.000000 +uR 7360.000000 70.000000 inf 1.000000 +uR 7370.000000 70.000000 inf 1.000000 +uR 7380.000000 70.000000 inf 1.000000 +uR 7390.000000 70.000000 inf 1.000000 +uR 7400.000000 70.000000 inf 1.000000 +uR 7410.000000 70.000000 inf 1.000000 +uR 7420.000000 70.000000 inf 1.000000 +uR 7430.000000 70.000000 inf 1.000000 +uR 7440.000000 70.000000 inf 1.000000 +uR 7450.000000 70.000000 inf 1.000000 +uR 7460.000000 70.000000 inf 1.000000 +uR 7470.000000 70.000000 inf 1.000000 +uR 7480.000000 70.000000 inf 1.000000 +uR 7490.000000 70.000000 inf 1.000000 +uR 7500.000000 70.000000 inf 1.000000 +uR 7510.000000 70.000000 inf 1.000000 +uR 7520.000000 70.000000 inf 1.000000 +uR 7530.000000 70.000000 inf 1.000000 +uR 7540.000000 70.000000 inf 1.000000 +uR 7550.000000 70.000000 inf 1.000000 +uR 7560.000000 70.000000 inf 1.000000 +uR 7570.000000 70.000000 inf 1.000000 +uR 7580.000000 70.000000 inf 1.000000 +uR 7590.000000 70.000000 inf 1.000000 +uR 7600.000000 70.000000 inf 1.000000 +uR 7610.000000 70.000000 inf 1.000000 +uR 7620.000000 70.000000 inf 1.000000 +uR 7630.000000 70.000000 inf 1.000000 +uR 7640.000000 70.000000 inf 1.000000 +uR 7650.000000 70.000000 inf 1.000000 +uR 7660.000000 70.000000 inf 1.000000 +uR 7670.000000 70.000000 inf 1.000000 +uR 7680.000000 70.000000 inf 1.000000 +uR 7690.000000 70.000000 inf 1.000000 +uR 7700.000000 70.000000 inf 1.000000 +uR 7710.000000 70.000000 inf 1.000000 +uR 7720.000000 70.000000 inf 1.000000 +uR 7730.000000 70.000000 inf 1.000000 +uR 7740.000000 70.000000 inf 1.000000 +uR 7750.000000 70.000000 inf 1.000000 +uR 7760.000000 70.000000 inf 1.000000 +uR 7770.000000 70.000000 inf 1.000000 +uR 7780.000000 70.000000 inf 1.000000 +uR 7790.000000 70.000000 inf 1.000000 +uR 7800.000000 70.000000 inf 1.000000 +uR 7810.000000 70.000000 inf 1.000000 +uR 7820.000000 70.000000 inf 1.000000 +uR 7830.000000 70.000000 inf 1.000000 +uR 7840.000000 70.000000 inf 1.000000 +uR 7850.000000 70.000000 inf 1.000000 +uR 7860.000000 70.000000 inf 1.000000 +uR 7870.000000 70.000000 inf 1.000000 +uR 7880.000000 70.000000 inf 1.000000 +uR 7890.000000 70.000000 inf 1.000000 +uR 7900.000000 70.000000 inf 1.000000 +uR 7910.000000 70.000000 inf 1.000000 +uR 7920.000000 70.000000 inf 1.000000 +uR 7930.000000 70.000000 inf 1.000000 +uR 7940.000000 70.000000 inf 1.000000 +uR 7950.000000 70.000000 inf 1.000000 +uR 7960.000000 70.000000 inf 1.000000 +uR 7970.000000 70.000000 inf 1.000000 +uR 7980.000000 70.000000 inf 1.000000 +uR 7990.000000 70.000000 inf 1.000000 +uR 8000.000000 70.000000 inf 1.000000 +uR 8010.000000 70.000000 inf 1.000000 +uR 8020.000000 70.000000 inf 1.000000 +uR 8030.000000 70.000000 inf 1.000000 +uR 8040.000000 70.000000 inf 1.000000 +uR 8050.000000 70.000000 inf 1.000000 +uR 8060.000000 70.000000 inf 1.000000 +uR 8070.000000 70.000000 inf 1.000000 +uR 8080.000000 70.000000 inf 1.000000 +uR 8090.000000 70.000000 inf 1.000000 +uR 8100.000000 70.000000 inf 1.000000 +uR 8110.000000 70.000000 inf 1.000000 +uR 8120.000000 70.000000 inf 1.000000 +uR 8130.000000 70.000000 inf 1.000000 +uR 8140.000000 70.000000 inf 1.000000 +uR 8150.000000 70.000000 inf 1.000000 +uR 8160.000000 70.000000 inf 1.000000 +uR 8170.000000 70.000000 inf 1.000000 +uR 8180.000000 70.000000 inf 1.000000 +uR 8190.000000 70.000000 inf 1.000000 +uR 8200.000000 70.000000 inf 1.000000 +uR 8210.000000 70.000000 inf 1.000000 +uR 8220.000000 70.000000 inf 1.000000 +uR 8230.000000 70.000000 inf 1.000000 +uR 8240.000000 70.000000 inf 1.000000 +uR 8250.000000 70.000000 inf 1.000000 +uR 8260.000000 70.000000 inf 1.000000 +uR 8270.000000 70.000000 inf 1.000000 +uR 8280.000000 70.000000 inf 1.000000 +uR 8290.000000 70.000000 inf 1.000000 +uR 8300.000000 70.000000 inf 1.000000 +uR 8310.000000 70.000000 inf 1.000000 +uR 8320.000000 70.000000 inf 1.000000 +uR 8330.000000 70.000000 inf 1.000000 +uR 8340.000000 70.000000 inf 1.000000 +uR 8350.000000 70.000000 inf 1.000000 +uR 8360.000000 70.000000 inf 1.000000 +uR 8370.000000 70.000000 inf 1.000000 +uR 8380.000000 70.000000 inf 1.000000 +uR 8390.000000 70.000000 inf 1.000000 +uR 8400.000000 70.000000 inf 1.000000 +uR 8410.000000 70.000000 inf 1.000000 +uR 8420.000000 70.000000 inf 1.000000 +uR 8430.000000 70.000000 inf 1.000000 +uR 8440.000000 70.000000 inf 1.000000 +uR 8450.000000 70.000000 inf 1.000000 +uR 8460.000000 70.000000 inf 1.000000 +uR 8470.000000 70.000000 inf 1.000000 +uR 8480.000000 70.000000 inf 1.000000 +uR 8490.000000 70.000000 inf 1.000000 +uR 8500.000000 70.000000 inf 1.000000 +uR 8510.000000 70.000000 inf 1.000000 +uR 8520.000000 70.000000 inf 1.000000 +uR 8530.000000 70.000000 inf 1.000000 +uR 8540.000000 70.000000 inf 1.000000 +uR 8550.000000 70.000000 inf 1.000000 +uR 8560.000000 70.000000 inf 1.000000 +uR 8570.000000 70.000000 inf 1.000000 +uR 8580.000000 70.000000 inf 1.000000 +uR 8590.000000 70.000000 inf 1.000000 +uR 8600.000000 70.000000 inf 1.000000 +uR 8610.000000 70.000000 inf 1.000000 +uR 8620.000000 70.000000 inf 1.000000 +uR 8630.000000 70.000000 inf 1.000000 +uR 8640.000000 70.000000 inf 1.000000 +uR 8650.000000 70.000000 inf 1.000000 +uR 8660.000000 70.000000 inf 1.000000 +uR 8670.000000 70.000000 inf 1.000000 +uR 8680.000000 70.000000 inf 1.000000 +uR 8690.000000 70.000000 inf 1.000000 +uR 8700.000000 70.000000 inf 1.000000 +uR 8710.000000 70.000000 inf 1.000000 +uR 8720.000000 70.000000 inf 1.000000 +uR 8730.000000 70.000000 inf 1.000000 +uR 8740.000000 70.000000 inf 1.000000 +uR 8750.000000 70.000000 inf 1.000000 +uR 8760.000000 70.000000 inf 1.000000 +uR 8770.000000 70.000000 inf 1.000000 +uR 8780.000000 70.000000 inf 1.000000 +uR 8790.000000 70.000000 inf 1.000000 +uR 8800.000000 70.000000 inf 1.000000 +uR 8810.000000 70.000000 inf 1.000000 +uR 8820.000000 70.000000 inf 1.000000 +uR 8830.000000 70.000000 inf 1.000000 +uR 8840.000000 70.000000 inf 1.000000 +uR 8850.000000 70.000000 inf 1.000000 +uR 8860.000000 70.000000 inf 1.000000 +uR 8870.000000 70.000000 inf 1.000000 +uR 8880.000000 70.000000 inf 1.000000 +uR 8890.000000 70.000000 inf 1.000000 +uR 8900.000000 70.000000 inf 1.000000 +uR 8910.000000 70.000000 inf 1.000000 +uR 8920.000000 70.000000 inf 1.000000 +uR 8930.000000 70.000000 inf 1.000000 +uR 8940.000000 70.000000 inf 1.000000 +uR 8950.000000 70.000000 inf 1.000000 +uR 8960.000000 70.000000 inf 1.000000 +uR 8970.000000 70.000000 inf 1.000000 +uR 8980.000000 70.000000 inf 1.000000 +uR 8990.000000 70.000000 inf 1.000000 +uR 9000.000000 70.000000 inf 1.000000 +uR 9010.000000 70.000000 inf 1.000000 +uR 9020.000000 70.000000 inf 1.000000 +uR 9030.000000 70.000000 inf 1.000000 +uR 9040.000000 70.000000 inf 1.000000 +uR 9050.000000 70.000000 inf 1.000000 +uR 9060.000000 70.000000 inf 1.000000 +uR 9070.000000 70.000000 inf 1.000000 +uR 9080.000000 70.000000 inf 1.000000 +uR 9090.000000 70.000000 inf 1.000000 +uR 9100.000000 70.000000 inf 1.000000 +uR 9110.000000 70.000000 inf 1.000000 +uR 9120.000000 70.000000 inf 1.000000 +uR 9130.000000 70.000000 inf 1.000000 +uR 9140.000000 70.000000 inf 1.000000 +uR 9150.000000 70.000000 inf 1.000000 +uR 9160.000000 70.000000 inf 1.000000 +uR 9170.000000 70.000000 inf 1.000000 +uR 9180.000000 70.000000 inf 1.000000 +uR 9190.000000 70.000000 inf 1.000000 +uR 9200.000000 70.000000 inf 1.000000 +uR 9210.000000 70.000000 inf 1.000000 +uR 9220.000000 70.000000 inf 1.000000 +uR 9230.000000 70.000000 inf 1.000000 +uR 9240.000000 70.000000 inf 1.000000 +uR 9250.000000 70.000000 inf 1.000000 +uR 9260.000000 70.000000 inf 1.000000 +uR 9270.000000 70.000000 inf 1.000000 +uR 9280.000000 70.000000 inf 1.000000 +uR 9290.000000 70.000000 inf 1.000000 +uR 9300.000000 70.000000 inf 1.000000 +uR 9310.000000 70.000000 inf 1.000000 +uR 9320.000000 70.000000 inf 1.000000 +uR 9330.000000 70.000000 inf 1.000000 +uR 9340.000000 70.000000 inf 1.000000 +uR 9350.000000 70.000000 inf 1.000000 +uR 9360.000000 70.000000 inf 1.000000 +uR 9370.000000 70.000000 inf 1.000000 +uR 9380.000000 70.000000 inf 1.000000 +uR 9390.000000 70.000000 inf 1.000000 +uR 9400.000000 70.000000 inf 1.000000 +uR 9410.000000 70.000000 inf 1.000000 +uR 9420.000000 70.000000 inf 1.000000 +uR 9430.000000 70.000000 inf 1.000000 +uR 9440.000000 70.000000 inf 1.000000 +uR 9450.000000 70.000000 inf 1.000000 +uR 9460.000000 70.000000 inf 1.000000 +uR 9470.000000 70.000000 inf 1.000000 +uR 9480.000000 70.000000 inf 1.000000 +uR 9490.000000 70.000000 inf 1.000000 +uR 9500.000000 70.000000 inf 1.000000 +uR 9510.000000 70.000000 inf 1.000000 +uR 9520.000000 70.000000 inf 1.000000 +uR 9530.000000 70.000000 inf 1.000000 +uR 9540.000000 70.000000 inf 1.000000 +uR 9550.000000 70.000000 inf 1.000000 +uR 9560.000000 70.000000 inf 1.000000 +uR 9570.000000 70.000000 inf 1.000000 +uR 9580.000000 70.000000 inf 1.000000 +uR 9590.000000 70.000000 inf 1.000000 +uR 9600.000000 70.000000 inf 1.000000 +uR 9610.000000 70.000000 inf 1.000000 +uR 9620.000000 70.000000 inf 1.000000 +uR 9630.000000 70.000000 inf 1.000000 +uR 9640.000000 70.000000 inf 1.000000 +uR 9650.000000 70.000000 inf 1.000000 +uR 9660.000000 70.000000 inf 1.000000 +uR 9670.000000 70.000000 inf 1.000000 +uR 9680.000000 70.000000 inf 1.000000 +uR 9690.000000 70.000000 inf 1.000000 +uR 9700.000000 70.000000 inf 1.000000 +uR 9710.000000 70.000000 inf 1.000000 +uR 9720.000000 70.000000 inf 1.000000 +uR 9730.000000 70.000000 inf 1.000000 +uR 9740.000000 70.000000 inf 1.000000 +uR 9750.000000 70.000000 inf 1.000000 +uR 9760.000000 70.000000 inf 1.000000 +uR 9770.000000 70.000000 inf 1.000000 +uR 9780.000000 70.000000 inf 1.000000 +uR 9790.000000 70.000000 inf 1.000000 +uR 9800.000000 70.000000 inf 1.000000 +uR 9810.000000 70.000000 inf 1.000000 +uR 9820.000000 70.000000 inf 1.000000 +uR 9830.000000 70.000000 inf 1.000000 +uR 9840.000000 70.000000 inf 1.000000 +uR 9850.000000 70.000000 inf 1.000000 +uR 9860.000000 70.000000 inf 1.000000 +uR 9870.000000 70.000000 inf 1.000000 +uR 9880.000000 70.000000 inf 1.000000 +uR 9890.000000 70.000000 inf 1.000000 +uR 9900.000000 70.000000 inf 1.000000 +uR 9910.000000 70.000000 inf 1.000000 +uR 9920.000000 70.000000 inf 1.000000 +uR 9930.000000 70.000000 inf 1.000000 +uR 9940.000000 70.000000 inf 1.000000 +uR 9950.000000 70.000000 inf 1.000000 +uR 9960.000000 70.000000 inf 1.000000 +uR 9970.000000 70.000000 inf 1.000000 +uR 9980.000000 70.000000 inf 1.000000 +uR 9990.000000 70.000000 inf 1.000000 +uR 10000.000000 70.000000 inf 1.000000 +uR 10025.000000 70.000000 inf 1.000000 +uR 10050.000000 70.000000 inf 1.000000 +uR 10075.000000 70.000000 inf 1.000000 +uR 10100.000000 70.000000 inf 1.000000 +uR 10125.000000 70.000000 inf 1.000000 +uR 10150.000000 70.000000 inf 1.000000 +uR 10175.000000 70.000000 inf 1.000000 +uR 10200.000000 70.000000 inf 1.000000 +uR 10225.000000 70.000000 inf 1.000000 +uR 10250.000000 70.000000 inf 1.000000 +uR 10275.000000 70.000000 inf 1.000000 +uR 10300.000000 70.000000 inf 1.000000 +uR 10325.000000 70.000000 inf 1.000000 +uR 10350.000000 70.000000 inf 1.000000 +uR 10375.000000 70.000000 inf 1.000000 +uR 10400.000000 70.000000 inf 1.000000 +uR 10425.000000 70.000000 inf 1.000000 +uR 10450.000000 70.000000 inf 1.000000 +uR 10475.000000 70.000000 inf 1.000000 +uR 10500.000000 70.000000 inf 1.000000 +uR 10525.000000 70.000000 inf 1.000000 +uR 10550.000000 70.000000 inf 1.000000 +uR 10575.000000 70.000000 inf 1.000000 +uR 10600.000000 70.000000 inf 1.000000 +uR 10625.000000 70.000000 inf 1.000000 +uR 10650.000000 70.000000 inf 1.000000 +uR 10675.000000 70.000000 inf 1.000000 +uR 10700.000000 70.000000 inf 1.000000 +uR 10725.000000 70.000000 inf 1.000000 +uR 10750.000000 70.000000 inf 1.000000 +uR 10775.000000 70.000000 inf 1.000000 +uR 10800.000000 70.000000 inf 1.000000 +uR 10825.000000 70.000000 inf 1.000000 +uR 10850.000000 70.000000 inf 1.000000 +uR 10875.000000 70.000000 inf 1.000000 +uR 10900.000000 70.000000 inf 1.000000 +uR 10925.000000 70.000000 inf 1.000000 +uR 10950.000000 70.000000 inf 1.000000 +uR 10975.000000 70.000000 inf 1.000000 +uR 11000.000000 70.000000 inf 1.000000 +uR 11025.000000 70.000000 inf 1.000000 +uR 11050.000000 70.000000 inf 1.000000 +uR 11075.000000 70.000000 inf 1.000000 +uR 11100.000000 70.000000 inf 1.000000 +uR 11125.000000 70.000000 inf 1.000000 +uR 11150.000000 70.000000 inf 1.000000 +uR 11175.000000 70.000000 inf 1.000000 +uR 11200.000000 70.000000 inf 1.000000 +uR 11225.000000 70.000000 inf 1.000000 +uR 11250.000000 70.000000 inf 1.000000 +uR 11275.000000 70.000000 inf 1.000000 +uR 11300.000000 70.000000 inf 1.000000 +uR 11325.000000 70.000000 inf 1.000000 +uR 11350.000000 70.000000 inf 1.000000 +uR 11375.000000 70.000000 inf 1.000000 +uR 11400.000000 70.000000 inf 1.000000 +uR 11425.000000 70.000000 inf 1.000000 +uR 11450.000000 70.000000 inf 1.000000 +uR 11475.000000 70.000000 inf 1.000000 +uR 11500.000000 70.000000 inf 1.000000 +uR 11525.000000 70.000000 inf 1.000000 +uR 11550.000000 70.000000 inf 1.000000 +uR 11575.000000 70.000000 inf 1.000000 +uR 11600.000000 70.000000 inf 1.000000 +uR 11625.000000 70.000000 inf 1.000000 +uR 11650.000000 70.000000 inf 1.000000 +uR 11675.000000 70.000000 inf 1.000000 +uR 11700.000000 70.000000 inf 1.000000 +uR 11725.000000 70.000000 inf 1.000000 +uR 11750.000000 70.000000 inf 1.000000 +uR 11775.000000 70.000000 inf 1.000000 +uR 11800.000000 70.000000 inf 1.000000 +uR 11825.000000 70.000000 inf 1.000000 +uR 11850.000000 70.000000 inf 1.000000 +uR 11875.000000 70.000000 inf 1.000000 +uR 11900.000000 70.000000 inf 1.000000 +uR 11925.000000 70.000000 inf 1.000000 +uR 11950.000000 70.000000 inf 1.000000 +uR 11975.000000 70.000000 inf 1.000000 +uR 12000.000000 70.000000 inf 1.000000 +uR 12025.000000 70.000000 inf 1.000000 +uR 12050.000000 70.000000 inf 1.000000 +uR 12075.000000 70.000000 inf 1.000000 +uR 12100.000000 70.000000 inf 1.000000 +uR 12125.000000 70.000000 inf 1.000000 +uR 12150.000000 70.000000 inf 1.000000 +uR 12175.000000 70.000000 inf 1.000000 +uR 12200.000000 70.000000 inf 1.000000 +uR 12225.000000 70.000000 inf 1.000000 +uR 12250.000000 70.000000 inf 1.000000 +uR 12275.000000 70.000000 inf 1.000000 +uR 12300.000000 70.000000 inf 1.000000 +uR 12325.000000 70.000000 inf 1.000000 +uR 12350.000000 70.000000 inf 1.000000 +uR 12375.000000 70.000000 inf 1.000000 +uR 12400.000000 70.000000 inf 1.000000 +uR 12425.000000 70.000000 inf 1.000000 +uR 12450.000000 70.000000 inf 1.000000 +uR 12475.000000 70.000000 inf 1.000000 +uR 12500.000000 70.000000 inf 1.000000 +uR 12525.000000 70.000000 inf 1.000000 +uR 12550.000000 70.000000 inf 1.000000 +uR 12575.000000 70.000000 inf 1.000000 +uR 12600.000000 70.000000 inf 1.000000 +uR 12625.000000 70.000000 inf 1.000000 +uR 12650.000000 70.000000 inf 1.000000 +uR 12675.000000 70.000000 inf 1.000000 +uR 12700.000000 70.000000 inf 1.000000 +uR 12725.000000 70.000000 inf 1.000000 +uR 12750.000000 70.000000 inf 1.000000 +uR 12775.000000 70.000000 inf 1.000000 +uR 12800.000000 70.000000 inf 1.000000 +uR 12825.000000 70.000000 inf 1.000000 +uR 12850.000000 70.000000 inf 1.000000 +uR 12875.000000 70.000000 inf 1.000000 +uR 12900.000000 70.000000 inf 1.000000 +uR 12925.000000 70.000000 inf 1.000000 +uR 12950.000000 70.000000 inf 1.000000 +uR 12975.000000 70.000000 inf 1.000000 +uR 13000.000000 70.000000 inf 1.000000 +uR 13025.000000 70.000000 inf 1.000000 +uR 13050.000000 70.000000 inf 1.000000 +uR 13075.000000 70.000000 inf 1.000000 +uR 13100.000000 70.000000 inf 1.000000 +uR 13125.000000 70.000000 inf 1.000000 +uR 13150.000000 70.000000 inf 1.000000 +uR 13175.000000 70.000000 inf 1.000000 +uR 13200.000000 70.000000 inf 1.000000 +uR 13225.000000 70.000000 inf 1.000000 +uR 13250.000000 70.000000 inf 1.000000 +uR 13275.000000 70.000000 inf 1.000000 +uR 13300.000000 70.000000 inf 1.000000 +uR 13325.000000 70.000000 inf 1.000000 +uR 13350.000000 70.000000 inf 1.000000 +uR 13375.000000 70.000000 inf 1.000000 +uR 13400.000000 70.000000 inf 1.000000 +uR 13425.000000 70.000000 inf 1.000000 +uR 13450.000000 70.000000 inf 1.000000 +uR 13475.000000 70.000000 inf 1.000000 +uR 13500.000000 70.000000 inf 1.000000 +uR 13525.000000 70.000000 inf 1.000000 +uR 13550.000000 70.000000 inf 1.000000 +uR 13575.000000 70.000000 inf 1.000000 +uR 13600.000000 70.000000 inf 1.000000 +uR 13625.000000 70.000000 inf 1.000000 +uR 13650.000000 70.000000 inf 1.000000 +uR 13675.000000 70.000000 inf 1.000000 +uR 13700.000000 70.000000 inf 1.000000 +uR 13725.000000 70.000000 inf 1.000000 +uR 13750.000000 70.000000 inf 1.000000 +uR 13775.000000 70.000000 inf 1.000000 +uR 13800.000000 70.000000 inf 1.000000 +uR 13825.000000 70.000000 inf 1.000000 +uR 13850.000000 70.000000 inf 1.000000 +uR 13875.000000 70.000000 inf 1.000000 +uR 13900.000000 70.000000 inf 1.000000 +uR 13925.000000 70.000000 inf 1.000000 +uR 13950.000000 70.000000 inf 1.000000 +uR 13975.000000 70.000000 inf 1.000000 +uR 14000.000000 70.000000 inf 1.000000 +uR 14025.000000 70.000000 inf 1.000000 +uR 14050.000000 70.000000 inf 1.000000 +uR 14075.000000 70.000000 inf 1.000000 +uR 14100.000000 70.000000 inf 1.000000 +uR 14125.000000 70.000000 inf 1.000000 +uR 14150.000000 70.000000 inf 1.000000 +uR 14175.000000 70.000000 inf 1.000000 +uR 14200.000000 70.000000 inf 1.000000 +uR 14225.000000 70.000000 inf 1.000000 +uR 14250.000000 70.000000 inf 1.000000 +uR 14275.000000 70.000000 inf 1.000000 +uR 14300.000000 70.000000 inf 1.000000 +uR 14325.000000 70.000000 inf 1.000000 +uR 14350.000000 70.000000 inf 1.000000 +uR 14375.000000 70.000000 inf 1.000000 +uR 14400.000000 70.000000 inf 1.000000 +uR 14425.000000 70.000000 inf 1.000000 +uR 14450.000000 70.000000 inf 1.000000 +uR 14475.000000 70.000000 inf 1.000000 +uR 14500.000000 70.000000 inf 1.000000 +uR 14525.000000 70.000000 inf 1.000000 +uR 14550.000000 70.000000 inf 1.000000 +uR 14575.000000 70.000000 inf 1.000000 +uR 14600.000000 70.000000 inf 1.000000 +uR 14625.000000 70.000000 inf 1.000000 +uR 14650.000000 70.000000 inf 1.000000 +uR 14675.000000 70.000000 inf 1.000000 +uR 14700.000000 70.000000 inf 1.000000 +uR 14725.000000 70.000000 inf 1.000000 +uR 14750.000000 70.000000 inf 1.000000 +uR 14775.000000 70.000000 inf 1.000000 +uR 14800.000000 70.000000 inf 1.000000 +uR 14825.000000 70.000000 inf 1.000000 +uR 14850.000000 70.000000 inf 1.000000 +uR 14875.000000 70.000000 inf 1.000000 +uR 14900.000000 70.000000 inf 1.000000 +uR 14925.000000 70.000000 inf 1.000000 +uR 14950.000000 70.000000 inf 1.000000 +uR 14975.000000 70.000000 inf 1.000000 +uR 15000.000000 70.000000 inf 1.000000 +uR 15025.000000 70.000000 inf 1.000000 +uR 15050.000000 70.000000 inf 1.000000 +uR 15075.000000 70.000000 inf 1.000000 +uR 15100.000000 70.000000 inf 1.000000 +uR 15125.000000 70.000000 inf 1.000000 +uR 15150.000000 70.000000 inf 1.000000 +uR 15175.000000 70.000000 inf 1.000000 +uR 15200.000000 70.000000 inf 1.000000 +uR 15225.000000 70.000000 inf 1.000000 +uR 15250.000000 70.000000 inf 1.000000 +uR 15275.000000 70.000000 inf 1.000000 +uR 15300.000000 70.000000 inf 1.000000 +uR 15325.000000 70.000000 inf 1.000000 +uR 15350.000000 70.000000 inf 1.000000 +uR 15375.000000 70.000000 inf 1.000000 +uR 15400.000000 70.000000 inf 1.000000 +uR 15425.000000 70.000000 inf 1.000000 +uR 15450.000000 70.000000 inf 1.000000 +uR 15475.000000 70.000000 inf 1.000000 +uR 15500.000000 70.000000 inf 1.000000 +uR 15525.000000 70.000000 inf 1.000000 +uR 15550.000000 70.000000 inf 1.000000 +uR 15575.000000 70.000000 inf 1.000000 +uR 15600.000000 70.000000 inf 1.000000 +uR 15625.000000 70.000000 inf 1.000000 +uR 15650.000000 70.000000 inf 1.000000 +uR 15675.000000 70.000000 inf 1.000000 +uR 15700.000000 70.000000 inf 1.000000 +uR 15725.000000 70.000000 inf 1.000000 +uR 15750.000000 70.000000 inf 1.000000 +uR 15775.000000 70.000000 inf 1.000000 +uR 15800.000000 70.000000 inf 1.000000 +uR 15825.000000 70.000000 inf 1.000000 +uR 15850.000000 70.000000 inf 1.000000 +uR 15875.000000 70.000000 inf 1.000000 +uR 15900.000000 70.000000 inf 1.000000 +uR 15925.000000 70.000000 inf 1.000000 +uR 15950.000000 70.000000 inf 1.000000 +uR 15975.000000 70.000000 inf 1.000000 +uR 16000.000000 70.000000 inf 1.000000 +uR 16025.000000 70.000000 inf 1.000000 +uR 16050.000000 70.000000 inf 1.000000 +uR 16075.000000 70.000000 inf 1.000000 +uR 16100.000000 70.000000 inf 1.000000 +uR 16125.000000 70.000000 inf 1.000000 +uR 16150.000000 70.000000 inf 1.000000 +uR 16175.000000 70.000000 inf 1.000000 +uR 16200.000000 70.000000 inf 1.000000 +uR 16225.000000 70.000000 inf 1.000000 +uR 16250.000000 70.000000 inf 1.000000 +uR 16275.000000 70.000000 inf 1.000000 +uR 16300.000000 70.000000 inf 1.000000 +uR 16325.000000 70.000000 inf 1.000000 +uR 16350.000000 70.000000 inf 1.000000 +uR 16375.000000 70.000000 inf 1.000000 +uR 16400.000000 70.000000 inf 1.000000 +uR 16425.000000 70.000000 inf 1.000000 +uR 16450.000000 70.000000 inf 1.000000 +uR 16475.000000 70.000000 inf 1.000000 +uR 16500.000000 70.000000 inf 1.000000 +uR 16525.000000 70.000000 inf 1.000000 +uR 16550.000000 70.000000 inf 1.000000 +uR 16575.000000 70.000000 inf 1.000000 +uR 16600.000000 70.000000 inf 1.000000 +uR 16625.000000 70.000000 inf 1.000000 +uR 16650.000000 70.000000 inf 1.000000 +uR 16675.000000 70.000000 inf 1.000000 +uR 16700.000000 70.000000 inf 1.000000 +uR 16725.000000 70.000000 inf 1.000000 +uR 16750.000000 70.000000 inf 1.000000 +uR 16775.000000 70.000000 inf 1.000000 +uR 16800.000000 70.000000 inf 1.000000 +uR 16825.000000 70.000000 inf 1.000000 +uR 16850.000000 70.000000 inf 1.000000 +uR 16875.000000 70.000000 inf 1.000000 +uR 16900.000000 70.000000 inf 1.000000 +uR 16925.000000 70.000000 inf 1.000000 +uR 16950.000000 70.000000 inf 1.000000 +uR 16975.000000 70.000000 inf 1.000000 +uR 17000.000000 70.000000 inf 1.000000 +dPolE 1930.000000 50.000000 1.800296 0.165269 +dPolE 1940.000000 50.000000 1.309305 0.151484 +dPolE 1950.000000 50.000000 1.143294 0.139903 +dPolE 1960.000000 50.000000 0.887043 0.132319 +dPolE 1970.000000 50.000000 0.694757 0.126028 +dPolE 1980.000000 50.000000 0.787448 0.120852 +dPolE 1990.000000 50.000000 0.930387 0.116504 +dPolE 2000.000000 50.000000 1.026029 0.112678 +dPolE 2010.000000 50.000000 0.923153 0.109269 +dPolE 2020.000000 50.000000 1.070072 0.105676 +dPolE 2030.000000 50.000000 1.417070 0.102034 +dPolE 2040.000000 50.000000 1.349345 0.099043 +dPolE 2050.000000 50.000000 0.993161 0.096469 +dPolE 2060.000000 50.000000 0.997559 0.093567 +dPolE 2070.000000 50.000000 1.097280 0.090721 +dPolE 2080.000000 50.000000 1.217307 0.088023 +dPolE 2090.000000 50.000000 1.076752 0.085695 +dPolE 2100.000000 50.000000 0.785813 0.083661 +dPolE 2110.000000 50.000000 0.828161 0.081721 +dPolE 2120.000000 50.000000 0.944106 0.079806 +dPolE 2130.000000 50.000000 0.904778 0.078062 +dPolE 2140.000000 50.000000 0.990837 0.076453 +dPolE 2150.000000 50.000000 0.953939 0.075051 +dPolE 2160.000000 50.000000 0.904178 0.073805 +dPolE 2170.000000 50.000000 0.742843 0.072741 +dPolE 2180.000000 50.000000 0.737577 0.071572 +dPolE 2190.000000 50.000000 0.847678 0.070257 +dPolE 2200.000000 50.000000 0.925129 0.069029 +dPolE 2210.000000 50.000000 0.760540 0.068060 +dPolE 2220.000000 50.000000 0.823835 0.066873 +dPolE 2230.000000 50.000000 0.825953 0.065823 +dPolE 2240.000000 50.000000 0.809936 0.064850 +dPolE 2250.000000 50.000000 0.868201 0.063857 +dPolE 2260.000000 50.000000 0.796736 0.063094 +dPolE 2270.000000 50.000000 0.730204 0.062330 +dPolE 2280.000000 50.000000 0.815860 0.061441 +dPolE 2290.000000 50.000000 0.798825 0.060635 +dPolE 2300.000000 50.000000 0.798660 0.059902 +dPolE 2310.000000 50.000000 0.689545 0.059261 +dPolE 2320.000000 50.000000 0.492768 0.058720 +dPolE 2330.000000 50.000000 0.614542 0.058064 +dPolE 2340.000000 50.000000 0.836103 0.057390 +dPolE 2350.000000 50.000000 0.737850 0.056930 +dPolE 2360.000000 50.000000 0.695785 0.056493 +dPolE 2370.000000 50.000000 0.597369 0.056114 +dPolE 2380.000000 50.000000 0.632569 0.055644 +dPolE 2390.000000 50.000000 0.747894 0.055213 +dPolE 2400.000000 50.000000 0.713178 0.054940 +dPolE 2410.000000 50.000000 0.619984 0.054720 +dPolE 2420.000000 50.000000 0.573291 0.054491 +dPolE 2430.000000 50.000000 0.690290 0.054250 +dPolE 2440.000000 50.000000 0.612996 0.054136 +dPolE 2450.000000 50.000000 0.700928 0.053920 +dPolE 2460.000000 50.000000 0.754827 0.053783 +dPolE 2470.000000 50.000000 0.632926 0.053779 +dPolE 2480.000000 50.000000 0.642451 0.053692 +dPolE 2490.000000 50.000000 0.615324 0.053677 +dPolE 2500.000000 50.000000 0.628675 0.053685 +dPolE 2510.000000 50.000000 0.585632 0.053768 +dPolE 2520.000000 50.000000 0.447026 0.053875 +dPolE 2530.000000 50.000000 0.473566 0.053946 +dPolE 2540.000000 50.000000 0.547664 0.054089 +dPolE 2550.000000 50.000000 0.562903 0.054265 +dPolE 2560.000000 50.000000 0.603952 0.054475 +dPolE 2570.000000 50.000000 0.617656 0.054727 +dPolE 2580.000000 50.000000 0.617088 0.055021 +dPolE 2590.000000 50.000000 0.491601 0.055448 +dPolE 2600.000000 50.000000 0.517532 0.055822 +dPolE 2610.000000 50.000000 0.666330 0.056140 +dPolE 2620.000000 50.000000 0.595689 0.056626 +dPolE 2630.000000 50.000000 0.573192 0.057104 +dPolE 2640.000000 50.000000 0.497992 0.057657 +dPolE 2650.000000 50.000000 0.458465 0.058262 +dPolE 2660.000000 50.000000 0.449298 0.058901 +dPolE 2670.000000 50.000000 0.424692 0.059559 +dPolE 2680.000000 50.000000 0.412024 0.060203 +dPolE 2690.000000 50.000000 0.526856 0.060734 +dPolE 2700.000000 50.000000 0.427017 0.061441 +dPolE 2710.000000 50.000000 0.392052 0.062185 +dPolE 2720.000000 50.000000 0.427794 0.062861 +dPolE 2730.000000 50.000000 0.417384 0.063511 +dPolE 2740.000000 50.000000 0.470635 0.064146 +dPolE 2750.000000 50.000000 0.361683 0.064896 +dPolE 2760.000000 50.000000 0.284277 0.065668 +dPolE 2770.000000 50.000000 0.416853 0.066462 +dPolE 2780.000000 50.000000 0.288530 0.067123 +dPolE 2790.000000 50.000000 0.407721 0.067484 +dPolE 2800.000000 50.000000 0.408844 0.068022 +dPolE 2810.000000 50.000000 0.243115 0.068787 +dPolE 2820.000000 50.000000 0.317795 0.069390 +dPolE 2830.000000 50.000000 0.449478 0.069972 +dPolE 2840.000000 50.000000 0.432700 0.070578 +dPolE 2850.000000 50.000000 0.535699 0.071249 +dPolE 2860.000000 50.000000 0.423061 0.072141 +dPolE 2870.000000 50.000000 0.291309 0.072962 +dPolE 2880.000000 50.000000 0.313319 0.073775 +dPolE 2890.000000 50.000000 0.375089 0.074682 +dPolE 2900.000000 50.000000 0.468638 0.075560 +dPolE 2910.000000 50.000000 0.206962 0.076782 +dPolE 2920.000000 50.000000 0.225884 0.077768 +dPolE 2930.000000 50.000000 0.326816 0.078618 +dPolE 2940.000000 50.000000 0.511820 0.079408 +dPolE 2950.000000 50.000000 0.569485 0.080313 +dPolE 2960.000000 50.000000 0.356026 0.081448 +dPolE 2970.000000 50.000000 0.308444 0.082413 +dPolE 2980.000000 50.000000 0.419294 0.083300 +dPolE 2990.000000 50.000000 0.312290 0.084425 +dPolE 3000.000000 50.000000 0.302694 0.085484 +dPolE 3010.000000 50.000000 0.359407 0.086365 +dPolE 3020.000000 50.000000 0.230644 0.087489 +dPolE 3030.000000 50.000000 0.114535 0.088724 +dPolE 3040.000000 50.000000 0.094944 0.089791 +dPolE 3050.000000 50.000000 0.131689 0.090955 +dPolE 3060.000000 50.000000 0.298044 0.091955 +dPolE 3070.000000 50.000000 0.321239 0.093032 +dPolE 3080.000000 50.000000 0.495015 0.094055 +dPolE 3090.000000 50.000000 0.344365 0.095464 +dPolE 3100.000000 50.000000 0.079581 0.096846 +dPolE 3110.000000 50.000000 0.253341 0.097726 +dPolE 3120.000000 50.000000 0.237933 0.098964 +dPolE 3130.000000 50.000000 0.153138 0.100086 +dPolE 3140.000000 50.000000 0.304390 0.101024 +dPolE 3150.000000 50.000000 0.257985 0.102252 +dPolE 3160.000000 50.000000 0.169896 0.103412 +dPolE 3170.000000 50.000000 0.130210 0.104581 +dPolE 3180.000000 50.000000 0.259850 0.105514 +dPolE 3190.000000 50.000000 0.309619 0.106678 +dPolE 3200.000000 50.000000 0.294696 0.107791 +dPolE 3210.000000 50.000000 0.322265 0.108987 +dPolE 3220.000000 50.000000 0.242268 0.110300 +dPolE 3230.000000 50.000000 0.341232 0.111294 +dPolE 3240.000000 50.000000 0.385883 0.112343 +dPolE 3250.000000 50.000000 0.418532 0.113341 +dPolE 3260.000000 50.000000 0.269920 0.115361 +dPolE 3270.000000 50.000000 0.193508 0.117881 +dPolE 3280.000000 50.000000 0.319142 0.120150 +dPolE 3290.000000 50.000000 -0.009993 0.122581 +dPolE 3300.000000 50.000000 -0.060110 0.124421 +dPolE 3310.000000 50.000000 0.090350 0.126008 +dPolE 3320.000000 50.000000 0.103279 0.127325 +dPolE 3330.000000 50.000000 0.120887 0.128302 +dPolE 3340.000000 50.000000 0.229203 0.129089 +dPolE 3350.000000 50.000000 0.128285 0.130104 +dPolE 3360.000000 50.000000 0.136950 0.131038 +dPolE 3370.000000 50.000000 0.358729 0.131600 +dPolE 3380.000000 50.000000 0.026798 0.132673 +dPolE 3390.000000 50.000000 0.125807 0.132537 +dPolE 3400.000000 50.000000 0.062923 0.132721 +dPolE 3410.000000 50.000000 0.071446 0.133099 +dPolE 3420.000000 50.000000 0.049430 0.134206 +dPolE 3430.000000 50.000000 0.425948 0.134576 +dPolE 3440.000000 50.000000 0.339736 0.135458 +dPolE 3450.000000 50.000000 -0.231254 0.137559 +dPolE 3460.000000 50.000000 -0.155015 0.138534 +dPolE 3470.000000 50.000000 -0.097722 0.139582 +dPolE 3480.000000 50.000000 -0.091005 0.140545 +dPolE 3490.000000 50.000000 -0.176945 0.141740 +dPolE 3500.000000 50.000000 -0.039910 0.142550 +dPolE 3510.000000 50.000000 0.041152 0.143506 +dPolE 3520.000000 50.000000 -0.115626 0.144841 +dPolE 3530.000000 50.000000 -0.168388 0.145936 +dPolE 3540.000000 50.000000 -0.034318 0.146927 +dPolE 3550.000000 50.000000 0.020299 0.147897 +dPolE 3560.000000 50.000000 0.288599 0.148347 +dPolE 3570.000000 50.000000 0.317733 0.149361 +dPolE 3580.000000 50.000000 -0.117646 0.151069 +dPolE 3590.000000 50.000000 -0.080377 0.152004 +dPolE 3600.000000 50.000000 0.174486 0.152441 +dPolE 3610.000000 50.000000 -0.134719 0.153971 +dPolE 3620.000000 50.000000 -0.072756 0.154455 +dPolE 3630.000000 50.000000 0.223681 0.154501 +dPolE 3640.000000 50.000000 0.254947 0.155456 +dPolE 3650.000000 50.000000 0.219668 0.156635 +dPolE 3660.000000 50.000000 0.149169 0.156585 +dPolE 3670.000000 50.000000 0.025261 0.155881 +dPolE 3680.000000 50.000000 0.169458 0.155253 +dPolE 3690.000000 50.000000 0.042343 0.155808 +dPolE 3700.000000 50.000000 -0.314537 0.158009 +dPolE 3710.000000 50.000000 -0.167547 0.159737 +dPolE 3720.000000 50.000000 0.036098 0.160046 +dPolE 3730.000000 50.000000 0.524714 0.160258 +dPolE 3740.000000 50.000000 0.451944 0.161513 +dPolE 3750.000000 50.000000 -0.096791 0.162511 +dPolE 3760.000000 50.000000 -0.013359 0.161830 +dPolE 3770.000000 50.000000 0.010189 0.161823 +dPolE 3780.000000 50.000000 0.033981 0.160833 +dPolE 3790.000000 50.000000 -0.112086 0.159787 +dPolE 3800.000000 50.000000 0.055447 0.159431 +dPolE 3810.000000 50.000000 0.109895 0.160701 +dPolE 3820.000000 50.000000 -0.004878 0.161755 +dPolE 3830.000000 50.000000 0.228860 0.160133 +dPolE 3840.000000 50.000000 0.128166 0.160381 +dPolE 3850.000000 50.000000 0.127896 0.161768 +dPolE 3860.000000 50.000000 0.147482 0.160719 +dPolE 3870.000000 50.000000 0.078392 0.158488 +dPolE 3880.000000 50.000000 0.183113 0.155667 +dPolE 3890.000000 50.000000 0.075837 0.156180 +dPolE 3900.000000 50.000000 -0.190823 0.161027 +dPolE 3910.000000 50.000000 0.054573 0.165085 +dPolE 3920.000000 50.000000 -0.056193 0.164214 +dPolE 3930.000000 50.000000 0.143494 0.161058 +dPolE 3940.000000 50.000000 0.221944 0.158693 +dPolE 3950.000000 50.000000 0.290965 0.157904 +dPolE 3960.000000 50.000000 0.144584 0.159730 +dPolE 3970.000000 50.000000 0.008712 0.161534 +dPolE 3980.000000 50.000000 0.269035 0.158640 +dPolE 3990.000000 50.000000 0.106360 0.156470 +dPolE 4000.000000 50.000000 0.002007 0.157825 +dPolE 4010.000000 50.000000 0.069213 0.161148 +dPolE 4020.000000 50.000000 0.296454 0.162872 +dPolE 4030.000000 50.000000 0.280878 0.163052 +dPolE 4040.000000 50.000000 0.406466 0.161289 +dPolE 4050.000000 50.000000 0.133208 0.158337 +dPolE 4060.000000 50.000000 0.086758 0.154981 +dPolE 4070.000000 50.000000 -0.120731 0.155810 +dPolE 4080.000000 50.000000 0.127315 0.159735 +dPolE 4090.000000 50.000000 0.174644 0.163186 +dPolE 4100.000000 50.000000 0.006288 0.163954 +dPolE 4110.000000 50.000000 -0.104073 0.164074 +dPolE 4120.000000 50.000000 0.040678 0.161803 +dPolE 4130.000000 50.000000 0.061745 0.156939 +dPolE 4140.000000 50.000000 0.076655 0.154925 +dPolE 4150.000000 50.000000 0.211908 0.157146 +dPolE 4160.000000 50.000000 0.352384 0.158213 +dPolE 4170.000000 50.000000 0.187220 0.158126 +dPolE 4180.000000 50.000000 0.297473 0.158009 +dPolE 4190.000000 50.000000 0.155380 0.159978 +dPolE 4200.000000 50.000000 -0.260014 0.161170 +dPolE 4210.000000 50.000000 -0.135135 0.156724 +dPolE 4220.000000 50.000000 -0.187986 0.151668 +dPolE 4230.000000 50.000000 -0.134411 0.148602 +dPolE 4240.000000 50.000000 0.071185 0.147951 +dPolE 4250.000000 50.000000 -0.003529 0.153107 +dPolE 4260.000000 50.000000 -0.160463 0.159303 +dPolE 4270.000000 50.000000 0.067648 0.158242 +dPolE 4280.000000 50.000000 -0.131821 0.153929 +dPolE 4290.000000 50.000000 0.037076 0.154887 +dPolE 4300.000000 50.000000 0.448109 0.155036 +dPolE 4310.000000 50.000000 0.217249 0.154143 +dPolE 4320.000000 50.000000 -0.048318 0.156983 +dPolE 4330.000000 50.000000 -0.070494 0.159366 +dPolE 4340.000000 50.000000 -0.176044 0.155837 +dPolE 4350.000000 50.000000 -0.088546 0.153950 +dPolE 4360.000000 50.000000 -0.128645 0.156325 +dPolE 4370.000000 50.000000 -0.394212 0.156811 +dPolE 4380.000000 50.000000 -0.103279 0.155223 +dPolE 4390.000000 50.000000 0.121845 0.153821 +dPolE 4400.000000 50.000000 -0.088955 0.153492 +dPolE 4410.000000 50.000000 0.081365 0.150725 +dPolE 4420.000000 50.000000 0.086665 0.145776 +dPolE 4430.000000 50.000000 -0.014363 0.145310 +dPolE 4440.000000 50.000000 0.015489 0.146547 +dPolE 4450.000000 50.000000 -0.187437 0.146050 +dPolE 4460.000000 50.000000 -0.115370 0.144853 +dPolE 4470.000000 50.000000 0.213441 0.145094 +dPolE 4480.000000 50.000000 0.055862 0.146128 +dPolE 4490.000000 50.000000 0.151271 0.145746 +dPolE 4500.000000 50.000000 -0.178894 0.145418 +dPolE 4510.000000 50.000000 0.059054 0.145020 +dPolE 4520.000000 50.000000 0.437804 0.144953 +dPolE 4530.000000 50.000000 0.182228 0.145154 +dPolE 4540.000000 50.000000 0.169528 0.144541 +dPolE 4550.000000 50.000000 0.145362 0.143759 +dPolE 4560.000000 50.000000 0.207362 0.142237 +dPolE 4570.000000 50.000000 -0.007975 0.140516 +dPolE 4580.000000 50.000000 0.080955 0.137257 +dPolE 4590.000000 50.000000 -0.035346 0.135081 +dPolE 4600.000000 50.000000 0.254085 0.136749 +dPolE 4610.000000 50.000000 0.350597 0.140050 +dPolE 4620.000000 50.000000 0.014396 0.141660 +dPolE 4630.000000 50.000000 0.108536 0.138296 +dPolE 4640.000000 50.000000 0.251926 0.132922 +dPolE 4650.000000 50.000000 -0.001623 0.131548 +dPolE 4660.000000 50.000000 0.238133 0.132864 +dPolE 4670.000000 50.000000 0.375109 0.135262 +dPolE 4680.000000 50.000000 -0.029226 0.136835 +dPolE 4690.000000 50.000000 -0.094837 0.137469 +dPolE 4700.000000 50.000000 -0.019352 0.140034 +dPolE 4710.000000 50.000000 0.144652 0.141776 +dPolE 4720.000000 50.000000 -0.009895 0.140484 +dPolE 4730.000000 50.000000 0.151876 0.137336 +dPolE 4740.000000 50.000000 0.292534 0.136052 +dPolE 4750.000000 50.000000 0.057031 0.136908 +dPolE 4760.000000 50.000000 -0.048369 0.136565 +dPolE 4770.000000 50.000000 0.281046 0.134941 +dPolE 4780.000000 50.000000 0.396855 0.133489 +dPolE 4790.000000 50.000000 -0.065348 0.132992 +dPolE 4800.000000 50.000000 0.044034 0.132579 +dPolE 4810.000000 50.000000 0.038859 0.132305 +dPolE 4820.000000 50.000000 -0.042241 0.132470 +dPolE 4830.000000 50.000000 0.033221 0.131875 +dPolE 4840.000000 50.000000 0.060445 0.130272 +dPolE 4850.000000 50.000000 0.254567 0.124052 +dPolE 4860.000000 50.000000 0.007938 0.109458 +dPolE 4870.000000 50.000000 -0.200939 0.104298 +dPolE 4880.000000 50.000000 0.175069 0.119348 +dPolE 4890.000000 50.000000 0.109958 0.127138 +dPolE 4900.000000 50.000000 -0.111818 0.127265 +dPolE 4910.000000 50.000000 -0.120877 0.126110 +dPolE 4920.000000 50.000000 0.108077 0.126071 +dPolE 4930.000000 50.000000 0.093644 0.125726 +dPolE 4940.000000 50.000000 0.168915 0.124648 +dPolE 4950.000000 50.000000 0.224713 0.125916 +dPolE 4960.000000 50.000000 0.464545 0.126260 +dPolE 4970.000000 50.000000 0.298787 0.125565 +dPolE 4980.000000 50.000000 -0.034643 0.124725 +dPolE 4990.000000 50.000000 0.048398 0.123040 +dPolE 5000.000000 50.000000 0.168704 0.122292 +dPolE 5010.000000 50.000000 -0.087461 0.122467 +dPolE 5020.000000 50.000000 -0.076699 0.121648 +dPolE 5030.000000 50.000000 0.029476 0.121429 +dPolE 5040.000000 50.000000 -0.039455 0.121888 +dPolE 5050.000000 50.000000 -0.132226 0.122269 +dPolE 5060.000000 50.000000 0.075363 0.121431 +dPolE 5070.000000 50.000000 0.086714 0.121107 +dPolE 5080.000000 50.000000 0.226341 0.121169 +dPolE 5090.000000 50.000000 0.192571 0.121157 +dPolE 5100.000000 50.000000 0.015308 0.121290 +dPolE 5110.000000 50.000000 0.054975 0.120683 +dPolE 5120.000000 50.000000 0.072871 0.119931 +dPolE 5130.000000 50.000000 -0.029141 0.119897 +dPolE 5140.000000 50.000000 0.099740 0.119520 +dPolE 5150.000000 50.000000 0.060971 0.119323 +dPolE 5160.000000 50.000000 0.061827 0.118870 +dPolE 5170.000000 50.000000 0.172865 0.118455 +dPolE 5180.000000 50.000000 0.150085 0.118177 +dPolE 5190.000000 50.000000 -0.027710 0.118025 +dPolE 5200.000000 50.000000 -0.011730 0.117316 +dPolE 5210.000000 50.000000 0.135303 0.116714 +dPolE 5220.000000 50.000000 0.017534 0.116708 +dPolE 5230.000000 50.000000 0.037074 0.116335 +dPolE 5240.000000 50.000000 0.232838 0.115764 +dPolE 5250.000000 50.000000 0.230460 0.115275 +dPolE 5260.000000 50.000000 0.131573 0.114620 +dPolE 5270.000000 50.000000 -0.040416 0.113828 +dPolE 5280.000000 50.000000 -0.054004 0.113580 +dPolE 5290.000000 50.000000 0.081999 0.113286 +dPolE 5300.000000 50.000000 0.183169 0.112817 +dPolE 5310.000000 50.000000 0.079505 0.112879 +dPolE 5320.000000 50.000000 0.152668 0.112640 +dPolE 5330.000000 50.000000 0.218859 0.111711 +dPolE 5340.000000 50.000000 0.100733 0.110882 +dPolE 5350.000000 50.000000 0.065867 0.110630 +dPolE 5360.000000 50.000000 0.041125 0.110427 +dPolE 5370.000000 50.000000 -0.041298 0.110289 +dPolE 5380.000000 50.000000 -0.163821 0.109988 +dPolE 5390.000000 50.000000 -0.001165 0.108936 +dPolE 5400.000000 50.000000 0.196585 0.108290 +dPolE 5410.000000 50.000000 0.065989 0.108178 +dPolE 5420.000000 50.000000 0.054003 0.107416 +dPolE 5430.000000 50.000000 0.208869 0.106329 +dPolE 5440.000000 50.000000 0.003675 0.106204 +dPolE 5450.000000 50.000000 0.075640 0.105823 +dPolE 5460.000000 50.000000 0.019638 0.105877 +dPolE 5470.000000 50.000000 0.025453 0.105692 +dPolE 5480.000000 50.000000 0.078605 0.104799 +dPolE 5490.000000 50.000000 0.291914 0.103860 +dPolE 5500.000000 50.000000 0.154978 0.103917 +dPolE 5510.000000 50.000000 0.007288 0.104109 +dPolE 5520.000000 50.000000 0.251597 0.103695 +dPolE 5530.000000 50.000000 0.262927 0.103324 +dPolE 5540.000000 50.000000 0.184909 0.102948 +dPolE 5550.000000 50.000000 0.141985 0.102832 +dPolE 5560.000000 50.000000 0.222794 0.102610 +dPolE 5570.000000 50.000000 0.097997 0.102368 +dPolE 5580.000000 50.000000 -0.074096 0.102333 +dPolE 5590.000000 50.000000 0.016439 0.102143 +dPolE 5600.000000 50.000000 -0.024814 0.101881 +dPolE 5610.000000 50.000000 0.053590 0.101229 +dPolE 5620.000000 50.000000 0.015345 0.101076 +dPolE 5630.000000 50.000000 -0.055014 0.101008 +dPolE 5640.000000 50.000000 0.067581 0.100465 +dPolE 5650.000000 50.000000 0.209350 0.099861 +dPolE 5660.000000 50.000000 0.183766 0.099538 +dPolE 5670.000000 50.000000 0.034147 0.098640 +dPolE 5680.000000 50.000000 0.001047 0.096889 +dPolE 5690.000000 50.000000 0.220953 0.094625 +dPolE 5700.000000 50.000000 0.102621 0.092020 +dPolE 5710.000000 50.000000 0.158524 0.090620 +dPolE 5720.000000 50.000000 0.023078 0.090058 +dPolE 5730.000000 50.000000 0.016712 0.089197 +dPolE 5740.000000 50.000000 0.203250 0.087398 +dPolE 5750.000000 50.000000 0.041953 0.086654 +dPolE 5760.000000 50.000000 0.058801 0.086025 +dPolE 5770.000000 50.000000 -0.022308 0.084461 +dPolE 5780.000000 50.000000 -0.048358 0.083299 +dPolE 5790.000000 50.000000 -0.050017 0.083183 +dPolE 5800.000000 50.000000 0.225019 0.082343 +dPolE 5810.000000 50.000000 0.068120 0.080475 +dPolE 5820.000000 50.000000 -0.027139 0.078473 +dPolE 5830.000000 50.000000 0.079912 0.080269 +dPolE 5840.000000 50.000000 0.019994 0.084095 +dPolE 5850.000000 50.000000 0.223458 0.083331 +dPolE 5860.000000 50.000000 0.030743 0.083913 +dPolE 5870.000000 50.000000 -0.118912 0.084910 +dPolE 5880.000000 50.000000 0.128263 0.083884 +dPolE 5890.000000 50.000000 0.089484 0.083664 +dPolE 5900.000000 50.000000 0.116867 0.086382 +dPolE 5910.000000 50.000000 0.208324 0.088068 +dPolE 5920.000000 50.000000 0.144473 0.088185 +dPolE 5930.000000 50.000000 -0.014973 0.086956 +dPolE 5940.000000 50.000000 0.032476 0.085602 +dPolE 5950.000000 50.000000 0.128461 0.084487 +dPolE 5960.000000 50.000000 -0.167574 0.084890 +dPolE 5970.000000 50.000000 -0.134894 0.086260 +dPolE 5980.000000 50.000000 -0.078379 0.086995 +dPolE 5990.000000 50.000000 0.073160 0.086871 +dPolE 6000.000000 50.000000 -0.094883 0.087095 +dPolE 6010.000000 50.000000 0.075651 0.086342 +dPolE 6020.000000 50.000000 0.233663 0.085175 +dPolE 6030.000000 50.000000 0.016935 0.084176 +dPolE 6040.000000 50.000000 0.085509 0.083775 +dPolE 6050.000000 50.000000 0.103160 0.085453 +dPolE 6060.000000 50.000000 0.139184 0.085902 +dPolE 6070.000000 50.000000 0.217320 0.085910 +dPolE 6080.000000 50.000000 0.117454 0.086367 +dPolE 6090.000000 50.000000 0.116997 0.086677 +dPolE 6100.000000 50.000000 0.082328 0.086389 +dPolE 6110.000000 50.000000 0.136203 0.085901 +dPolE 6120.000000 50.000000 0.009316 0.085827 +dPolE 6130.000000 50.000000 0.066587 0.085558 +dPolE 6140.000000 50.000000 0.125345 0.085257 +dPolE 6150.000000 50.000000 0.114226 0.085770 +dPolE 6160.000000 50.000000 0.253806 0.086408 +dPolE 6170.000000 50.000000 0.036396 0.087092 +dPolE 6180.000000 50.000000 0.068975 0.087258 +dPolE 6190.000000 50.000000 0.057711 0.087576 +dPolE 6200.000000 50.000000 0.187830 0.087038 +dPolE 6210.000000 50.000000 0.257577 0.087017 +dPolE 6220.000000 50.000000 0.182095 0.087464 +dPolE 6230.000000 50.000000 0.208268 0.086963 +dPolE 6240.000000 50.000000 0.178754 0.086736 +dPolE 6250.000000 50.000000 0.176668 0.087473 +dPolE 6260.000000 50.000000 0.013634 0.088226 +dPolE 6270.000000 50.000000 0.040806 0.088247 +dPolE 6280.000000 50.000000 0.166859 0.088022 +dPolE 6290.000000 50.000000 -0.003307 0.088222 +dPolE 6300.000000 50.000000 0.023766 0.088244 +dPolE 6310.000000 50.000000 0.194189 0.088521 +dPolE 6320.000000 50.000000 0.143716 0.088720 +dPolE 6330.000000 50.000000 -0.035778 0.088598 +dPolE 6340.000000 50.000000 -0.137409 0.088849 +dPolE 6350.000000 50.000000 0.047055 0.088627 +dPolE 6360.000000 50.000000 0.197790 0.088188 +dPolE 6370.000000 50.000000 0.139298 0.088100 +dPolE 6380.000000 50.000000 0.126999 0.088222 +dPolE 6390.000000 50.000000 0.224429 0.088097 +dPolE 6400.000000 50.000000 0.339885 0.087989 +dPolE 6410.000000 50.000000 0.263878 0.088206 +dPolE 6420.000000 50.000000 0.086179 0.088654 +dPolE 6430.000000 50.000000 0.090886 0.088539 +dPolE 6440.000000 50.000000 0.088437 0.088546 +dPolE 6450.000000 50.000000 0.088480 0.088734 +dPolE 6460.000000 50.000000 -0.013867 0.088807 +dPolE 6470.000000 50.000000 -0.029764 0.088738 +dPolE 6480.000000 50.000000 -0.013523 0.088626 +dPolE 6490.000000 50.000000 0.153556 0.088341 +dPolE 6500.000000 50.000000 0.106668 0.088322 +dPolE 6510.000000 50.000000 -0.021111 0.088486 +dPolE 6520.000000 50.000000 -0.006246 0.088406 +dPolE 6530.000000 50.000000 0.116265 0.088311 +dPolE 6540.000000 50.000000 0.035349 0.089227 +dPolE 6550.000000 50.000000 0.122762 0.079212 +dPolE 6560.000000 50.000000 0.163184 0.055552 +dPolE 6570.000000 50.000000 0.056610 0.053515 +dPolE 6580.000000 50.000000 -0.005562 0.073128 +dPolE 6590.000000 50.000000 0.170017 0.087514 +dPolE 6600.000000 50.000000 0.181117 0.088030 +dPolE 6610.000000 50.000000 0.164257 0.088113 +dPolE 6620.000000 50.000000 0.057600 0.088021 +dPolE 6630.000000 50.000000 0.059182 0.087885 +dPolE 6640.000000 50.000000 0.035482 0.087928 +dPolE 6650.000000 50.000000 -0.028288 0.088026 +dPolE 6660.000000 50.000000 0.046244 0.087931 +dPolE 6670.000000 50.000000 0.199071 0.087745 +dPolE 6680.000000 50.000000 0.041816 0.087834 +dPolE 6690.000000 50.000000 0.027848 0.087635 +dPolE 6700.000000 50.000000 0.206371 0.087220 +dPolE 6710.000000 50.000000 0.109588 0.087344 +dPolE 6720.000000 50.000000 -0.006338 0.087332 +dPolE 6730.000000 50.000000 0.224335 0.087028 +dPolE 6740.000000 50.000000 0.270259 0.087115 +dPolE 6750.000000 50.000000 0.128967 0.087382 +dPolE 6760.000000 50.000000 0.158075 0.087364 +dPolE 6770.000000 50.000000 0.067820 0.087376 +dPolE 6780.000000 50.000000 0.157645 0.087087 +dPolE 6790.000000 50.000000 0.096050 0.086971 +dPolE 6800.000000 50.000000 0.001215 0.086965 +dPolE 6810.000000 50.000000 0.033875 0.086918 +dPolE 6820.000000 50.000000 -0.025716 0.086995 +dPolE 6830.000000 50.000000 0.108789 0.086769 +dPolE 6840.000000 50.000000 0.031227 0.086729 +dPolE 6850.000000 50.000000 0.064386 0.086361 +dPolE 6860.000000 50.000000 0.151911 0.086241 +dPolE 6870.000000 50.000000 -0.059324 0.086703 +dPolE 6880.000000 50.000000 0.098867 0.086700 +dPolE 6890.000000 50.000000 0.104649 0.086709 +dPolE 6900.000000 50.000000 0.108659 0.086774 +dPolE 6910.000000 50.000000 0.019477 0.086838 +dPolE 6920.000000 50.000000 -0.001079 0.086786 +dPolE 6930.000000 50.000000 0.285764 0.086427 +dPolE 6940.000000 50.000000 0.127454 0.086490 +dPolE 6950.000000 50.000000 0.093479 0.086610 +dPolE 6960.000000 50.000000 0.066571 0.086673 +dPolE 6970.000000 50.000000 0.045082 0.086543 +dPolE 6980.000000 50.000000 -0.003794 0.086463 +dPolE 6990.000000 50.000000 -0.039103 0.086562 +dPolE 7000.000000 50.000000 0.146396 0.086510 +dPolE 7010.000000 50.000000 0.164355 0.086638 +dPolE 7020.000000 50.000000 0.197475 0.086609 +dPolE 7030.000000 50.000000 0.245538 0.086544 +dPolE 7040.000000 50.000000 0.104987 0.086879 +dPolE 7050.000000 50.000000 0.130120 0.086991 +dPolE 7060.000000 50.000000 -0.044900 0.087166 +dPolE 7070.000000 50.000000 0.008458 0.086777 +dPolE 7080.000000 50.000000 0.197563 0.086636 +dPolE 7090.000000 50.000000 0.145578 0.086907 +dPolE 7100.000000 50.000000 0.293202 0.086952 +dPolE 7110.000000 50.000000 0.303372 0.086995 +dPolE 7120.000000 50.000000 0.007327 0.087291 +dPolE 7130.000000 50.000000 -0.147363 0.087480 +dPolE 7140.000000 50.000000 0.000161 0.087255 +dPolE 7150.000000 50.000000 0.080451 0.087037 +dPolE 7160.000000 50.000000 0.124682 0.087044 +dPolE 7170.000000 50.000000 0.154713 0.087330 +dPolE 7180.000000 50.000000 0.391845 0.087060 +dPolE 7190.000000 50.000000 0.247556 0.087234 +dPolE 7200.000000 50.000000 -0.021009 0.087660 +dPolE 7210.000000 50.000000 0.206961 0.087622 +dPolE 7220.000000 50.000000 0.268095 0.087571 +dPolE 7230.000000 50.000000 0.183932 0.087856 +dPolE 7240.000000 50.000000 0.134496 0.087856 +dPolE 7250.000000 50.000000 0.049193 0.087597 +dPolE 7260.000000 50.000000 0.196490 0.087082 +dPolE 7270.000000 50.000000 0.101348 0.087417 +dPolE 7280.000000 50.000000 0.026705 0.087565 +dPolE 7290.000000 50.000000 0.182919 0.087284 +dPolE 7300.000000 50.000000 0.187144 0.087414 +dPolE 7310.000000 50.000000 0.110315 0.087406 +dPolE 7320.000000 50.000000 0.136693 0.087505 +dPolE 7330.000000 50.000000 0.356282 0.087638 +dPolE 7340.000000 50.000000 0.329326 0.087595 +dPolE 7350.000000 50.000000 0.215243 0.087262 +dPolE 7360.000000 50.000000 0.103000 0.087457 +dPolE 7370.000000 50.000000 0.051681 0.087857 +dPolE 7380.000000 50.000000 0.110789 0.088408 +dPolE 7390.000000 50.000000 0.202520 0.088632 +dPolE 7400.000000 50.000000 0.209748 0.088278 +dPolE 7410.000000 50.000000 0.060688 0.088767 +dPolE 7420.000000 50.000000 -0.066095 0.089588 +dPolE 7430.000000 50.000000 0.112934 0.089646 +dPolE 7440.000000 50.000000 0.088585 0.089734 +dPolE 7450.000000 50.000000 0.172775 0.089756 +dPolE 7460.000000 50.000000 0.056316 0.089948 +dPolE 7470.000000 50.000000 0.193077 0.089523 +dPolE 7480.000000 50.000000 0.174909 0.089469 +dPolE 7490.000000 50.000000 0.062761 0.089936 +dPolE 7500.000000 50.000000 0.060855 0.090011 +dPolE 7510.000000 50.000000 0.244872 0.089804 +dPolE 7520.000000 50.000000 0.049575 0.090633 +dPolE 7530.000000 50.000000 0.136990 0.090831 +dPolE 7540.000000 50.000000 0.209322 0.090285 +dPolE 7550.000000 50.000000 0.145739 0.090523 +dPolE 7560.000000 50.000000 0.138569 0.090705 +dPolE 7570.000000 50.000000 -0.046040 0.090732 +dPolE 7580.000000 50.000000 0.012444 0.090522 +dPolE 7590.000000 50.000000 0.122851 0.090399 +dPolE 7600.000000 50.000000 0.127555 0.091086 +dPolE 7610.000000 50.000000 0.076953 0.091857 +dPolE 7620.000000 50.000000 0.227230 0.092258 +dPolE 7630.000000 50.000000 0.191899 0.092071 +dPolE 7640.000000 50.000000 -0.046569 0.092184 +dPolE 7650.000000 50.000000 0.035272 0.092411 +dPolE 7660.000000 50.000000 0.085939 0.092946 +dPolE 7670.000000 50.000000 0.370741 0.093453 +dPolE 7680.000000 50.000000 0.034097 0.093696 +dPolE 7690.000000 50.000000 -0.132560 0.092893 +dPolE 7700.000000 50.000000 0.038224 0.092339 +dPolE 7710.000000 50.000000 0.105566 0.092989 +dPolE 7720.000000 50.000000 0.155238 0.093992 +dPolE 7730.000000 50.000000 -0.038229 0.094910 +dPolE 7740.000000 50.000000 -0.074810 0.095132 +dPolE 7750.000000 50.000000 0.169033 0.095227 +dPolE 7760.000000 50.000000 0.172014 0.095775 +dPolE 7770.000000 50.000000 -0.084215 0.096435 +dPolE 7780.000000 50.000000 -0.076788 0.096317 +dPolE 7790.000000 50.000000 -0.132661 0.095782 +dPolE 7800.000000 50.000000 -0.045988 0.095565 +dPolE 7810.000000 50.000000 0.082458 0.096211 +dPolE 7820.000000 50.000000 0.202242 0.096565 +dPolE 7830.000000 50.000000 0.051247 0.096888 +dPolE 7840.000000 50.000000 -0.016075 0.097428 +dPolE 7850.000000 50.000000 -0.024712 0.098190 +dPolE 7860.000000 50.000000 -0.027280 0.098630 +dPolE 7870.000000 50.000000 -0.039165 0.098616 +dPolE 7880.000000 50.000000 0.055663 0.098302 +dPolE 7890.000000 50.000000 0.083523 0.098515 +dPolE 7900.000000 50.000000 0.042025 0.099088 +dPolE 7910.000000 50.000000 -0.038900 0.099300 +dPolE 7920.000000 50.000000 -0.002707 0.099514 +dPolE 7930.000000 50.000000 -0.060735 0.099791 +dPolE 7940.000000 50.000000 0.114926 0.099338 +dPolE 7950.000000 50.000000 0.158055 0.099355 +dPolE 7960.000000 50.000000 0.034721 0.100088 +dPolE 7970.000000 50.000000 -0.028050 0.100686 +dPolE 7980.000000 50.000000 0.142754 0.100896 +dPolE 7990.000000 50.000000 0.011404 0.101288 +dPolE 8000.000000 50.000000 0.102720 0.101082 +dPolE 8010.000000 50.000000 0.097495 0.100955 +dPolE 8020.000000 50.000000 0.046017 0.101724 +dPolE 8030.000000 50.000000 -0.123851 0.102558 +dPolE 8040.000000 50.000000 0.050574 0.102335 +dPolE 8050.000000 50.000000 -0.017222 0.102221 +dPolE 8060.000000 50.000000 0.089364 0.102396 +dPolE 8070.000000 50.000000 0.042678 0.103420 +dPolE 8080.000000 50.000000 -0.003098 0.103959 +dPolE 8090.000000 50.000000 0.101247 0.103183 +dPolE 8100.000000 50.000000 0.023261 0.103453 +dPolE 8110.000000 50.000000 0.035597 0.103999 +dPolE 8120.000000 50.000000 0.312342 0.104326 +dPolE 8130.000000 50.000000 0.321042 0.104287 +dPolE 8140.000000 50.000000 0.067196 0.104031 +dPolE 8150.000000 50.000000 0.135584 0.104311 +dPolE 8160.000000 50.000000 -0.058338 0.105346 +dPolE 8170.000000 50.000000 0.206283 0.105458 +dPolE 8180.000000 50.000000 0.144351 0.105301 +dPolE 8190.000000 50.000000 -0.021273 0.105391 +dPolE 8200.000000 50.000000 0.160751 0.105565 +dPolE 8210.000000 50.000000 0.067518 0.106227 +dPolE 8220.000000 50.000000 -0.043298 0.106805 +dPolE 8230.000000 50.000000 0.058260 0.106332 +dPolE 8240.000000 50.000000 -0.073534 0.106324 +dPolE 8250.000000 50.000000 -0.052135 0.107017 +dPolE 8260.000000 50.000000 -0.040361 0.107711 +dPolE 8270.000000 50.000000 0.044316 0.107385 +dPolE 8280.000000 50.000000 0.087120 0.106878 +dPolE 8290.000000 50.000000 0.162355 0.106817 +dPolE 8300.000000 50.000000 0.156522 0.107853 +dPolE 8310.000000 50.000000 -0.115228 0.108836 +dPolE 8320.000000 50.000000 -0.034172 0.108512 +dPolE 8330.000000 50.000000 0.298596 0.107517 +dPolE 8340.000000 50.000000 0.085277 0.107557 +dPolE 8350.000000 50.000000 0.089903 0.108120 +dPolE 8360.000000 50.000000 0.021599 0.109105 +dPolE 8370.000000 50.000000 -0.075828 0.109035 +dPolE 8380.000000 50.000000 -0.111581 0.108826 +dPolE 8390.000000 50.000000 -0.030440 0.108983 +dPolE 8400.000000 50.000000 0.187362 0.109636 +dPolE 8410.000000 50.000000 0.005064 0.110372 +dPolE 8420.000000 50.000000 -0.007840 0.110175 +dPolE 8430.000000 50.000000 0.257418 0.109434 +dPolE 8440.000000 50.000000 0.202046 0.109587 +dPolE 8450.000000 50.000000 0.252613 0.110066 +dPolE 8460.000000 50.000000 0.108154 0.110630 +dPolE 8470.000000 50.000000 0.010701 0.110520 +dPolE 8480.000000 50.000000 -0.000743 0.110089 +dPolE 8490.000000 50.000000 0.098819 0.110708 +dPolE 8500.000000 50.000000 0.153623 0.112580 +dPolE 8510.000000 50.000000 0.160077 0.113341 +dPolE 8520.000000 50.000000 0.209638 0.110959 +dPolE 8530.000000 50.000000 0.114587 0.108602 +dPolE 8540.000000 50.000000 -0.036440 0.108421 +dPolE 8550.000000 50.000000 -0.022706 0.109885 +dPolE 8560.000000 50.000000 0.078598 0.111040 +dPolE 8570.000000 50.000000 0.290721 0.111162 +dPolE 8580.000000 50.000000 0.174217 0.110781 +dPolE 8590.000000 50.000000 0.248769 0.110403 +dPolE 8600.000000 50.000000 0.007427 0.111107 +dPolE 8610.000000 50.000000 0.164445 0.111881 +dPolE 8620.000000 50.000000 0.196027 0.112319 +dPolE 8630.000000 50.000000 0.186653 0.112324 +dPolE 8640.000000 50.000000 0.292819 0.111533 +dPolE 8650.000000 50.000000 0.240694 0.111114 +dPolE 8660.000000 50.000000 -0.006324 0.111979 +dPolE 8670.000000 50.000000 -0.005926 0.112864 +dPolE 8680.000000 50.000000 -0.092747 0.113151 +dPolE 8690.000000 50.000000 0.346756 0.112414 +dPolE 8700.000000 50.000000 -0.000414 0.112579 +dPolE 8710.000000 50.000000 -0.062710 0.112853 +dPolE 8720.000000 50.000000 -0.082691 0.113510 +dPolE 8730.000000 50.000000 0.086545 0.113307 +dPolE 8740.000000 50.000000 0.292286 0.112583 +dPolE 8750.000000 50.000000 -0.190146 0.112880 +dPolE 8760.000000 50.000000 0.297743 0.112389 +dPolE 8770.000000 50.000000 0.371976 0.112922 +dPolE 8780.000000 50.000000 -0.019009 0.113922 +dPolE 8790.000000 50.000000 -0.014668 0.113737 +dPolE 8800.000000 50.000000 0.076268 0.113592 +dPolE 8810.000000 50.000000 0.051599 0.114064 +dPolE 8820.000000 50.000000 0.242850 0.114223 +dPolE 8830.000000 50.000000 0.290411 0.114639 +dPolE 8840.000000 50.000000 0.215166 0.114850 +dPolE 8850.000000 50.000000 0.320322 0.114876 +dPolE 8860.000000 50.000000 -0.098765 0.115255 +dPolE 8870.000000 50.000000 0.089942 0.114678 +dPolE 8880.000000 50.000000 0.226229 0.114546 +dPolE 8890.000000 50.000000 0.150928 0.115083 +dPolE 8900.000000 50.000000 -0.109509 0.115881 +dPolE 8910.000000 50.000000 -0.026452 0.116117 +dPolE 8920.000000 50.000000 0.130052 0.115851 +dPolE 8930.000000 50.000000 0.062112 0.115891 +dPolE 8940.000000 50.000000 0.034333 0.116050 +dPolE 8950.000000 50.000000 0.054012 0.116401 +dPolE 8960.000000 50.000000 0.313726 0.116437 +dPolE 8970.000000 50.000000 0.160329 0.116820 +dPolE 8980.000000 50.000000 0.356492 0.116867 +dPolE 8990.000000 50.000000 0.144998 0.117000 +dPolE 9000.000000 50.000000 0.088696 0.117490 +dPolE 9010.000000 50.000000 0.115878 0.117853 +dPolE 9020.000000 50.000000 -0.216320 0.118360 +dPolE 9030.000000 50.000000 0.153310 0.118303 +dPolE 9040.000000 50.000000 -0.158908 0.118825 +dPolE 9050.000000 50.000000 -0.176754 0.118661 +dPolE 9060.000000 50.000000 -0.046095 0.118897 +dPolE 9070.000000 50.000000 -0.065826 0.119376 +dPolE 9080.000000 50.000000 0.101046 0.119769 +dPolE 9090.000000 50.000000 -0.035525 0.120563 +dPolE 9100.000000 50.000000 0.106745 0.120434 +dPolE 9110.000000 50.000000 0.072575 0.120100 +dPolE 9120.000000 50.000000 0.211764 0.120159 +dPolE 9130.000000 50.000000 0.011733 0.120998 +dPolE 9140.000000 50.000000 0.205628 0.121629 +dPolE 9150.000000 50.000000 -0.133340 0.122162 +dPolE 9160.000000 50.000000 0.014716 0.121513 +dPolE 9170.000000 50.000000 0.402650 0.120788 +dPolE 9180.000000 50.000000 -0.089517 0.121554 +dPolE 9190.000000 50.000000 -0.264642 0.122428 +dPolE 9200.000000 50.000000 0.050312 0.122978 +dPolE 9210.000000 50.000000 -0.042246 0.123566 +dPolE 9220.000000 50.000000 -0.072586 0.124355 +dPolE 9230.000000 50.000000 -0.019303 0.124616 +dPolE 9240.000000 50.000000 -0.040360 0.124735 +dPolE 9250.000000 50.000000 0.040489 0.124886 +dPolE 9260.000000 50.000000 0.058085 0.125329 +dPolE 9270.000000 50.000000 0.019152 0.126011 +dPolE 9280.000000 50.000000 -0.251246 0.127219 +dPolE 9290.000000 50.000000 -0.109117 0.127383 +dPolE 9300.000000 50.000000 0.061124 0.127320 +dPolE 9310.000000 50.000000 -0.135549 0.127828 +dPolE 9320.000000 50.000000 -0.141168 0.127945 +dPolE 9330.000000 50.000000 0.039010 0.128122 +dPolE 9340.000000 50.000000 0.301763 0.128327 +dPolE 9350.000000 50.000000 -0.021654 0.129562 +dPolE 9360.000000 50.000000 -0.178187 0.130613 +dPolE 9370.000000 50.000000 -0.513879 0.131516 +dPolE 9380.000000 50.000000 0.092847 0.130689 +dPolE 9390.000000 50.000000 0.103578 0.130985 +dPolE 9400.000000 50.000000 0.293533 0.131720 +dPolE 9410.000000 50.000000 0.443151 0.132165 +dPolE 9420.000000 50.000000 0.249497 0.133171 +dPolE 9430.000000 50.000000 0.107559 0.134046 +dPolE 9440.000000 50.000000 -0.134879 0.134592 +dPolE 9450.000000 50.000000 0.254653 0.134440 +dPolE 9460.000000 50.000000 0.345178 0.134981 +dPolE 9470.000000 50.000000 -0.001944 0.136244 +dPolE 9480.000000 50.000000 0.132333 0.136823 +dPolE 9490.000000 50.000000 0.294184 0.137363 +dPolE 9500.000000 50.000000 -0.003509 0.138488 +dPolE 9510.000000 50.000000 0.263690 0.138745 +dPolE 9520.000000 50.000000 -0.293510 0.140054 +dPolE 9530.000000 50.000000 0.042798 0.140181 +dPolE 9540.000000 50.000000 0.311804 0.140968 +dPolE 9550.000000 50.000000 0.131024 0.142227 +dPolE 9560.000000 50.000000 0.035514 0.142755 +dPolE 9570.000000 50.000000 -0.121821 0.143458 +dPolE 9580.000000 50.000000 -0.002760 0.143512 +dPolE 9590.000000 50.000000 0.380709 0.143495 +dPolE 9600.000000 50.000000 0.312854 0.144238 +dPolE 9610.000000 50.000000 0.265319 0.144850 +dPolE 9620.000000 50.000000 0.135979 0.145951 +dPolE 9630.000000 50.000000 0.011726 0.146839 +dPolE 9640.000000 50.000000 0.111303 0.147352 +dPolE 9650.000000 50.000000 0.164094 0.148116 +dPolE 9660.000000 50.000000 0.078386 0.148820 +dPolE 9670.000000 50.000000 0.241180 0.149638 +dPolE 9680.000000 50.000000 0.180797 0.150871 +dPolE 9690.000000 50.000000 0.240106 0.151567 +dPolE 9700.000000 50.000000 0.185906 0.152178 +dPolE 9710.000000 50.000000 0.062739 0.153232 +dPolE 9720.000000 50.000000 0.516779 0.153374 +dPolE 9730.000000 50.000000 0.146127 0.155380 +dPolE 9740.000000 50.000000 0.004950 0.156598 +dPolE 9750.000000 50.000000 -0.080080 0.157257 +dPolE 9760.000000 50.000000 0.134193 0.157948 +dPolE 9770.000000 50.000000 0.620771 0.158154 +dPolE 9780.000000 50.000000 -0.037181 0.160132 +dPolE 9790.000000 50.000000 -0.189255 0.161478 +dPolE 9800.000000 50.000000 0.053000 0.162203 +dPolE 9810.000000 50.000000 0.047044 0.163603 +dPolE 9820.000000 50.000000 0.076751 0.164959 +dPolE 9830.000000 50.000000 0.185161 0.165394 +dPolE 9840.000000 50.000000 0.092227 0.166717 +dPolE 9850.000000 50.000000 0.339304 0.167411 +dPolE 9860.000000 50.000000 0.221574 0.168763 +dPolE 9870.000000 50.000000 0.146577 0.170600 +dPolE 9880.000000 50.000000 0.528997 0.171197 +dPolE 9890.000000 50.000000 0.345494 0.172572 +dPolE 9900.000000 50.000000 0.461024 0.173332 +dPolE 9910.000000 50.000000 0.308098 0.174986 +dPolE 9920.000000 50.000000 -0.162157 0.177604 +dPolE 9930.000000 50.000000 0.006326 0.179214 +dPolE 9940.000000 50.000000 0.334360 0.180260 +dPolE 9950.000000 50.000000 -0.057027 0.182277 +dPolE 9960.000000 50.000000 -0.119932 0.184175 +dPolE 9970.000000 50.000000 -0.006253 0.185234 +dPolE 9980.000000 50.000000 0.519621 0.186215 +dPolE 9990.000000 50.000000 0.267923 0.188910 +dPolE 10000.000000 50.000000 0.248118 0.190716 +dPolE 10025.000000 50.000000 0.152581 0.094372 +dPolE 10050.000000 50.000000 0.046835 0.092254 +dPolE 10075.000000 50.000000 0.071503 0.089518 +dPolE 10100.000000 50.000000 0.064264 0.087440 +dPolE 10125.000000 50.000000 0.045417 0.085643 +dPolE 10150.000000 50.000000 0.050526 0.083420 +dPolE 10175.000000 50.000000 0.081504 0.081413 +dPolE 10200.000000 50.000000 0.138516 0.079604 +dPolE 10225.000000 50.000000 0.023612 0.077694 +dPolE 10250.000000 50.000000 -0.034759 0.075919 +dPolE 10275.000000 50.000000 0.084213 0.074371 +dPolE 10300.000000 50.000000 0.102200 0.072524 +dPolE 10325.000000 50.000000 0.076141 0.070646 +dPolE 10350.000000 50.000000 0.037539 0.069126 +dPolE 10375.000000 50.000000 0.028366 0.067670 +dPolE 10400.000000 50.000000 0.046620 0.066283 +dPolE 10425.000000 50.000000 -0.024087 0.065021 +dPolE 10450.000000 50.000000 -0.068686 0.063770 +dPolE 10475.000000 50.000000 -0.042254 0.062482 +dPolE 10500.000000 50.000000 -0.008435 0.061300 +dPolE 10525.000000 50.000000 0.021159 0.060189 +dPolE 10550.000000 50.000000 0.009279 0.059161 +dPolE 10575.000000 50.000000 0.045246 0.058213 +dPolE 10600.000000 50.000000 0.120174 0.057330 +dPolE 10625.000000 50.000000 0.041877 0.056234 +dPolE 10650.000000 50.000000 0.024311 0.055241 +dPolE 10675.000000 50.000000 0.121992 0.054409 +dPolE 10700.000000 50.000000 0.111421 0.053441 +dPolE 10725.000000 50.000000 0.071521 0.052527 +dPolE 10750.000000 50.000000 0.035966 0.051927 +dPolE 10775.000000 50.000000 -0.006697 0.051020 +dPolE 10800.000000 50.000000 -0.052587 0.049936 +dPolE 10825.000000 50.000000 -0.051546 0.049184 +dPolE 10850.000000 50.000000 -0.013720 0.048367 +dPolE 10875.000000 50.000000 0.071368 0.047459 +dPolE 10900.000000 50.000000 0.013154 0.046843 +dPolE 10925.000000 50.000000 -0.028981 0.046211 +dPolE 10950.000000 50.000000 0.044921 0.045369 +dPolE 10975.000000 50.000000 0.090744 0.044708 +dPolE 11000.000000 50.000000 0.116784 0.044144 +dPolE 11025.000000 50.000000 0.079365 0.043659 +dPolE 11050.000000 50.000000 0.074622 0.043234 +dPolE 11075.000000 50.000000 0.100000 0.042864 +dPolE 11100.000000 50.000000 0.065482 0.042237 +dPolE 11125.000000 50.000000 0.041837 0.041744 +dPolE 11150.000000 50.000000 0.044492 0.041511 +dPolE 11175.000000 50.000000 0.069375 0.041156 +dPolE 11200.000000 50.000000 0.093298 0.040813 +dPolE 11225.000000 50.000000 0.087946 0.040635 +dPolE 11250.000000 50.000000 0.114908 0.040335 +dPolE 11275.000000 50.000000 0.155507 0.039979 +dPolE 11300.000000 50.000000 0.060232 0.039978 +dPolE 11325.000000 50.000000 0.005977 0.039845 +dPolE 11350.000000 50.000000 -0.001503 0.039565 +dPolE 11375.000000 50.000000 0.029070 0.039414 +dPolE 11400.000000 50.000000 0.050225 0.039258 +dPolE 11425.000000 50.000000 0.041431 0.039058 +dPolE 11450.000000 50.000000 0.024371 0.038875 +dPolE 11475.000000 50.000000 0.013225 0.038676 +dPolE 11500.000000 50.000000 0.043588 0.038368 +dPolE 11525.000000 50.000000 0.034056 0.038105 +dPolE 11550.000000 50.000000 0.001495 0.037871 +dPolE 11575.000000 50.000000 0.073277 0.037683 +dPolE 11600.000000 50.000000 0.123967 0.037389 +dPolE 11625.000000 50.000000 0.150184 0.036974 +dPolE 11650.000000 50.000000 0.102966 0.036766 +dPolE 11675.000000 50.000000 0.052358 0.036551 +dPolE 11700.000000 50.000000 0.012720 0.036261 +dPolE 11725.000000 50.000000 0.061797 0.036044 +dPolE 11750.000000 50.000000 0.119468 0.035820 +dPolE 11775.000000 50.000000 0.091141 0.035463 +dPolE 11800.000000 50.000000 0.035242 0.035161 +dPolE 11825.000000 50.000000 -0.026771 0.034889 +dPolE 11850.000000 50.000000 0.082657 0.034549 +dPolE 11875.000000 50.000000 0.151105 0.034241 +dPolE 11900.000000 50.000000 0.178102 0.033964 +dPolE 11925.000000 50.000000 0.072418 0.033706 +dPolE 11950.000000 50.000000 -0.005042 0.033468 +dPolE 11975.000000 50.000000 -0.017378 0.033258 +dPolE 12000.000000 50.000000 0.032459 0.033013 +dPolE 12025.000000 50.000000 0.075808 0.032770 +dPolE 12050.000000 50.000000 0.051718 0.032561 +dPolE 12075.000000 50.000000 0.053770 0.032399 +dPolE 12100.000000 50.000000 0.072295 0.032248 +dPolE 12125.000000 50.000000 0.122173 0.032023 +dPolE 12150.000000 50.000000 0.120936 0.031827 +dPolE 12175.000000 50.000000 0.080726 0.031655 +dPolE 12200.000000 50.000000 0.146554 0.031553 +dPolE 12225.000000 50.000000 0.141716 0.031463 +dPolE 12250.000000 50.000000 0.049742 0.031386 +dPolE 12275.000000 50.000000 0.108819 0.031321 +dPolE 12300.000000 50.000000 0.137050 0.031305 +dPolE 12325.000000 50.000000 0.066105 0.031385 +dPolE 12350.000000 50.000000 0.050572 0.031308 +dPolE 12375.000000 50.000000 0.058425 0.031252 +dPolE 12400.000000 50.000000 0.092348 0.031424 +dPolE 12425.000000 50.000000 0.096442 0.031356 +dPolE 12450.000000 50.000000 0.091021 0.031204 +dPolE 12475.000000 50.000000 0.122796 0.031306 +dPolE 12500.000000 50.000000 0.130061 0.031208 +dPolE 12525.000000 50.000000 0.120036 0.030962 +dPolE 12550.000000 50.000000 0.184366 0.030836 +dPolE 12575.000000 50.000000 0.166628 0.030717 +dPolE 12600.000000 50.000000 0.056298 0.030609 +dPolE 12625.000000 50.000000 0.060937 0.030533 +dPolE 12650.000000 50.000000 0.059844 0.030421 +dPolE 12675.000000 50.000000 0.031463 0.030245 +dPolE 12700.000000 50.000000 0.045291 0.030038 +dPolE 12725.000000 50.000000 0.085928 0.029877 +dPolE 12750.000000 50.000000 0.173254 0.029857 +dPolE 12775.000000 50.000000 0.149223 0.029703 +dPolE 12800.000000 50.000000 0.090681 0.029514 +dPolE 12825.000000 50.000000 0.060579 0.029378 +dPolE 12850.000000 50.000000 0.086419 0.029235 +dPolE 12875.000000 50.000000 0.134316 0.029094 +dPolE 12900.000000 50.000000 0.093290 0.028995 +dPolE 12925.000000 50.000000 0.084218 0.028846 +dPolE 12950.000000 50.000000 0.100563 0.028657 +dPolE 12975.000000 50.000000 0.089612 0.028574 +dPolE 13000.000000 50.000000 0.094492 0.028476 +dPolE 13025.000000 50.000000 0.117111 0.028362 +dPolE 13050.000000 50.000000 0.078422 0.028224 +dPolE 13075.000000 50.000000 0.064552 0.028107 +dPolE 13100.000000 50.000000 0.096692 0.028025 +dPolE 13125.000000 50.000000 0.115457 0.027945 +dPolE 13150.000000 50.000000 0.125393 0.027863 +dPolE 13175.000000 50.000000 0.121085 0.027773 +dPolE 13200.000000 50.000000 0.103467 0.027702 +dPolE 13225.000000 50.000000 0.095719 0.027657 +dPolE 13250.000000 50.000000 0.131886 0.027684 +dPolE 13275.000000 50.000000 0.095692 0.027670 +dPolE 13300.000000 50.000000 0.050700 0.027649 +dPolE 13325.000000 50.000000 0.116515 0.027672 +dPolE 13350.000000 50.000000 0.108039 0.027720 +dPolE 13375.000000 50.000000 0.061545 0.027779 +dPolE 13400.000000 50.000000 0.064221 0.027794 +dPolE 13425.000000 50.000000 0.054148 0.027862 +dPolE 13450.000000 50.000000 0.036366 0.027972 +dPolE 13475.000000 50.000000 0.079189 0.028130 +dPolE 13500.000000 50.000000 0.085544 0.028314 +dPolE 13525.000000 50.000000 0.055045 0.028524 +dPolE 13550.000000 50.000000 0.081256 0.028898 +dPolE 13575.000000 50.000000 0.089659 0.029292 +dPolE 13600.000000 50.000000 0.072629 0.029706 +dPolE 13625.000000 50.000000 0.114777 0.029951 +dPolE 13650.000000 50.000000 0.130876 0.030203 +dPolE 13675.000000 50.000000 0.095649 0.030491 +dPolE 13700.000000 50.000000 0.103346 0.031205 +dPolE 13725.000000 50.000000 0.093872 0.032420 +dPolE 13750.000000 50.000000 0.028327 0.034640 +dPolE 13775.000000 50.000000 0.078082 0.037767 +dPolE 13800.000000 50.000000 0.126841 0.041063 +dPolE 13825.000000 50.000000 0.067339 0.043093 +dPolE 13850.000000 50.000000 0.003209 0.042794 +dPolE 13875.000000 50.000000 -0.031575 0.041560 +dPolE 13900.000000 50.000000 0.012818 0.039770 +dPolE 13925.000000 50.000000 0.032024 0.038672 +dPolE 13950.000000 50.000000 0.029453 0.037646 +dPolE 13975.000000 50.000000 -0.021403 0.035906 +dPolE 14000.000000 50.000000 0.051185 0.034814 +dPolE 14025.000000 50.000000 0.143311 0.034009 +dPolE 14050.000000 50.000000 0.054902 0.033205 +dPolE 14075.000000 50.000000 0.077124 0.032608 +dPolE 14100.000000 50.000000 0.142772 0.032113 +dPolE 14125.000000 50.000000 0.088560 0.031527 +dPolE 14150.000000 50.000000 0.062694 0.031133 +dPolE 14175.000000 50.000000 0.053721 0.030856 +dPolE 14200.000000 50.000000 0.034113 0.030542 +dPolE 14225.000000 50.000000 0.042613 0.030335 +dPolE 14250.000000 50.000000 0.069303 0.030205 +dPolE 14275.000000 50.000000 0.049999 0.030019 +dPolE 14300.000000 50.000000 0.077763 0.029877 +dPolE 14325.000000 50.000000 0.142449 0.029772 +dPolE 14350.000000 50.000000 0.096170 0.029705 +dPolE 14375.000000 50.000000 0.120153 0.029609 +dPolE 14400.000000 50.000000 0.210104 0.029484 +dPolE 14425.000000 50.000000 0.086393 0.029546 +dPolE 14450.000000 50.000000 0.074470 0.029497 +dPolE 14475.000000 50.000000 0.178751 0.029330 +dPolE 14500.000000 50.000000 0.111406 0.029325 +dPolE 14525.000000 50.000000 0.109485 0.029344 +dPolE 14550.000000 50.000000 0.185084 0.029388 +dPolE 14575.000000 50.000000 0.033561 0.029326 +dPolE 14600.000000 50.000000 0.007110 0.029329 +dPolE 14625.000000 50.000000 0.141830 0.029413 +dPolE 14650.000000 50.000000 0.114589 0.029344 +dPolE 14675.000000 50.000000 0.102406 0.029365 +dPolE 14700.000000 50.000000 0.120576 0.029515 +dPolE 14725.000000 50.000000 0.109012 0.029435 +dPolE 14750.000000 50.000000 0.103379 0.029435 +dPolE 14775.000000 50.000000 0.107930 0.029565 +dPolE 14800.000000 50.000000 0.126052 0.029540 +dPolE 14825.000000 50.000000 0.139197 0.029529 +dPolE 14850.000000 50.000000 0.143966 0.029556 +dPolE 14875.000000 50.000000 0.150782 0.029598 +dPolE 14900.000000 50.000000 0.146443 0.029679 +dPolE 14925.000000 50.000000 0.125928 0.029813 +dPolE 14950.000000 50.000000 0.113343 0.029805 +dPolE 14975.000000 50.000000 0.114033 0.029874 +dPolE 15000.000000 50.000000 0.131850 0.030069 +dPolE 15025.000000 50.000000 0.139883 0.030022 +dPolE 15050.000000 50.000000 0.170255 0.030050 +dPolE 15075.000000 50.000000 0.232574 0.030213 +dPolE 15100.000000 50.000000 0.176046 0.030212 +dPolE 15125.000000 50.000000 0.143490 0.030233 +dPolE 15150.000000 50.000000 0.156189 0.030304 +dPolE 15175.000000 50.000000 0.136798 0.030365 +dPolE 15200.000000 50.000000 0.130024 0.030462 +dPolE 15225.000000 50.000000 0.142669 0.030604 +dPolE 15250.000000 50.000000 0.108080 0.030671 +dPolE 15275.000000 50.000000 0.120231 0.030771 +dPolE 15300.000000 50.000000 0.193911 0.030918 +dPolE 15325.000000 50.000000 0.141915 0.030965 +dPolE 15350.000000 50.000000 0.138096 0.031045 +dPolE 15375.000000 50.000000 0.197004 0.031169 +dPolE 15400.000000 50.000000 0.145419 0.031254 +dPolE 15425.000000 50.000000 0.163312 0.031392 +dPolE 15450.000000 50.000000 0.260337 0.031589 +dPolE 15475.000000 50.000000 0.140924 0.031698 +dPolE 15500.000000 50.000000 0.080452 0.031832 +dPolE 15525.000000 50.000000 0.079832 0.031991 +dPolE 15550.000000 50.000000 0.105684 0.031954 +dPolE 15575.000000 50.000000 0.163938 0.032043 +dPolE 15600.000000 50.000000 0.242791 0.032241 +dPolE 15625.000000 50.000000 0.122723 0.032359 +dPolE 15650.000000 50.000000 0.101089 0.032511 +dPolE 15675.000000 50.000000 0.152847 0.032681 +dPolE 15700.000000 50.000000 0.126868 0.032736 +dPolE 15725.000000 50.000000 0.114179 0.032878 +dPolE 15750.000000 50.000000 0.114074 0.033073 +dPolE 15775.000000 50.000000 0.143358 0.033194 +dPolE 15800.000000 50.000000 0.158324 0.033329 +dPolE 15825.000000 50.000000 0.169875 0.033482 +dPolE 15850.000000 50.000000 0.215157 0.033684 +dPolE 15875.000000 50.000000 0.168855 0.033845 +dPolE 15900.000000 50.000000 0.084405 0.033997 +dPolE 15925.000000 50.000000 0.045089 0.034206 +dPolE 15950.000000 50.000000 0.073173 0.034425 +dPolE 15975.000000 50.000000 0.117952 0.034636 +dPolE 16000.000000 50.000000 0.117858 0.034799 +dPolE 16025.000000 50.000000 0.152817 0.034942 +dPolE 16050.000000 50.000000 0.192196 0.035113 +dPolE 16075.000000 50.000000 0.209770 0.035376 +dPolE 16100.000000 50.000000 0.159250 0.035629 +dPolE 16125.000000 50.000000 0.108281 0.035853 +dPolE 16150.000000 50.000000 0.096832 0.036016 +dPolE 16175.000000 50.000000 0.079838 0.036337 +dPolE 16200.000000 50.000000 0.101045 0.036629 +dPolE 16225.000000 50.000000 0.191604 0.036811 +dPolE 16250.000000 50.000000 0.194736 0.037065 +dPolE 16275.000000 50.000000 0.162039 0.037366 +dPolE 16300.000000 50.000000 0.093280 0.037726 +dPolE 16325.000000 50.000000 0.108397 0.038030 +dPolE 16350.000000 50.000000 0.152333 0.038359 +dPolE 16375.000000 50.000000 0.222268 0.038722 +dPolE 16400.000000 50.000000 0.162699 0.039050 +dPolE 16425.000000 50.000000 0.142561 0.039548 +dPolE 16450.000000 50.000000 0.150028 0.040175 +dPolE 16475.000000 50.000000 0.068276 0.040488 +dPolE 16500.000000 50.000000 0.027317 0.041100 +dPolE 16525.000000 50.000000 0.016355 0.041911 +dPolE 16550.000000 50.000000 0.025466 0.042646 +dPolE 16575.000000 50.000000 0.088947 0.043699 +dPolE 16600.000000 50.000000 0.134143 0.045013 +dPolE 16625.000000 50.000000 -0.012207 0.046661 +dPolE 16650.000000 50.000000 0.016130 0.049292 +dPolE 16675.000000 50.000000 0.087027 0.052711 +dPolE 16700.000000 50.000000 0.080981 0.056974 +dPolE 16725.000000 50.000000 -0.025690 0.063414 +dPolE 16750.000000 50.000000 -0.097947 0.071740 +dPolE 16775.000000 50.000000 0.001565 0.082019 +dPolE 16800.000000 50.000000 0.042786 0.095587 +dPolE 16825.000000 50.000000 0.033039 0.112207 +dPolE 16850.000000 50.000000 -0.059271 0.131196 +dPolE 16875.000000 50.000000 -0.164263 0.153737 +dPolE 16900.000000 50.000000 -0.105080 0.180220 +dPolE 16925.000000 50.000000 0.163321 0.209968 +dPolE 16950.000000 50.000000 -0.259923 0.244560 +dPolE 16975.000000 50.000000 -0.650729 0.282122 +dPolE 17000.000000 50.000000 -0.879995 0.322788 +dPolE 1930.000000 60.000000 2.012906 0.166024 +dPolE 1940.000000 60.000000 1.517541 0.151911 +dPolE 1950.000000 60.000000 1.048276 0.140543 +dPolE 1960.000000 60.000000 0.787670 0.132892 +dPolE 1970.000000 60.000000 1.001257 0.125979 +dPolE 1980.000000 60.000000 1.318819 0.120419 +dPolE 1990.000000 60.000000 0.956136 0.116724 +dPolE 2000.000000 60.000000 0.802506 0.113034 +dPolE 2010.000000 60.000000 1.487767 0.108800 +dPolE 2020.000000 60.000000 1.543620 0.105312 +dPolE 2030.000000 60.000000 1.335608 0.102187 +dPolE 2040.000000 60.000000 1.448875 0.099041 +dPolE 2050.000000 60.000000 1.482400 0.096033 +dPolE 2060.000000 60.000000 1.437595 0.093189 +dPolE 2070.000000 60.000000 1.338508 0.090487 +dPolE 2080.000000 60.000000 1.162719 0.088067 +dPolE 2090.000000 60.000000 1.070732 0.085652 +dPolE 2100.000000 60.000000 1.206537 0.083220 +dPolE 2110.000000 60.000000 1.063960 0.081457 +dPolE 2120.000000 60.000000 1.058711 0.079629 +dPolE 2130.000000 60.000000 1.092527 0.077830 +dPolE 2140.000000 60.000000 1.133319 0.076244 +dPolE 2150.000000 60.000000 1.059309 0.074881 +dPolE 2160.000000 60.000000 1.020163 0.073639 +dPolE 2170.000000 60.000000 1.154215 0.072340 +dPolE 2180.000000 60.000000 1.053484 0.071223 +dPolE 2190.000000 60.000000 0.948986 0.070078 +dPolE 2200.000000 60.000000 0.850124 0.068967 +dPolE 2210.000000 60.000000 0.928981 0.067785 +dPolE 2220.000000 60.000000 0.871681 0.066706 +dPolE 2230.000000 60.000000 0.862197 0.065678 +dPolE 2240.000000 60.000000 0.892073 0.064678 +dPolE 2250.000000 60.000000 0.985824 0.063710 +dPolE 2260.000000 60.000000 0.914113 0.062941 +dPolE 2270.000000 60.000000 0.883417 0.062120 +dPolE 2280.000000 60.000000 0.915131 0.061265 +dPolE 2290.000000 60.000000 0.843216 0.060484 +dPolE 2300.000000 60.000000 0.655426 0.059890 +dPolE 2310.000000 60.000000 0.668532 0.059190 +dPolE 2320.000000 60.000000 0.704822 0.058487 +dPolE 2330.000000 60.000000 0.651066 0.057925 +dPolE 2340.000000 60.000000 0.742352 0.057311 +dPolE 2350.000000 60.000000 0.694571 0.056804 +dPolE 2360.000000 60.000000 0.705838 0.056327 +dPolE 2370.000000 60.000000 0.643769 0.055906 +dPolE 2380.000000 60.000000 0.742556 0.055393 +dPolE 2390.000000 60.000000 0.744434 0.055051 +dPolE 2400.000000 60.000000 0.601366 0.054853 +dPolE 2410.000000 60.000000 0.647136 0.054551 +dPolE 2420.000000 60.000000 0.612973 0.054316 +dPolE 2430.000000 60.000000 0.626893 0.054157 +dPolE 2440.000000 60.000000 0.553787 0.054048 +dPolE 2450.000000 60.000000 0.590559 0.053877 +dPolE 2460.000000 60.000000 0.663062 0.053740 +dPolE 2470.000000 60.000000 0.626739 0.053694 +dPolE 2480.000000 60.000000 0.528072 0.053683 +dPolE 2490.000000 60.000000 0.492209 0.053679 +dPolE 2500.000000 60.000000 0.514337 0.053711 +dPolE 2510.000000 60.000000 0.556894 0.053756 +dPolE 2520.000000 60.000000 0.528882 0.053805 +dPolE 2530.000000 60.000000 0.628777 0.053843 +dPolE 2540.000000 60.000000 0.657087 0.054030 +dPolE 2550.000000 60.000000 0.600725 0.054261 +dPolE 2560.000000 60.000000 0.683492 0.054453 +dPolE 2570.000000 60.000000 0.682710 0.054750 +dPolE 2580.000000 60.000000 0.574746 0.055127 +dPolE 2590.000000 60.000000 0.450928 0.055551 +dPolE 2600.000000 60.000000 0.465204 0.055965 +dPolE 2610.000000 60.000000 0.548784 0.056341 +dPolE 2620.000000 60.000000 0.470654 0.056823 +dPolE 2630.000000 60.000000 0.568797 0.057247 +dPolE 2640.000000 60.000000 0.683455 0.057706 +dPolE 2650.000000 60.000000 0.564646 0.058363 +dPolE 2660.000000 60.000000 0.544952 0.059032 +dPolE 2670.000000 60.000000 0.525642 0.059708 +dPolE 2680.000000 60.000000 0.606003 0.060276 +dPolE 2690.000000 60.000000 0.459058 0.060999 +dPolE 2700.000000 60.000000 0.412868 0.061703 +dPolE 2710.000000 60.000000 0.632934 0.062279 +dPolE 2720.000000 60.000000 0.471783 0.063085 +dPolE 2730.000000 60.000000 0.303105 0.063878 +dPolE 2740.000000 60.000000 0.481616 0.064456 +dPolE 2750.000000 60.000000 0.514108 0.065099 +dPolE 2760.000000 60.000000 0.403951 0.065910 +dPolE 2770.000000 60.000000 0.308047 0.066861 +dPolE 2780.000000 60.000000 0.396232 0.067368 +dPolE 2790.000000 60.000000 0.433405 0.067826 +dPolE 2800.000000 60.000000 0.273145 0.068513 +dPolE 2810.000000 60.000000 0.277516 0.069190 +dPolE 2820.000000 60.000000 0.385901 0.069792 +dPolE 2830.000000 60.000000 0.286315 0.070541 +dPolE 2840.000000 60.000000 0.248585 0.071187 +dPolE 2850.000000 60.000000 0.375307 0.071875 +dPolE 2860.000000 60.000000 0.502115 0.072578 +dPolE 2870.000000 60.000000 0.464268 0.073327 +dPolE 2880.000000 60.000000 0.443289 0.074213 +dPolE 2890.000000 60.000000 0.359726 0.075204 +dPolE 2900.000000 60.000000 0.241482 0.076263 +dPolE 2910.000000 60.000000 0.322618 0.077175 +dPolE 2920.000000 60.000000 0.245633 0.078247 +dPolE 2930.000000 60.000000 0.238916 0.079234 +dPolE 2940.000000 60.000000 0.339293 0.080051 +dPolE 2950.000000 60.000000 0.425088 0.080870 +dPolE 2960.000000 60.000000 0.285559 0.081991 +dPolE 2970.000000 60.000000 0.140763 0.083040 +dPolE 2980.000000 60.000000 0.285890 0.083856 +dPolE 2990.000000 60.000000 0.238392 0.084897 +dPolE 3000.000000 60.000000 0.307564 0.085832 +dPolE 3010.000000 60.000000 0.410211 0.086622 +dPolE 3020.000000 60.000000 0.413145 0.087629 +dPolE 3030.000000 60.000000 0.420332 0.088777 +dPolE 3040.000000 60.000000 0.351613 0.089892 +dPolE 3050.000000 60.000000 0.371732 0.091095 +dPolE 3060.000000 60.000000 0.429186 0.092156 +dPolE 3070.000000 60.000000 0.258853 0.093421 +dPolE 3080.000000 60.000000 0.136309 0.094728 +dPolE 3090.000000 60.000000 0.090759 0.096009 +dPolE 3100.000000 60.000000 0.247481 0.096951 +dPolE 3110.000000 60.000000 0.312184 0.097941 +dPolE 3120.000000 60.000000 0.087910 0.099404 +dPolE 3130.000000 60.000000 0.097312 0.100363 +dPolE 3140.000000 60.000000 0.316313 0.101167 +dPolE 3150.000000 60.000000 0.229031 0.102512 +dPolE 3160.000000 60.000000 0.209536 0.103613 +dPolE 3170.000000 60.000000 0.403433 0.104500 +dPolE 3180.000000 60.000000 0.319613 0.105630 +dPolE 3190.000000 60.000000 0.244034 0.106942 +dPolE 3200.000000 60.000000 0.205142 0.108116 +dPolE 3210.000000 60.000000 0.301141 0.109206 +dPolE 3220.000000 60.000000 0.116690 0.110629 +dPolE 3230.000000 60.000000 0.248951 0.111554 +dPolE 3240.000000 60.000000 0.327950 0.112564 +dPolE 3250.000000 60.000000 0.055768 0.114153 +dPolE 3260.000000 60.000000 0.127588 0.116108 +dPolE 3270.000000 60.000000 0.140855 0.118569 +dPolE 3280.000000 60.000000 -0.090111 0.121208 +dPolE 3290.000000 60.000000 -0.250775 0.123269 +dPolE 3300.000000 60.000000 0.108512 0.124537 +dPolE 3310.000000 60.000000 0.315369 0.126020 +dPolE 3320.000000 60.000000 -0.047663 0.127803 +dPolE 3330.000000 60.000000 0.064585 0.128619 +dPolE 3340.000000 60.000000 0.013478 0.129538 +dPolE 3350.000000 60.000000 0.336589 0.130020 +dPolE 3360.000000 60.000000 0.344854 0.130901 +dPolE 3370.000000 60.000000 0.002839 0.132060 +dPolE 3380.000000 60.000000 0.107063 0.132445 +dPolE 3390.000000 60.000000 0.029733 0.132633 +dPolE 3400.000000 60.000000 0.042743 0.132864 +dPolE 3410.000000 60.000000 0.114713 0.133329 +dPolE 3420.000000 60.000000 -0.109458 0.134759 +dPolE 3430.000000 60.000000 -0.016534 0.135476 +dPolE 3440.000000 60.000000 0.057097 0.136153 +dPolE 3450.000000 60.000000 -0.016529 0.137638 +dPolE 3460.000000 60.000000 -0.094496 0.138731 +dPolE 3470.000000 60.000000 0.025352 0.139784 +dPolE 3480.000000 60.000000 0.010211 0.140785 +dPolE 3490.000000 60.000000 0.032855 0.141702 +dPolE 3500.000000 60.000000 0.078735 0.142641 +dPolE 3510.000000 60.000000 -0.145660 0.144171 +dPolE 3520.000000 60.000000 -0.209177 0.145380 +dPolE 3530.000000 60.000000 -0.096237 0.146256 +dPolE 3540.000000 60.000000 -0.011748 0.147407 +dPolE 3550.000000 60.000000 0.070835 0.148319 +dPolE 3560.000000 60.000000 0.234130 0.148924 +dPolE 3570.000000 60.000000 0.074468 0.150262 +dPolE 3580.000000 60.000000 -0.147008 0.151762 +dPolE 3590.000000 60.000000 -0.401542 0.153291 +dPolE 3600.000000 60.000000 0.069330 0.153365 +dPolE 3610.000000 60.000000 0.202357 0.154179 +dPolE 3620.000000 60.000000 -0.250456 0.155569 +dPolE 3630.000000 60.000000 -0.056951 0.155791 +dPolE 3640.000000 60.000000 0.076664 0.156613 +dPolE 3650.000000 60.000000 0.334934 0.157501 +dPolE 3660.000000 60.000000 -0.015695 0.157859 +dPolE 3670.000000 60.000000 -0.165628 0.157011 +dPolE 3680.000000 60.000000 -0.086505 0.156465 +dPolE 3690.000000 60.000000 0.074703 0.156772 +dPolE 3700.000000 60.000000 0.094066 0.158513 +dPolE 3710.000000 60.000000 0.177586 0.160198 +dPolE 3720.000000 60.000000 0.144650 0.160872 +dPolE 3730.000000 60.000000 0.218147 0.161727 +dPolE 3740.000000 60.000000 0.130061 0.163071 +dPolE 3750.000000 60.000000 0.132308 0.162891 +dPolE 3760.000000 60.000000 0.368955 0.161826 +dPolE 3770.000000 60.000000 0.086583 0.162480 +dPolE 3780.000000 60.000000 0.224982 0.161135 +dPolE 3790.000000 60.000000 0.517139 0.159236 +dPolE 3800.000000 60.000000 0.122036 0.159771 +dPolE 3810.000000 60.000000 -0.143888 0.161526 +dPolE 3820.000000 60.000000 0.218056 0.161773 +dPolE 3830.000000 60.000000 0.205284 0.160486 +dPolE 3840.000000 60.000000 0.152828 0.160559 +dPolE 3850.000000 60.000000 0.041870 0.162105 +dPolE 3860.000000 60.000000 0.385637 0.160270 +dPolE 3870.000000 60.000000 0.173754 0.158163 +dPolE 3880.000000 60.000000 0.079956 0.155766 +dPolE 3890.000000 60.000000 0.372540 0.155516 +dPolE 3900.000000 60.000000 0.289990 0.159888 +dPolE 3910.000000 60.000000 0.120917 0.164680 +dPolE 3920.000000 60.000000 0.347971 0.163195 +dPolE 3930.000000 60.000000 0.140706 0.160638 +dPolE 3940.000000 60.000000 -0.135560 0.158817 +dPolE 3950.000000 60.000000 0.175016 0.157565 +dPolE 3960.000000 60.000000 0.429315 0.158530 +dPolE 3970.000000 60.000000 0.233016 0.160381 +dPolE 3980.000000 60.000000 0.095791 0.158290 +dPolE 3990.000000 60.000000 0.090064 0.155715 +dPolE 4000.000000 60.000000 0.408313 0.156133 +dPolE 4010.000000 60.000000 0.019883 0.160375 +dPolE 4020.000000 60.000000 0.262995 0.161961 +dPolE 4030.000000 60.000000 0.606708 0.161273 +dPolE 4040.000000 60.000000 0.044502 0.160865 +dPolE 4050.000000 60.000000 -0.000265 0.157496 +dPolE 4060.000000 60.000000 0.343310 0.153298 +dPolE 4070.000000 60.000000 0.244451 0.153903 +dPolE 4080.000000 60.000000 0.103483 0.158583 +dPolE 4090.000000 60.000000 0.202244 0.161794 +dPolE 4100.000000 60.000000 0.231990 0.162197 +dPolE 4110.000000 60.000000 0.225513 0.161943 +dPolE 4120.000000 60.000000 0.036817 0.160238 +dPolE 4130.000000 60.000000 -0.161719 0.155863 +dPolE 4140.000000 60.000000 0.055976 0.153493 +dPolE 4150.000000 60.000000 0.521694 0.154886 +dPolE 4160.000000 60.000000 0.440408 0.156412 +dPolE 4170.000000 60.000000 0.119660 0.156491 +dPolE 4180.000000 60.000000 0.179259 0.156300 +dPolE 4190.000000 60.000000 0.120551 0.158319 +dPolE 4200.000000 60.000000 0.045001 0.158823 +dPolE 4210.000000 60.000000 0.187368 0.154256 +dPolE 4220.000000 60.000000 0.164454 0.149176 +dPolE 4230.000000 60.000000 -0.001282 0.146429 +dPolE 4240.000000 60.000000 0.075093 0.145910 +dPolE 4250.000000 60.000000 0.193039 0.150652 +dPolE 4260.000000 60.000000 0.107504 0.156677 +dPolE 4270.000000 60.000000 0.190375 0.155843 +dPolE 4280.000000 60.000000 0.197353 0.151204 +dPolE 4290.000000 60.000000 0.396372 0.151957 +dPolE 4300.000000 60.000000 0.411136 0.152785 +dPolE 4310.000000 60.000000 0.168788 0.151966 +dPolE 4320.000000 60.000000 -0.097161 0.154677 +dPolE 4330.000000 60.000000 -0.294491 0.157424 +dPolE 4340.000000 60.000000 0.145084 0.152963 +dPolE 4350.000000 60.000000 -0.127899 0.151738 +dPolE 4360.000000 60.000000 -0.041852 0.153614 +dPolE 4370.000000 60.000000 0.393021 0.152898 +dPolE 4380.000000 60.000000 0.087159 0.152407 +dPolE 4390.000000 60.000000 0.016607 0.151374 +dPolE 4400.000000 60.000000 0.214413 0.150409 +dPolE 4410.000000 60.000000 0.119124 0.148008 +dPolE 4420.000000 60.000000 0.019184 0.143197 +dPolE 4430.000000 60.000000 0.167331 0.142210 +dPolE 4440.000000 60.000000 0.176085 0.143491 +dPolE 4450.000000 60.000000 -0.045418 0.143051 +dPolE 4460.000000 60.000000 0.022234 0.141801 +dPolE 4470.000000 60.000000 -0.093566 0.142707 +dPolE 4480.000000 60.000000 0.087509 0.143185 +dPolE 4490.000000 60.000000 0.218287 0.142785 +dPolE 4500.000000 60.000000 0.019291 0.142262 +dPolE 4510.000000 60.000000 -0.033816 0.142266 +dPolE 4520.000000 60.000000 0.091466 0.142477 +dPolE 4530.000000 60.000000 0.080271 0.142276 +dPolE 4540.000000 60.000000 -0.102243 0.141907 +dPolE 4550.000000 60.000000 0.143918 0.140740 +dPolE 4560.000000 60.000000 0.415811 0.138969 +dPolE 4570.000000 60.000000 0.225204 0.137271 +dPolE 4580.000000 60.000000 0.019862 0.134459 +dPolE 4590.000000 60.000000 0.031293 0.132086 +dPolE 4600.000000 60.000000 -0.200797 0.134403 +dPolE 4610.000000 60.000000 -0.320499 0.137978 +dPolE 4620.000000 60.000000 0.117204 0.138334 +dPolE 4630.000000 60.000000 0.189403 0.134967 +dPolE 4640.000000 60.000000 0.087753 0.130138 +dPolE 4650.000000 60.000000 0.098829 0.128327 +dPolE 4660.000000 60.000000 -0.077205 0.130117 +dPolE 4670.000000 60.000000 -0.245260 0.132979 +dPolE 4680.000000 60.000000 0.005344 0.133564 +dPolE 4690.000000 60.000000 0.090938 0.133917 +dPolE 4700.000000 60.000000 0.025743 0.136678 +dPolE 4710.000000 60.000000 0.214742 0.138321 +dPolE 4720.000000 60.000000 0.173827 0.136733 +dPolE 4730.000000 60.000000 -0.229929 0.134498 +dPolE 4740.000000 60.000000 -0.081735 0.133240 +dPolE 4750.000000 60.000000 0.195827 0.133332 +dPolE 4760.000000 60.000000 0.180940 0.132825 +dPolE 4770.000000 60.000000 -0.005475 0.131929 +dPolE 4780.000000 60.000000 0.210858 0.130367 +dPolE 4790.000000 60.000000 0.070924 0.129433 +dPolE 4800.000000 60.000000 -0.111462 0.129398 +dPolE 4810.000000 60.000000 0.329546 0.128394 +dPolE 4820.000000 60.000000 0.463682 0.128158 +dPolE 4830.000000 60.000000 0.464544 0.127671 +dPolE 4840.000000 60.000000 -0.002532 0.126805 +dPolE 4850.000000 60.000000 -0.131224 0.121136 +dPolE 4860.000000 60.000000 -0.002068 0.106446 +dPolE 4870.000000 60.000000 -0.012645 0.101216 +dPolE 4880.000000 60.000000 0.066608 0.116139 +dPolE 4890.000000 60.000000 0.047193 0.123736 +dPolE 4900.000000 60.000000 0.082183 0.123475 +dPolE 4910.000000 60.000000 0.190313 0.122139 +dPolE 4920.000000 60.000000 0.157589 0.122487 +dPolE 4930.000000 60.000000 0.125586 0.122128 +dPolE 4940.000000 60.000000 0.321886 0.120985 +dPolE 4950.000000 60.000000 0.046117 0.122641 +dPolE 4960.000000 60.000000 -0.108656 0.123517 +dPolE 4970.000000 60.000000 0.126604 0.122227 +dPolE 4980.000000 60.000000 0.199338 0.120867 +dPolE 4990.000000 60.000000 -0.171764 0.119758 +dPolE 5000.000000 60.000000 -0.195585 0.119232 +dPolE 5010.000000 60.000000 0.321588 0.118311 +dPolE 5020.000000 60.000000 0.325229 0.117469 +dPolE 5030.000000 60.000000 -0.055149 0.117903 +dPolE 5040.000000 60.000000 0.004251 0.118164 +dPolE 5050.000000 60.000000 -0.113387 0.118527 +dPolE 5060.000000 60.000000 -0.003599 0.117835 +dPolE 5070.000000 60.000000 0.016080 0.117550 +dPolE 5080.000000 60.000000 0.035811 0.117689 +dPolE 5090.000000 60.000000 0.183251 0.117369 +dPolE 5100.000000 60.000000 0.356640 0.117047 +dPolE 5110.000000 60.000000 0.016492 0.117045 +dPolE 5120.000000 60.000000 0.079526 0.116154 +dPolE 5130.000000 60.000000 0.148511 0.115928 +dPolE 5140.000000 60.000000 0.003792 0.115983 +dPolE 5150.000000 60.000000 -0.014981 0.115731 +dPolE 5160.000000 60.000000 0.185916 0.114992 +dPolE 5170.000000 60.000000 0.023081 0.114969 +dPolE 5180.000000 60.000000 0.058113 0.114609 +dPolE 5190.000000 60.000000 0.234280 0.113978 +dPolE 5200.000000 60.000000 0.021568 0.113598 +dPolE 5210.000000 60.000000 -0.011126 0.113164 +dPolE 5220.000000 60.000000 -0.056340 0.113105 +dPolE 5230.000000 60.000000 0.113413 0.112530 +dPolE 5240.000000 60.000000 0.044475 0.112269 +dPolE 5250.000000 60.000000 0.170499 0.111628 +dPolE 5260.000000 60.000000 0.072612 0.110962 +dPolE 5270.000000 60.000000 -0.044845 0.110125 +dPolE 5280.000000 60.000000 -0.027013 0.109833 +dPolE 5290.000000 60.000000 0.138673 0.109454 +dPolE 5300.000000 60.000000 0.151788 0.109079 +dPolE 5310.000000 60.000000 0.065455 0.109106 +dPolE 5320.000000 60.000000 -0.130497 0.109179 +dPolE 5330.000000 60.000000 0.071921 0.108144 +dPolE 5340.000000 60.000000 0.080741 0.107166 +dPolE 5350.000000 60.000000 0.080720 0.106823 +dPolE 5360.000000 60.000000 0.070902 0.106610 +dPolE 5370.000000 60.000000 0.098840 0.106368 +dPolE 5380.000000 60.000000 0.042272 0.106063 +dPolE 5390.000000 60.000000 -0.016387 0.105314 +dPolE 5400.000000 60.000000 0.096247 0.104663 +dPolE 5410.000000 60.000000 0.057187 0.104383 +dPolE 5420.000000 60.000000 0.060314 0.103689 +dPolE 5430.000000 60.000000 0.158107 0.102714 +dPolE 5440.000000 60.000000 0.346014 0.102088 +dPolE 5450.000000 60.000000 0.123500 0.102076 +dPolE 5460.000000 60.000000 -0.086974 0.102310 +dPolE 5470.000000 60.000000 0.000926 0.102000 +dPolE 5480.000000 60.000000 0.000325 0.101195 +dPolE 5490.000000 60.000000 -0.091806 0.100625 +dPolE 5500.000000 60.000000 0.003272 0.100385 +dPolE 5510.000000 60.000000 0.132771 0.100232 +dPolE 5520.000000 60.000000 0.066032 0.100149 +dPolE 5530.000000 60.000000 0.068240 0.099794 +dPolE 5540.000000 60.000000 -0.002075 0.099448 +dPolE 5550.000000 60.000000 0.065494 0.099182 +dPolE 5560.000000 60.000000 0.228883 0.098771 +dPolE 5570.000000 60.000000 0.179819 0.098499 +dPolE 5580.000000 60.000000 0.229377 0.098224 +dPolE 5590.000000 60.000000 0.200761 0.098161 +dPolE 5600.000000 60.000000 -0.029814 0.098136 +dPolE 5610.000000 60.000000 -0.031860 0.097613 +dPolE 5620.000000 60.000000 0.124401 0.097211 +dPolE 5630.000000 60.000000 -0.012732 0.097206 +dPolE 5640.000000 60.000000 0.199609 0.096599 +dPolE 5650.000000 60.000000 0.111434 0.096258 +dPolE 5660.000000 60.000000 -0.022822 0.096012 +dPolE 5670.000000 60.000000 0.050791 0.094920 +dPolE 5680.000000 60.000000 0.208713 0.093045 +dPolE 5690.000000 60.000000 0.193145 0.091105 +dPolE 5700.000000 60.000000 0.163296 0.088494 +dPolE 5710.000000 60.000000 0.236489 0.087101 +dPolE 5720.000000 60.000000 0.135189 0.086526 +dPolE 5730.000000 60.000000 0.103073 0.085716 +dPolE 5740.000000 60.000000 0.102735 0.084146 +dPolE 5750.000000 60.000000 0.281283 0.083101 +dPolE 5760.000000 60.000000 0.106584 0.082693 +dPolE 5770.000000 60.000000 0.003989 0.081233 +dPolE 5780.000000 60.000000 0.144296 0.079909 +dPolE 5790.000000 60.000000 0.308160 0.079599 +dPolE 5800.000000 60.000000 0.338627 0.079034 +dPolE 5810.000000 60.000000 0.297521 0.077089 +dPolE 5820.000000 60.000000 0.160348 0.075233 +dPolE 5830.000000 60.000000 0.079083 0.077147 +dPolE 5840.000000 60.000000 0.086507 0.080734 +dPolE 5850.000000 60.000000 0.057972 0.080172 +dPolE 5860.000000 60.000000 -0.002917 0.080654 +dPolE 5870.000000 60.000000 0.072600 0.081397 +dPolE 5880.000000 60.000000 0.140201 0.080528 +dPolE 5890.000000 60.000000 0.127896 0.080279 +dPolE 5900.000000 60.000000 0.266977 0.082813 +dPolE 5910.000000 60.000000 0.150759 0.084638 +dPolE 5920.000000 60.000000 0.158137 0.084640 +dPolE 5930.000000 60.000000 0.308715 0.083125 +dPolE 5940.000000 60.000000 0.197292 0.081998 +dPolE 5950.000000 60.000000 0.070092 0.081099 +dPolE 5960.000000 60.000000 0.169407 0.081197 +dPolE 5970.000000 60.000000 0.170079 0.082542 +dPolE 5980.000000 60.000000 0.142755 0.083250 +dPolE 5990.000000 60.000000 0.019858 0.083426 +dPolE 6000.000000 60.000000 0.124299 0.083397 +dPolE 6010.000000 60.000000 0.185808 0.082752 +dPolE 6020.000000 60.000000 -0.012032 0.081977 +dPolE 6030.000000 60.000000 0.036965 0.080755 +dPolE 6040.000000 60.000000 0.065805 0.080384 +dPolE 6050.000000 60.000000 0.156506 0.081915 +dPolE 6060.000000 60.000000 0.257697 0.082311 +dPolE 6070.000000 60.000000 0.051270 0.082622 +dPolE 6080.000000 60.000000 0.035386 0.082889 +dPolE 6090.000000 60.000000 0.275184 0.082930 +dPolE 6100.000000 60.000000 0.296988 0.082644 +dPolE 6110.000000 60.000000 0.176791 0.082296 +dPolE 6120.000000 60.000000 0.182026 0.082092 +dPolE 6130.000000 60.000000 0.198043 0.081923 +dPolE 6140.000000 60.000000 0.023700 0.081856 +dPolE 6150.000000 60.000000 0.111927 0.082241 +dPolE 6160.000000 60.000000 0.250651 0.082854 +dPolE 6170.000000 60.000000 0.173763 0.083344 +dPolE 6180.000000 60.000000 0.139855 0.083521 +dPolE 6190.000000 60.000000 0.063427 0.083886 +dPolE 6200.000000 60.000000 0.169010 0.083391 +dPolE 6210.000000 60.000000 0.323890 0.083307 +dPolE 6220.000000 60.000000 0.102857 0.083870 +dPolE 6230.000000 60.000000 0.116962 0.083402 +dPolE 6240.000000 60.000000 0.292263 0.082961 +dPolE 6250.000000 60.000000 0.133243 0.083827 +dPolE 6260.000000 60.000000 0.013898 0.084501 +dPolE 6270.000000 60.000000 0.160133 0.084381 +dPolE 6280.000000 60.000000 0.269942 0.084180 +dPolE 6290.000000 60.000000 0.164173 0.084307 +dPolE 6300.000000 60.000000 0.079537 0.084424 +dPolE 6310.000000 60.000000 0.238625 0.084717 +dPolE 6320.000000 60.000000 0.288097 0.084811 +dPolE 6330.000000 60.000000 0.245282 0.084552 +dPolE 6340.000000 60.000000 0.092056 0.084808 +dPolE 6350.000000 60.000000 0.160028 0.084743 +dPolE 6360.000000 60.000000 0.283320 0.084320 +dPolE 6370.000000 60.000000 0.236331 0.084203 +dPolE 6380.000000 60.000000 0.162948 0.084389 +dPolE 6390.000000 60.000000 0.159945 0.084372 +dPolE 6400.000000 60.000000 0.235756 0.084243 +dPolE 6410.000000 60.000000 0.137601 0.084513 +dPolE 6420.000000 60.000000 0.085332 0.084828 +dPolE 6430.000000 60.000000 0.166905 0.084651 +dPolE 6440.000000 60.000000 0.177600 0.084652 +dPolE 6450.000000 60.000000 0.225392 0.084712 +dPolE 6460.000000 60.000000 0.183263 0.084707 +dPolE 6470.000000 60.000000 0.168135 0.084692 +dPolE 6480.000000 60.000000 0.130577 0.084612 +dPolE 6490.000000 60.000000 0.082343 0.084552 +dPolE 6500.000000 60.000000 0.091108 0.084478 +dPolE 6510.000000 60.000000 0.017791 0.084591 +dPolE 6520.000000 60.000000 0.148927 0.084355 +dPolE 6530.000000 60.000000 0.193966 0.084378 +dPolE 6540.000000 60.000000 0.386095 0.084938 +dPolE 6550.000000 60.000000 0.161694 0.075539 +dPolE 6560.000000 60.000000 0.025184 0.053060 +dPolE 6570.000000 60.000000 0.074273 0.051177 +dPolE 6580.000000 60.000000 0.143584 0.069831 +dPolE 6590.000000 60.000000 0.153618 0.083617 +dPolE 6600.000000 60.000000 0.188167 0.084097 +dPolE 6610.000000 60.000000 0.212066 0.084132 +dPolE 6620.000000 60.000000 0.178455 0.083975 +dPolE 6630.000000 60.000000 0.200655 0.083825 +dPolE 6640.000000 60.000000 0.178088 0.083882 +dPolE 6650.000000 60.000000 0.054024 0.084031 +dPolE 6660.000000 60.000000 0.029878 0.084035 +dPolE 6670.000000 60.000000 -0.009503 0.084046 +dPolE 6680.000000 60.000000 0.102650 0.083850 +dPolE 6690.000000 60.000000 0.036005 0.083720 +dPolE 6700.000000 60.000000 0.140745 0.083372 +dPolE 6710.000000 60.000000 0.294385 0.083227 +dPolE 6720.000000 60.000000 0.167801 0.083262 +dPolE 6730.000000 60.000000 0.063641 0.083315 +dPolE 6740.000000 60.000000 0.187800 0.083287 +dPolE 6750.000000 60.000000 0.247689 0.083342 +dPolE 6760.000000 60.000000 0.265954 0.083321 +dPolE 6770.000000 60.000000 0.224049 0.083237 +dPolE 6780.000000 60.000000 0.178510 0.083116 +dPolE 6790.000000 60.000000 0.152835 0.082944 +dPolE 6800.000000 60.000000 0.259618 0.082757 +dPolE 6810.000000 60.000000 0.087262 0.082876 +dPolE 6820.000000 60.000000 -0.030939 0.083023 +dPolE 6830.000000 60.000000 0.182961 0.082778 +dPolE 6840.000000 60.000000 0.160519 0.082652 +dPolE 6850.000000 60.000000 0.171789 0.082284 +dPolE 6860.000000 60.000000 0.053327 0.082391 +dPolE 6870.000000 60.000000 0.218266 0.082467 +dPolE 6880.000000 60.000000 0.203370 0.082601 +dPolE 6890.000000 60.000000 0.061948 0.082750 +dPolE 6900.000000 60.000000 0.027185 0.082853 +dPolE 6910.000000 60.000000 0.090774 0.082785 +dPolE 6920.000000 60.000000 0.101120 0.082658 +dPolE 6930.000000 60.000000 0.079887 0.082619 +dPolE 6940.000000 60.000000 0.077907 0.082529 +dPolE 6950.000000 60.000000 0.200988 0.082496 +dPolE 6960.000000 60.000000 0.174280 0.082536 +dPolE 6970.000000 60.000000 0.140318 0.082446 +dPolE 6980.000000 60.000000 0.211945 0.082259 +dPolE 6990.000000 60.000000 0.199837 0.082325 +dPolE 7000.000000 60.000000 0.185053 0.082447 +dPolE 7010.000000 60.000000 0.191758 0.082589 +dPolE 7020.000000 60.000000 0.297614 0.082512 +dPolE 7030.000000 60.000000 0.284766 0.082483 +dPolE 7040.000000 60.000000 0.306752 0.082595 +dPolE 7050.000000 60.000000 0.049521 0.082996 +dPolE 7060.000000 60.000000 0.145427 0.082911 +dPolE 7070.000000 60.000000 0.244727 0.082507 +dPolE 7080.000000 60.000000 0.084332 0.082693 +dPolE 7090.000000 60.000000 -0.097994 0.083089 +dPolE 7100.000000 60.000000 0.251055 0.082905 +dPolE 7110.000000 60.000000 0.027463 0.083177 +dPolE 7120.000000 60.000000 -0.129593 0.083339 +dPolE 7130.000000 60.000000 0.084185 0.083107 +dPolE 7140.000000 60.000000 0.327654 0.082795 +dPolE 7150.000000 60.000000 0.341273 0.082711 +dPolE 7160.000000 60.000000 0.142004 0.082961 +dPolE 7170.000000 60.000000 -0.062626 0.083430 +dPolE 7180.000000 60.000000 0.139195 0.083212 +dPolE 7190.000000 60.000000 0.151693 0.083223 +dPolE 7200.000000 60.000000 0.178745 0.083325 +dPolE 7210.000000 60.000000 0.173650 0.083507 +dPolE 7220.000000 60.000000 0.040657 0.083645 +dPolE 7230.000000 60.000000 0.019403 0.083847 +dPolE 7240.000000 60.000000 0.201372 0.083624 +dPolE 7250.000000 60.000000 0.072531 0.083414 +dPolE 7260.000000 60.000000 0.143067 0.082984 +dPolE 7270.000000 60.000000 0.252953 0.083046 +dPolE 7280.000000 60.000000 0.089824 0.083310 +dPolE 7290.000000 60.000000 0.258245 0.083045 +dPolE 7300.000000 60.000000 0.180000 0.083217 +dPolE 7310.000000 60.000000 -0.050995 0.083369 +dPolE 7320.000000 60.000000 -0.026875 0.083493 +dPolE 7330.000000 60.000000 0.201200 0.083558 +dPolE 7340.000000 60.000000 0.201142 0.083482 +dPolE 7350.000000 60.000000 0.189028 0.083094 +dPolE 7360.000000 60.000000 0.227143 0.083089 +dPolE 7370.000000 60.000000 0.125067 0.083560 +dPolE 7380.000000 60.000000 0.062117 0.084185 +dPolE 7390.000000 60.000000 0.169948 0.084355 +dPolE 7400.000000 60.000000 0.128697 0.084085 +dPolE 7410.000000 60.000000 0.004881 0.084567 +dPolE 7420.000000 60.000000 -0.001962 0.085201 +dPolE 7430.000000 60.000000 -0.087260 0.085519 +dPolE 7440.000000 60.000000 0.229332 0.085251 +dPolE 7450.000000 60.000000 0.346598 0.085201 +dPolE 7460.000000 60.000000 0.034713 0.085610 +dPolE 7470.000000 60.000000 0.093028 0.085248 +dPolE 7480.000000 60.000000 -0.075545 0.085352 +dPolE 7490.000000 60.000000 0.047192 0.085584 +dPolE 7500.000000 60.000000 0.045580 0.085632 +dPolE 7510.000000 60.000000 0.063444 0.085593 +dPolE 7520.000000 60.000000 0.045224 0.086181 +dPolE 7530.000000 60.000000 0.078509 0.086415 +dPolE 7540.000000 60.000000 0.029237 0.086032 +dPolE 7550.000000 60.000000 0.099049 0.086124 +dPolE 7560.000000 60.000000 0.167421 0.086201 +dPolE 7570.000000 60.000000 0.256069 0.085982 +dPolE 7580.000000 60.000000 0.204231 0.085924 +dPolE 7590.000000 60.000000 0.354660 0.085754 +dPolE 7600.000000 60.000000 0.338245 0.086405 +dPolE 7610.000000 60.000000 0.176456 0.087235 +dPolE 7620.000000 60.000000 -0.010395 0.087946 +dPolE 7630.000000 60.000000 0.104322 0.087607 +dPolE 7640.000000 60.000000 0.124780 0.087466 +dPolE 7650.000000 60.000000 0.097981 0.087786 +dPolE 7660.000000 60.000000 0.217367 0.088230 +dPolE 7670.000000 60.000000 0.045520 0.089154 +dPolE 7680.000000 60.000000 0.242028 0.088808 +dPolE 7690.000000 60.000000 0.172157 0.087969 +dPolE 7700.000000 60.000000 -0.043741 0.087871 +dPolE 7710.000000 60.000000 0.006323 0.088474 +dPolE 7720.000000 60.000000 0.046395 0.089456 +dPolE 7730.000000 60.000000 0.232535 0.089902 +dPolE 7740.000000 60.000000 0.125717 0.090210 +dPolE 7750.000000 60.000000 0.154078 0.090568 +dPolE 7760.000000 60.000000 0.136593 0.091082 +dPolE 7770.000000 60.000000 0.111889 0.091427 +dPolE 7780.000000 60.000000 0.103868 0.091341 +dPolE 7790.000000 60.000000 0.135696 0.090767 +dPolE 7800.000000 60.000000 0.222373 0.090515 +dPolE 7810.000000 60.000000 -0.043707 0.091557 +dPolE 7820.000000 60.000000 0.237575 0.091676 +dPolE 7830.000000 60.000000 -0.174745 0.092256 +dPolE 7840.000000 60.000000 0.001376 0.092526 +dPolE 7850.000000 60.000000 -0.019454 0.093256 +dPolE 7860.000000 60.000000 0.205862 0.093405 +dPolE 7870.000000 60.000000 0.133786 0.093486 +dPolE 7880.000000 60.000000 -0.015592 0.093444 +dPolE 7890.000000 60.000000 0.105253 0.093520 +dPolE 7900.000000 60.000000 0.207354 0.093877 +dPolE 7910.000000 60.000000 0.147134 0.094078 +dPolE 7920.000000 60.000000 0.056141 0.094416 +dPolE 7930.000000 60.000000 -0.278233 0.094975 +dPolE 7940.000000 60.000000 0.067886 0.094360 +dPolE 7950.000000 60.000000 0.035684 0.094432 +dPolE 7960.000000 60.000000 0.037822 0.094986 +dPolE 7970.000000 60.000000 0.164968 0.095378 +dPolE 7980.000000 60.000000 -0.021381 0.095930 +dPolE 7990.000000 60.000000 0.021369 0.096104 +dPolE 8000.000000 60.000000 0.039115 0.096016 +dPolE 8010.000000 60.000000 0.200876 0.095700 +dPolE 8020.000000 60.000000 0.150668 0.096458 +dPolE 8030.000000 60.000000 -0.006049 0.097229 +dPolE 8040.000000 60.000000 -0.007201 0.097184 +dPolE 8050.000000 60.000000 0.000144 0.097011 +dPolE 8060.000000 60.000000 -0.171862 0.097543 +dPolE 8070.000000 60.000000 -0.055202 0.098291 +dPolE 8080.000000 60.000000 0.167659 0.098445 +dPolE 8090.000000 60.000000 -0.197306 0.098250 +dPolE 8100.000000 60.000000 -0.097093 0.098318 +dPolE 8110.000000 60.000000 0.064757 0.098664 +dPolE 8120.000000 60.000000 0.098449 0.099254 +dPolE 8130.000000 60.000000 0.065933 0.099234 +dPolE 8140.000000 60.000000 0.101959 0.098630 +dPolE 8150.000000 60.000000 0.020447 0.099024 +dPolE 8160.000000 60.000000 -0.125884 0.100039 +dPolE 8170.000000 60.000000 -0.038215 0.100350 +dPolE 8180.000000 60.000000 0.026441 0.100006 +dPolE 8190.000000 60.000000 0.103361 0.099840 +dPolE 8200.000000 60.000000 0.067673 0.100325 +dPolE 8210.000000 60.000000 0.188639 0.100619 +dPolE 8220.000000 60.000000 -0.079886 0.101264 +dPolE 8230.000000 60.000000 -0.019543 0.100896 +dPolE 8240.000000 60.000000 -0.323460 0.101195 +dPolE 8250.000000 60.000000 -0.062173 0.101587 +dPolE 8260.000000 60.000000 -0.019745 0.102158 +dPolE 8270.000000 60.000000 0.245653 0.101517 +dPolE 8280.000000 60.000000 0.070946 0.101339 +dPolE 8290.000000 60.000000 0.090145 0.101424 +dPolE 8300.000000 60.000000 0.060208 0.102416 +dPolE 8310.000000 60.000000 0.051519 0.103095 +dPolE 8320.000000 60.000000 -0.053318 0.102962 +dPolE 8330.000000 60.000000 0.082070 0.102195 +dPolE 8340.000000 60.000000 0.068009 0.102031 +dPolE 8350.000000 60.000000 -0.072490 0.102739 +dPolE 8360.000000 60.000000 -0.033713 0.103541 +dPolE 8370.000000 60.000000 0.074254 0.103155 +dPolE 8380.000000 60.000000 0.144977 0.102833 +dPolE 8390.000000 60.000000 0.202452 0.103031 +dPolE 8400.000000 60.000000 0.012331 0.104179 +dPolE 8410.000000 60.000000 0.200689 0.104367 +dPolE 8420.000000 60.000000 0.096518 0.104282 +dPolE 8430.000000 60.000000 -0.003237 0.104076 +dPolE 8440.000000 60.000000 -0.044137 0.104156 +dPolE 8450.000000 60.000000 -0.033162 0.104716 +dPolE 8460.000000 60.000000 -0.032217 0.105037 +dPolE 8470.000000 60.000000 0.009517 0.104752 +dPolE 8480.000000 60.000000 -0.010382 0.104356 +dPolE 8490.000000 60.000000 0.026214 0.105118 +dPolE 8500.000000 60.000000 0.004031 0.106978 +dPolE 8510.000000 60.000000 -0.007056 0.107609 +dPolE 8520.000000 60.000000 0.196748 0.105109 +dPolE 8530.000000 60.000000 0.115836 0.102858 +dPolE 8540.000000 60.000000 0.068295 0.102658 +dPolE 8550.000000 60.000000 0.208107 0.103915 +dPolE 8560.000000 60.000000 0.189266 0.105062 +dPolE 8570.000000 60.000000 0.122676 0.105475 +dPolE 8580.000000 60.000000 0.291119 0.104843 +dPolE 8590.000000 60.000000 0.163401 0.104726 +dPolE 8600.000000 60.000000 0.122800 0.105118 +dPolE 8610.000000 60.000000 0.203327 0.105899 +dPolE 8620.000000 60.000000 0.254595 0.106261 +dPolE 8630.000000 60.000000 0.100387 0.106450 +dPolE 8640.000000 60.000000 -0.143099 0.106129 +dPolE 8650.000000 60.000000 0.270118 0.105228 +dPolE 8660.000000 60.000000 0.211600 0.105826 +dPolE 8670.000000 60.000000 0.081225 0.106790 +dPolE 8680.000000 60.000000 0.156393 0.106803 +dPolE 8690.000000 60.000000 0.284784 0.106470 +dPolE 8700.000000 60.000000 -0.093330 0.106707 +dPolE 8710.000000 60.000000 -0.164886 0.107024 +dPolE 8720.000000 60.000000 -0.261765 0.107757 +dPolE 8730.000000 60.000000 0.125406 0.107223 +dPolE 8740.000000 60.000000 0.037430 0.106917 +dPolE 8750.000000 60.000000 0.174532 0.106488 +dPolE 8760.000000 60.000000 0.075162 0.106671 +dPolE 8770.000000 60.000000 -0.180023 0.107611 +dPolE 8780.000000 60.000000 -0.069375 0.108014 +dPolE 8790.000000 60.000000 -0.141326 0.107933 +dPolE 8800.000000 60.000000 -0.156172 0.107840 +dPolE 8810.000000 60.000000 -0.154611 0.108276 +dPolE 8820.000000 60.000000 0.023752 0.108463 +dPolE 8830.000000 60.000000 -0.266025 0.109257 +dPolE 8840.000000 60.000000 -0.063078 0.109034 +dPolE 8850.000000 60.000000 0.004317 0.109190 +dPolE 8860.000000 60.000000 0.198353 0.108699 +dPolE 8870.000000 60.000000 0.202025 0.108369 +dPolE 8880.000000 60.000000 0.115495 0.108537 +dPolE 8890.000000 60.000000 0.291885 0.108811 +dPolE 8900.000000 60.000000 0.071418 0.109478 +dPolE 8910.000000 60.000000 0.148548 0.109585 +dPolE 8920.000000 60.000000 0.017649 0.109749 +dPolE 8930.000000 60.000000 0.140426 0.109569 +dPolE 8940.000000 60.000000 0.074536 0.109818 +dPolE 8950.000000 60.000000 0.054627 0.110177 +dPolE 8960.000000 60.000000 0.124845 0.110413 +dPolE 8970.000000 60.000000 -0.075502 0.110925 +dPolE 8980.000000 60.000000 0.072488 0.110964 +dPolE 8990.000000 60.000000 0.130981 0.110702 +dPolE 9000.000000 60.000000 0.281172 0.110894 +dPolE 9010.000000 60.000000 0.076178 0.111510 +dPolE 9020.000000 60.000000 -0.020340 0.111776 +dPolE 9030.000000 60.000000 0.102377 0.112034 +dPolE 9040.000000 60.000000 0.084048 0.112130 +dPolE 9050.000000 60.000000 -0.022555 0.112106 +dPolE 9060.000000 60.000000 0.067964 0.112343 +dPolE 9070.000000 60.000000 0.070370 0.112772 +dPolE 9080.000000 60.000000 0.198317 0.113183 +dPolE 9090.000000 60.000000 0.120366 0.113825 +dPolE 9100.000000 60.000000 -0.114567 0.114205 +dPolE 9110.000000 60.000000 0.024088 0.113704 +dPolE 9120.000000 60.000000 0.114906 0.113853 +dPolE 9130.000000 60.000000 0.182992 0.114255 +dPolE 9140.000000 60.000000 0.029897 0.115341 +dPolE 9150.000000 60.000000 -0.125045 0.115547 +dPolE 9160.000000 60.000000 -0.174434 0.115192 +dPolE 9170.000000 60.000000 0.049018 0.114665 +dPolE 9180.000000 60.000000 0.208448 0.114584 +dPolE 9190.000000 60.000000 0.044254 0.115449 +dPolE 9200.000000 60.000000 0.031514 0.116349 +dPolE 9210.000000 60.000000 0.061862 0.116778 +dPolE 9220.000000 60.000000 -0.250280 0.117910 +dPolE 9230.000000 60.000000 -0.043079 0.117845 +dPolE 9240.000000 60.000000 -0.140478 0.118150 +dPolE 9250.000000 60.000000 0.050646 0.118089 +dPolE 9260.000000 60.000000 0.046491 0.118596 +dPolE 9270.000000 60.000000 0.076549 0.119207 +dPolE 9280.000000 60.000000 -0.012797 0.119917 +dPolE 9290.000000 60.000000 -0.055536 0.120313 +dPolE 9300.000000 60.000000 0.023674 0.120407 +dPolE 9310.000000 60.000000 0.039636 0.120626 +dPolE 9320.000000 60.000000 -0.105306 0.121003 +dPolE 9330.000000 60.000000 0.016215 0.121262 +dPolE 9340.000000 60.000000 0.089493 0.121605 +dPolE 9350.000000 60.000000 0.197735 0.122196 +dPolE 9360.000000 60.000000 0.228468 0.122872 +dPolE 9370.000000 60.000000 0.156132 0.123387 +dPolE 9380.000000 60.000000 0.058850 0.123650 +dPolE 9390.000000 60.000000 0.257087 0.123568 +dPolE 9400.000000 60.000000 -0.042116 0.124992 +dPolE 9410.000000 60.000000 -0.106206 0.125761 +dPolE 9420.000000 60.000000 0.115229 0.126118 +dPolE 9430.000000 60.000000 0.047629 0.126809 +dPolE 9440.000000 60.000000 0.124309 0.126843 +dPolE 9450.000000 60.000000 0.152086 0.127261 +dPolE 9460.000000 60.000000 0.289476 0.127642 +dPolE 9470.000000 60.000000 0.157019 0.128621 +dPolE 9480.000000 60.000000 0.079362 0.129422 +dPolE 9490.000000 60.000000 -0.051359 0.130428 +dPolE 9500.000000 60.000000 0.078019 0.130779 +dPolE 9510.000000 60.000000 -0.421694 0.132152 +dPolE 9520.000000 60.000000 -0.361005 0.132452 +dPolE 9530.000000 60.000000 0.348417 0.132006 +dPolE 9540.000000 60.000000 -0.157572 0.133928 +dPolE 9550.000000 60.000000 0.051605 0.134605 +dPolE 9560.000000 60.000000 -0.044595 0.135022 +dPolE 9570.000000 60.000000 0.189181 0.134891 +dPolE 9580.000000 60.000000 0.065294 0.135403 +dPolE 9590.000000 60.000000 -0.100555 0.136280 +dPolE 9600.000000 60.000000 -0.014758 0.136830 +dPolE 9610.000000 60.000000 -0.151899 0.137603 +dPolE 9620.000000 60.000000 -0.204871 0.138527 +dPolE 9630.000000 60.000000 0.091369 0.138686 +dPolE 9640.000000 60.000000 0.130819 0.139145 +dPolE 9650.000000 60.000000 0.050353 0.140042 +dPolE 9660.000000 60.000000 0.000318 0.140604 +dPolE 9670.000000 60.000000 0.002702 0.141725 +dPolE 9680.000000 60.000000 0.140764 0.142606 +dPolE 9690.000000 60.000000 -0.098117 0.143705 +dPolE 9700.000000 60.000000 -0.098137 0.144227 +dPolE 9710.000000 60.000000 0.098880 0.144772 +dPolE 9720.000000 60.000000 0.137793 0.145622 +dPolE 9730.000000 60.000000 -0.034847 0.146951 +dPolE 9740.000000 60.000000 -0.107491 0.148091 +dPolE 9750.000000 60.000000 0.461376 0.147500 +dPolE 9760.000000 60.000000 0.547559 0.148233 +dPolE 9770.000000 60.000000 0.047748 0.150256 +dPolE 9780.000000 60.000000 0.076258 0.150961 +dPolE 9790.000000 60.000000 -0.183638 0.152436 +dPolE 9800.000000 60.000000 0.160299 0.152895 +dPolE 9810.000000 60.000000 -0.016715 0.154572 +dPolE 9820.000000 60.000000 -0.127642 0.156178 +dPolE 9830.000000 60.000000 -0.110777 0.156781 +dPolE 9840.000000 60.000000 -0.351283 0.158207 +dPolE 9850.000000 60.000000 0.146068 0.158417 +dPolE 9860.000000 60.000000 -0.030010 0.159784 +dPolE 9870.000000 60.000000 0.314209 0.160613 +dPolE 9880.000000 60.000000 0.213414 0.162150 +dPolE 9890.000000 60.000000 0.659047 0.162299 +dPolE 9900.000000 60.000000 0.124145 0.164228 +dPolE 9910.000000 60.000000 0.315500 0.165022 +dPolE 9920.000000 60.000000 -0.211468 0.167796 +dPolE 9930.000000 60.000000 -0.376168 0.170062 +dPolE 9940.000000 60.000000 0.001004 0.170754 +dPolE 9950.000000 60.000000 0.155815 0.171606 +dPolE 9960.000000 60.000000 0.360583 0.172823 +dPolE 9970.000000 60.000000 -0.071734 0.175018 +dPolE 9980.000000 60.000000 0.133678 0.176588 +dPolE 9990.000000 60.000000 0.249574 0.178191 +dPolE 10000.000000 60.000000 -0.090853 0.180845 +dPolE 10025.000000 60.000000 -0.028233 0.088712 +dPolE 10050.000000 60.000000 0.014940 0.086575 +dPolE 10075.000000 60.000000 0.015081 0.084023 +dPolE 10100.000000 60.000000 0.030145 0.082046 +dPolE 10125.000000 60.000000 0.046799 0.080320 +dPolE 10150.000000 60.000000 0.012352 0.078248 +dPolE 10175.000000 60.000000 0.022360 0.076375 +dPolE 10200.000000 60.000000 0.076728 0.074683 +dPolE 10225.000000 60.000000 -0.007871 0.072883 +dPolE 10250.000000 60.000000 -0.042962 0.071215 +dPolE 10275.000000 60.000000 0.074815 0.069777 +dPolE 10300.000000 60.000000 0.127414 0.068002 +dPolE 10325.000000 60.000000 0.141427 0.066187 +dPolE 10350.000000 60.000000 0.064941 0.064799 +dPolE 10375.000000 60.000000 -0.021832 0.063494 +dPolE 10400.000000 60.000000 -0.117755 0.062271 +dPolE 10425.000000 60.000000 0.017583 0.060935 +dPolE 10450.000000 60.000000 0.104446 0.059669 +dPolE 10475.000000 60.000000 0.046771 0.058525 +dPolE 10500.000000 60.000000 0.062471 0.057412 +dPolE 10525.000000 60.000000 0.085603 0.056355 +dPolE 10550.000000 60.000000 -0.016106 0.055464 +dPolE 10575.000000 60.000000 -0.035527 0.054614 +dPolE 10600.000000 60.000000 0.012084 0.053798 +dPolE 10625.000000 60.000000 0.008438 0.052731 +dPolE 10650.000000 60.000000 -0.010711 0.051807 +dPolE 10675.000000 60.000000 -0.052322 0.051109 +dPolE 10700.000000 60.000000 0.010189 0.050147 +dPolE 10725.000000 60.000000 0.095516 0.049207 +dPolE 10750.000000 60.000000 0.158023 0.048582 +dPolE 10775.000000 60.000000 0.124863 0.047736 +dPolE 10800.000000 60.000000 0.031998 0.046763 +dPolE 10825.000000 60.000000 0.023401 0.046072 +dPolE 10850.000000 60.000000 0.013085 0.045335 +dPolE 10875.000000 60.000000 0.000451 0.044531 +dPolE 10900.000000 60.000000 0.015825 0.043918 +dPolE 10925.000000 60.000000 0.022707 0.043298 +dPolE 10950.000000 60.000000 -0.008086 0.042547 +dPolE 10975.000000 60.000000 0.036824 0.041929 +dPolE 11000.000000 60.000000 0.102091 0.041390 +dPolE 11025.000000 60.000000 0.030784 0.040955 +dPolE 11050.000000 60.000000 0.014113 0.040557 +dPolE 11075.000000 60.000000 0.047790 0.040194 +dPolE 11100.000000 60.000000 -0.064074 0.039653 +dPolE 11125.000000 60.000000 -0.107266 0.039206 +dPolE 11150.000000 60.000000 -0.009972 0.038937 +dPolE 11175.000000 60.000000 0.053561 0.038586 +dPolE 11200.000000 60.000000 0.092227 0.038255 +dPolE 11225.000000 60.000000 0.071701 0.038084 +dPolE 11250.000000 60.000000 0.030383 0.037836 +dPolE 11275.000000 60.000000 -0.018371 0.037552 +dPolE 11300.000000 60.000000 0.046223 0.037474 +dPolE 11325.000000 60.000000 0.084498 0.037307 +dPolE 11350.000000 60.000000 0.092815 0.037041 +dPolE 11375.000000 60.000000 0.049560 0.036926 +dPolE 11400.000000 60.000000 0.019528 0.036801 +dPolE 11425.000000 60.000000 0.030803 0.036614 +dPolE 11450.000000 60.000000 0.022552 0.036438 +dPolE 11475.000000 60.000000 0.002368 0.036252 +dPolE 11500.000000 60.000000 -0.043325 0.035994 +dPolE 11525.000000 60.000000 -0.004360 0.035731 +dPolE 11550.000000 60.000000 0.086785 0.035467 +dPolE 11575.000000 60.000000 0.069320 0.035322 +dPolE 11600.000000 60.000000 0.062252 0.035066 +dPolE 11625.000000 60.000000 0.067226 0.034682 +dPolE 11650.000000 60.000000 0.019173 0.034492 +dPolE 11675.000000 60.000000 -0.005610 0.034281 +dPolE 11700.000000 60.000000 0.031190 0.033974 +dPolE 11725.000000 60.000000 0.025594 0.033786 +dPolE 11750.000000 60.000000 0.019437 0.033598 +dPolE 11775.000000 60.000000 0.069628 0.033240 +dPolE 11800.000000 60.000000 0.087318 0.032927 +dPolE 11825.000000 60.000000 0.087156 0.032644 +dPolE 11850.000000 60.000000 0.113966 0.032358 +dPolE 11875.000000 60.000000 0.084753 0.032111 +dPolE 11900.000000 60.000000 -0.001340 0.031900 +dPolE 11925.000000 60.000000 0.014821 0.031602 +dPolE 11950.000000 60.000000 0.030316 0.031338 +dPolE 11975.000000 60.000000 0.031007 0.031144 +dPolE 12000.000000 60.000000 0.039868 0.030933 +dPolE 12025.000000 60.000000 0.037720 0.030722 +dPolE 12050.000000 60.000000 -0.005148 0.030522 +dPolE 12075.000000 60.000000 0.029793 0.030361 +dPolE 12100.000000 60.000000 0.088235 0.030213 +dPolE 12125.000000 60.000000 0.055161 0.030027 +dPolE 12150.000000 60.000000 0.022252 0.029853 +dPolE 12175.000000 60.000000 -0.010238 0.029688 +dPolE 12200.000000 60.000000 0.056419 0.029598 +dPolE 12225.000000 60.000000 0.091147 0.029499 +dPolE 12250.000000 60.000000 0.086804 0.029388 +dPolE 12275.000000 60.000000 0.070925 0.029359 +dPolE 12300.000000 60.000000 0.066228 0.029357 +dPolE 12325.000000 60.000000 0.086676 0.029392 +dPolE 12350.000000 60.000000 0.094486 0.029312 +dPolE 12375.000000 60.000000 0.093163 0.029264 +dPolE 12400.000000 60.000000 0.072533 0.029443 +dPolE 12425.000000 60.000000 0.075006 0.029376 +dPolE 12450.000000 60.000000 0.091089 0.029224 +dPolE 12475.000000 60.000000 0.123895 0.029328 +dPolE 12500.000000 60.000000 0.074028 0.029253 +dPolE 12525.000000 60.000000 -0.033483 0.029044 +dPolE 12550.000000 60.000000 0.109077 0.028908 +dPolE 12575.000000 60.000000 0.144413 0.028782 +dPolE 12600.000000 60.000000 0.058437 0.028667 +dPolE 12625.000000 60.000000 0.075966 0.028589 +dPolE 12650.000000 60.000000 0.094696 0.028477 +dPolE 12675.000000 60.000000 0.099515 0.028305 +dPolE 12700.000000 60.000000 0.111867 0.028108 +dPolE 12725.000000 60.000000 0.105543 0.027971 +dPolE 12750.000000 60.000000 0.045552 0.028005 +dPolE 12775.000000 60.000000 0.094243 0.027830 +dPolE 12800.000000 60.000000 0.157057 0.027607 +dPolE 12825.000000 60.000000 0.105630 0.027504 +dPolE 12850.000000 60.000000 0.066455 0.027389 +dPolE 12875.000000 60.000000 0.035887 0.027270 +dPolE 12900.000000 60.000000 0.020410 0.027179 +dPolE 12925.000000 60.000000 0.038229 0.027030 +dPolE 12950.000000 60.000000 0.081856 0.026836 +dPolE 12975.000000 60.000000 0.032553 0.026781 +dPolE 13000.000000 60.000000 0.050015 0.026686 +dPolE 13025.000000 60.000000 0.142408 0.026544 +dPolE 13050.000000 60.000000 0.133255 0.026411 +dPolE 13075.000000 60.000000 0.109717 0.026308 +dPolE 13100.000000 60.000000 0.075806 0.026250 +dPolE 13125.000000 60.000000 0.069058 0.026184 +dPolE 13150.000000 60.000000 0.072042 0.026109 +dPolE 13175.000000 60.000000 0.085737 0.026015 +dPolE 13200.000000 60.000000 0.057886 0.025955 +dPolE 13225.000000 60.000000 0.042949 0.025919 +dPolE 13250.000000 60.000000 0.108315 0.025928 +dPolE 13275.000000 60.000000 0.092707 0.025912 +dPolE 13300.000000 60.000000 0.051419 0.025897 +dPolE 13325.000000 60.000000 0.054616 0.025934 +dPolE 13350.000000 60.000000 0.042643 0.025981 +dPolE 13375.000000 60.000000 0.027771 0.026028 +dPolE 13400.000000 60.000000 0.067514 0.026023 +dPolE 13425.000000 60.000000 0.070408 0.026081 +dPolE 13450.000000 60.000000 0.046387 0.026191 +dPolE 13475.000000 60.000000 0.066872 0.026340 +dPolE 13500.000000 60.000000 0.069183 0.026514 +dPolE 13525.000000 60.000000 0.053115 0.026712 +dPolE 13550.000000 60.000000 0.085845 0.027053 +dPolE 13575.000000 60.000000 0.102159 0.027420 +dPolE 13600.000000 60.000000 0.095144 0.027814 +dPolE 13625.000000 60.000000 0.075833 0.028055 +dPolE 13650.000000 60.000000 0.055061 0.028299 +dPolE 13675.000000 60.000000 0.033624 0.028574 +dPolE 13700.000000 60.000000 0.048691 0.029233 +dPolE 13725.000000 60.000000 0.057255 0.030363 +dPolE 13750.000000 60.000000 0.037050 0.032445 +dPolE 13775.000000 60.000000 0.038123 0.035376 +dPolE 13800.000000 60.000000 0.041390 0.038457 +dPolE 13825.000000 60.000000 0.036030 0.040331 +dPolE 13850.000000 60.000000 0.065329 0.039996 +dPolE 13875.000000 60.000000 0.078271 0.038814 +dPolE 13900.000000 60.000000 0.011828 0.037206 +dPolE 13925.000000 60.000000 0.009903 0.036180 +dPolE 13950.000000 60.000000 0.036891 0.035197 +dPolE 13975.000000 60.000000 0.084147 0.033542 +dPolE 14000.000000 60.000000 0.101716 0.032550 +dPolE 14025.000000 60.000000 0.101503 0.031837 +dPolE 14050.000000 60.000000 0.076020 0.031055 +dPolE 14075.000000 60.000000 0.085887 0.030504 +dPolE 14100.000000 60.000000 0.100080 0.030066 +dPolE 14125.000000 60.000000 0.005614 0.029531 +dPolE 14150.000000 60.000000 -0.006844 0.029157 +dPolE 14175.000000 60.000000 0.033111 0.028881 +dPolE 14200.000000 60.000000 0.073260 0.028565 +dPolE 14225.000000 60.000000 0.077547 0.028376 +dPolE 14250.000000 60.000000 0.056470 0.028275 +dPolE 14275.000000 60.000000 0.060366 0.028095 +dPolE 14300.000000 60.000000 0.077886 0.027963 +dPolE 14325.000000 60.000000 0.105138 0.027872 +dPolE 14350.000000 60.000000 0.064205 0.027812 +dPolE 14375.000000 60.000000 0.079985 0.027723 +dPolE 14400.000000 60.000000 0.149029 0.027607 +dPolE 14425.000000 60.000000 0.108470 0.027645 +dPolE 14450.000000 60.000000 0.099185 0.027600 +dPolE 14475.000000 60.000000 0.122440 0.027466 +dPolE 14500.000000 60.000000 0.094435 0.027449 +dPolE 14525.000000 60.000000 0.084937 0.027472 +dPolE 14550.000000 60.000000 0.097289 0.027536 +dPolE 14575.000000 60.000000 0.131121 0.027418 +dPolE 14600.000000 60.000000 0.117873 0.027416 +dPolE 14625.000000 60.000000 0.046516 0.027564 +dPolE 14650.000000 60.000000 0.072603 0.027477 +dPolE 14675.000000 60.000000 0.067111 0.027492 +dPolE 14700.000000 60.000000 0.013863 0.027656 +dPolE 14725.000000 60.000000 0.043866 0.027568 +dPolE 14750.000000 60.000000 0.084915 0.027553 +dPolE 14775.000000 60.000000 0.133137 0.027657 +dPolE 14800.000000 60.000000 0.097319 0.027657 +dPolE 14825.000000 60.000000 0.097904 0.027652 +dPolE 14850.000000 60.000000 0.157144 0.027649 +dPolE 14875.000000 60.000000 0.113022 0.027706 +dPolE 14900.000000 60.000000 0.096779 0.027787 +dPolE 14925.000000 60.000000 0.131541 0.027897 +dPolE 14950.000000 60.000000 0.070906 0.027905 +dPolE 14975.000000 60.000000 0.077865 0.027967 +dPolE 15000.000000 60.000000 0.190921 0.028116 +dPolE 15025.000000 60.000000 0.119457 0.028096 +dPolE 15050.000000 60.000000 0.107327 0.028133 +dPolE 15075.000000 60.000000 0.198812 0.028270 +dPolE 15100.000000 60.000000 0.138324 0.028275 +dPolE 15125.000000 60.000000 0.118994 0.028293 +dPolE 15150.000000 60.000000 0.171684 0.028343 +dPolE 15175.000000 60.000000 0.128593 0.028414 +dPolE 15200.000000 60.000000 0.113702 0.028507 +dPolE 15225.000000 60.000000 0.144703 0.028627 +dPolE 15250.000000 60.000000 0.100057 0.028697 +dPolE 15275.000000 60.000000 0.098524 0.028796 +dPolE 15300.000000 60.000000 0.156220 0.028937 +dPolE 15325.000000 60.000000 0.080271 0.028991 +dPolE 15350.000000 60.000000 0.070001 0.029069 +dPolE 15375.000000 60.000000 0.143262 0.029179 +dPolE 15400.000000 60.000000 0.117103 0.029245 +dPolE 15425.000000 60.000000 0.129355 0.029369 +dPolE 15450.000000 60.000000 0.186493 0.029560 +dPolE 15475.000000 60.000000 0.080729 0.029673 +dPolE 15500.000000 60.000000 0.051417 0.029791 +dPolE 15525.000000 60.000000 0.097866 0.029913 +dPolE 15550.000000 60.000000 0.072962 0.029906 +dPolE 15575.000000 60.000000 0.076957 0.030006 +dPolE 15600.000000 60.000000 0.105694 0.030198 +dPolE 15625.000000 60.000000 0.108342 0.030271 +dPolE 15650.000000 60.000000 0.146007 0.030389 +dPolE 15675.000000 60.000000 0.204098 0.030536 +dPolE 15700.000000 60.000000 0.161623 0.030606 +dPolE 15725.000000 60.000000 0.120567 0.030744 +dPolE 15750.000000 60.000000 0.087784 0.030925 +dPolE 15775.000000 60.000000 0.120695 0.031049 +dPolE 15800.000000 60.000000 0.166283 0.031162 +dPolE 15825.000000 60.000000 0.201194 0.031288 +dPolE 15850.000000 60.000000 0.121909 0.031527 +dPolE 15875.000000 60.000000 0.102598 0.031672 +dPolE 15900.000000 60.000000 0.102780 0.031787 +dPolE 15925.000000 60.000000 0.048238 0.031993 +dPolE 15950.000000 60.000000 0.082709 0.032185 +dPolE 15975.000000 60.000000 0.140983 0.032368 +dPolE 16000.000000 60.000000 0.146004 0.032537 +dPolE 16025.000000 60.000000 0.126116 0.032688 +dPolE 16050.000000 60.000000 0.107963 0.032860 +dPolE 16075.000000 60.000000 0.119102 0.033108 +dPolE 16100.000000 60.000000 0.143339 0.033310 +dPolE 16125.000000 60.000000 0.145674 0.033497 +dPolE 16150.000000 60.000000 0.092035 0.033682 +dPolE 16175.000000 60.000000 0.102580 0.033954 +dPolE 16200.000000 60.000000 0.100219 0.034228 +dPolE 16225.000000 60.000000 0.053519 0.034473 +dPolE 16250.000000 60.000000 0.089997 0.034692 +dPolE 16275.000000 60.000000 0.100000 0.034953 +dPolE 16300.000000 60.000000 0.058810 0.035281 +dPolE 16325.000000 60.000000 0.077632 0.035555 +dPolE 16350.000000 60.000000 0.107098 0.035873 +dPolE 16375.000000 60.000000 0.144228 0.036246 +dPolE 16400.000000 60.000000 0.103292 0.036522 +dPolE 16425.000000 60.000000 0.071317 0.036991 +dPolE 16450.000000 60.000000 0.050178 0.037606 +dPolE 16475.000000 60.000000 0.073654 0.037844 +dPolE 16500.000000 60.000000 0.036698 0.038411 +dPolE 16525.000000 60.000000 -0.026800 0.039193 +dPolE 16550.000000 60.000000 0.007888 0.039853 +dPolE 16575.000000 60.000000 0.016790 0.040873 +dPolE 16600.000000 60.000000 0.017287 0.042136 +dPolE 16625.000000 60.000000 0.038199 0.043555 +dPolE 16650.000000 60.000000 0.014248 0.046034 +dPolE 16675.000000 60.000000 -0.026598 0.049294 +dPolE 16700.000000 60.000000 -0.060107 0.053282 +dPolE 16725.000000 60.000000 -0.048133 0.059218 +dPolE 16750.000000 60.000000 -0.058413 0.066913 +dPolE 16775.000000 60.000000 -0.151986 0.076545 +dPolE 16800.000000 60.000000 -0.205978 0.089329 +dPolE 16825.000000 60.000000 -0.249816 0.104967 +dPolE 16850.000000 60.000000 -0.273560 0.122713 +dPolE 16875.000000 60.000000 -0.074837 0.143036 +dPolE 16900.000000 60.000000 0.029456 0.167441 +dPolE 16925.000000 60.000000 -0.034664 0.195963 +dPolE 16950.000000 60.000000 -0.265935 0.227794 +dPolE 16975.000000 60.000000 -0.064700 0.261015 +dPolE 17000.000000 60.000000 0.360135 0.296375 +dPolE 1930.000000 70.000000 1.591587 0.163632 +dPolE 1940.000000 70.000000 1.486767 0.149081 +dPolE 1950.000000 70.000000 1.333902 0.137545 +dPolE 1960.000000 70.000000 1.070788 0.130336 +dPolE 1970.000000 70.000000 1.077825 0.123873 +dPolE 1980.000000 70.000000 0.958066 0.118861 +dPolE 1990.000000 70.000000 1.018832 0.114831 +dPolE 2000.000000 70.000000 1.112433 0.111053 +dPolE 2010.000000 70.000000 1.441479 0.107226 +dPolE 2020.000000 70.000000 1.533061 0.103793 +dPolE 2030.000000 70.000000 1.371384 0.100762 +dPolE 2040.000000 70.000000 1.572653 0.097563 +dPolE 2050.000000 70.000000 1.712360 0.094545 +dPolE 2060.000000 70.000000 1.548488 0.091897 +dPolE 2070.000000 70.000000 1.635258 0.089105 +dPolE 2080.000000 70.000000 1.577953 0.086613 +dPolE 2090.000000 70.000000 1.249338 0.084484 +dPolE 2100.000000 70.000000 1.343151 0.082142 +dPolE 2110.000000 70.000000 1.241845 0.080339 +dPolE 2120.000000 70.000000 1.026773 0.078736 +dPolE 2130.000000 70.000000 1.197023 0.076841 +dPolE 2140.000000 70.000000 1.211303 0.075314 +dPolE 2150.000000 70.000000 1.088457 0.074034 +dPolE 2160.000000 70.000000 0.980392 0.072874 +dPolE 2170.000000 70.000000 0.992837 0.071712 +dPolE 2180.000000 70.000000 1.047034 0.070482 +dPolE 2190.000000 70.000000 0.978452 0.069300 +dPolE 2200.000000 70.000000 0.953325 0.068212 +dPolE 2210.000000 70.000000 0.926915 0.067102 +dPolE 2220.000000 70.000000 0.947736 0.065975 +dPolE 2230.000000 70.000000 0.856304 0.065026 +dPolE 2240.000000 70.000000 0.853816 0.064099 +dPolE 2250.000000 70.000000 0.744544 0.063306 +dPolE 2260.000000 70.000000 0.502034 0.062655 +dPolE 2270.000000 70.000000 0.523373 0.061832 +dPolE 2280.000000 70.000000 0.593421 0.060961 +dPolE 2290.000000 70.000000 0.585471 0.060155 +dPolE 2300.000000 70.000000 0.537474 0.059440 +dPolE 2310.000000 70.000000 0.602143 0.058697 +dPolE 2320.000000 70.000000 0.624241 0.058015 +dPolE 2330.000000 70.000000 0.649316 0.057387 +dPolE 2340.000000 70.000000 0.666461 0.056794 +dPolE 2350.000000 70.000000 0.575648 0.056315 +dPolE 2360.000000 70.000000 0.615345 0.055808 +dPolE 2370.000000 70.000000 0.778876 0.055239 +dPolE 2380.000000 70.000000 0.659276 0.054874 +dPolE 2390.000000 70.000000 0.561927 0.054608 +dPolE 2400.000000 70.000000 0.546119 0.054332 +dPolE 2410.000000 70.000000 0.503256 0.054099 +dPolE 2420.000000 70.000000 0.574871 0.053822 +dPolE 2430.000000 70.000000 0.547889 0.053707 +dPolE 2440.000000 70.000000 0.585506 0.053562 +dPolE 2450.000000 70.000000 0.486071 0.053492 +dPolE 2460.000000 70.000000 0.474114 0.053428 +dPolE 2470.000000 70.000000 0.468010 0.053403 +dPolE 2480.000000 70.000000 0.516758 0.053355 +dPolE 2490.000000 70.000000 0.491045 0.053362 +dPolE 2500.000000 70.000000 0.470022 0.053443 +dPolE 2510.000000 70.000000 0.418927 0.053587 +dPolE 2520.000000 70.000000 0.310533 0.053697 +dPolE 2530.000000 70.000000 0.453910 0.053747 +dPolE 2540.000000 70.000000 0.442638 0.053992 +dPolE 2550.000000 70.000000 0.362023 0.054257 +dPolE 2560.000000 70.000000 0.481390 0.054475 +dPolE 2570.000000 70.000000 0.501635 0.054785 +dPolE 2580.000000 70.000000 0.401676 0.055197 +dPolE 2590.000000 70.000000 0.413336 0.055582 +dPolE 2600.000000 70.000000 0.478697 0.055979 +dPolE 2610.000000 70.000000 0.551623 0.056384 +dPolE 2620.000000 70.000000 0.523741 0.056888 +dPolE 2630.000000 70.000000 0.506789 0.057423 +dPolE 2640.000000 70.000000 0.441520 0.058041 +dPolE 2650.000000 70.000000 0.526312 0.058598 +dPolE 2660.000000 70.000000 0.467841 0.059331 +dPolE 2670.000000 70.000000 0.376179 0.060075 +dPolE 2680.000000 70.000000 0.405992 0.060706 +dPolE 2690.000000 70.000000 0.445450 0.061359 +dPolE 2700.000000 70.000000 0.344465 0.062138 +dPolE 2710.000000 70.000000 0.440512 0.062826 +dPolE 2720.000000 70.000000 0.472100 0.063572 +dPolE 2730.000000 70.000000 0.481494 0.064279 +dPolE 2740.000000 70.000000 0.511283 0.064988 +dPolE 2750.000000 70.000000 0.483124 0.065736 +dPolE 2760.000000 70.000000 0.417591 0.066540 +dPolE 2770.000000 70.000000 0.483424 0.067376 +dPolE 2780.000000 70.000000 0.473146 0.067998 +dPolE 2790.000000 70.000000 0.497708 0.068508 +dPolE 2800.000000 70.000000 0.487471 0.069131 +dPolE 2810.000000 70.000000 0.417615 0.069879 +dPolE 2820.000000 70.000000 0.469086 0.070543 +dPolE 2830.000000 70.000000 0.373708 0.071337 +dPolE 2840.000000 70.000000 0.293579 0.072053 +dPolE 2850.000000 70.000000 0.234880 0.072905 +dPolE 2860.000000 70.000000 0.264087 0.073724 +dPolE 2870.000000 70.000000 0.357074 0.074382 +dPolE 2880.000000 70.000000 0.288403 0.075299 +dPolE 2890.000000 70.000000 0.259216 0.076310 +dPolE 2900.000000 70.000000 0.346604 0.077206 +dPolE 2910.000000 70.000000 0.285471 0.078238 +dPolE 2920.000000 70.000000 0.454006 0.079073 +dPolE 2930.000000 70.000000 0.594017 0.079865 +dPolE 2940.000000 70.000000 0.452853 0.080861 +dPolE 2950.000000 70.000000 0.267983 0.081938 +dPolE 2960.000000 70.000000 0.384104 0.082753 +dPolE 2970.000000 70.000000 0.445833 0.083538 +dPolE 2980.000000 70.000000 0.368231 0.084520 +dPolE 2990.000000 70.000000 0.585267 0.085271 +dPolE 3000.000000 70.000000 0.416431 0.086378 +dPolE 3010.000000 70.000000 0.244172 0.087379 +dPolE 3020.000000 70.000000 0.369141 0.088228 +dPolE 3030.000000 70.000000 0.541842 0.089164 +dPolE 3040.000000 70.000000 0.497276 0.090252 +dPolE 3050.000000 70.000000 0.456443 0.091413 +dPolE 3060.000000 70.000000 0.462562 0.092541 +dPolE 3070.000000 70.000000 0.272143 0.093839 +dPolE 3080.000000 70.000000 0.164843 0.095072 +dPolE 3090.000000 70.000000 0.072588 0.096379 +dPolE 3100.000000 70.000000 0.107470 0.097404 +dPolE 3110.000000 70.000000 0.334936 0.098147 +dPolE 3120.000000 70.000000 0.242577 0.099484 +dPolE 3130.000000 70.000000 0.268817 0.100398 +dPolE 3140.000000 70.000000 0.212974 0.101480 +dPolE 3150.000000 70.000000 0.123949 0.102755 +dPolE 3160.000000 70.000000 0.161464 0.103805 +dPolE 3170.000000 70.000000 0.120928 0.104941 +dPolE 3180.000000 70.000000 0.183557 0.105854 +dPolE 3190.000000 70.000000 0.045423 0.107272 +dPolE 3200.000000 70.000000 -0.028754 0.108411 +dPolE 3210.000000 70.000000 0.202884 0.109293 +dPolE 3220.000000 70.000000 0.554721 0.110130 +dPolE 3230.000000 70.000000 0.276150 0.111556 +dPolE 3240.000000 70.000000 -0.021296 0.112998 +dPolE 3250.000000 70.000000 -0.001080 0.114270 +dPolE 3260.000000 70.000000 0.138860 0.116148 +dPolE 3270.000000 70.000000 0.196426 0.118527 +dPolE 3280.000000 70.000000 0.141591 0.120980 +dPolE 3290.000000 70.000000 0.047916 0.122908 +dPolE 3300.000000 70.000000 -0.096728 0.124789 +dPolE 3310.000000 70.000000 -0.127447 0.126690 +dPolE 3320.000000 70.000000 -0.060404 0.127932 +dPolE 3330.000000 70.000000 -0.056580 0.128914 +dPolE 3340.000000 70.000000 -0.171090 0.129985 +dPolE 3350.000000 70.000000 -0.232008 0.130902 +dPolE 3360.000000 70.000000 0.219229 0.131009 +dPolE 3370.000000 70.000000 0.171978 0.131772 +dPolE 3380.000000 70.000000 -0.180867 0.132824 +dPolE 3390.000000 70.000000 -0.356722 0.133258 +dPolE 3400.000000 70.000000 -0.022904 0.132954 +dPolE 3410.000000 70.000000 -0.062059 0.133600 +dPolE 3420.000000 70.000000 -0.020276 0.134670 +dPolE 3430.000000 70.000000 0.103516 0.135383 +dPolE 3440.000000 70.000000 -0.052374 0.136403 +dPolE 3450.000000 70.000000 -0.111517 0.137833 +dPolE 3460.000000 70.000000 -0.000185 0.138734 +dPolE 3470.000000 70.000000 0.080217 0.139827 +dPolE 3480.000000 70.000000 0.046608 0.140850 +dPolE 3490.000000 70.000000 0.076985 0.141848 +dPolE 3500.000000 70.000000 0.077537 0.142981 +dPolE 3510.000000 70.000000 -0.038206 0.144329 +dPolE 3520.000000 70.000000 0.193263 0.145037 +dPolE 3530.000000 70.000000 0.060967 0.146358 +dPolE 3540.000000 70.000000 -0.130374 0.148167 +dPolE 3550.000000 70.000000 -0.131683 0.149332 +dPolE 3560.000000 70.000000 -0.107909 0.150255 +dPolE 3570.000000 70.000000 0.031858 0.151288 +dPolE 3580.000000 70.000000 0.228718 0.152117 +dPolE 3590.000000 70.000000 -0.091194 0.153932 +dPolE 3600.000000 70.000000 0.297620 0.154187 +dPolE 3610.000000 70.000000 -0.119926 0.156110 +dPolE 3620.000000 70.000000 -0.039441 0.156726 +dPolE 3630.000000 70.000000 0.141442 0.157133 +dPolE 3640.000000 70.000000 -0.013591 0.158627 +dPolE 3650.000000 70.000000 -0.280542 0.160382 +dPolE 3660.000000 70.000000 -0.056394 0.159765 +dPolE 3670.000000 70.000000 0.221996 0.158094 +dPolE 3680.000000 70.000000 0.036209 0.158055 +dPolE 3690.000000 70.000000 -0.017949 0.158821 +dPolE 3700.000000 70.000000 0.106362 0.160331 +dPolE 3710.000000 70.000000 -0.076365 0.162545 +dPolE 3720.000000 70.000000 -0.304919 0.163658 +dPolE 3730.000000 70.000000 -0.016715 0.163952 +dPolE 3740.000000 70.000000 0.000723 0.164919 +dPolE 3750.000000 70.000000 -0.034469 0.164765 +dPolE 3760.000000 70.000000 0.190925 0.163386 +dPolE 3770.000000 70.000000 0.225634 0.163194 +dPolE 3780.000000 70.000000 0.033753 0.162419 +dPolE 3790.000000 70.000000 0.212710 0.160473 +dPolE 3800.000000 70.000000 0.148692 0.160239 +dPolE 3810.000000 70.000000 0.342735 0.161039 +dPolE 3820.000000 70.000000 0.262857 0.162059 +dPolE 3830.000000 70.000000 0.072354 0.160907 +dPolE 3840.000000 70.000000 0.117039 0.160417 +dPolE 3850.000000 70.000000 0.258889 0.161298 +dPolE 3860.000000 70.000000 0.022802 0.160602 +dPolE 3870.000000 70.000000 -0.013544 0.157938 +dPolE 3880.000000 70.000000 0.089355 0.154926 +dPolE 3890.000000 70.000000 0.149988 0.155022 +dPolE 3900.000000 70.000000 -0.000201 0.159396 +dPolE 3910.000000 70.000000 0.152504 0.163350 +dPolE 3920.000000 70.000000 0.480513 0.161231 +dPolE 3930.000000 70.000000 0.382349 0.158372 +dPolE 3940.000000 70.000000 0.297747 0.156252 +dPolE 3950.000000 70.000000 0.084431 0.155914 +dPolE 3960.000000 70.000000 0.181926 0.156960 +dPolE 3970.000000 70.000000 0.578194 0.157460 +dPolE 3980.000000 70.000000 0.282075 0.155648 +dPolE 3990.000000 70.000000 0.039786 0.153475 +dPolE 4000.000000 70.000000 0.034653 0.154271 +dPolE 4010.000000 70.000000 0.319819 0.157001 +dPolE 4020.000000 70.000000 0.466081 0.158585 +dPolE 4030.000000 70.000000 0.210992 0.158980 +dPolE 4040.000000 70.000000 0.275026 0.157318 +dPolE 4050.000000 70.000000 0.336720 0.153613 +dPolE 4060.000000 70.000000 0.377074 0.150015 +dPolE 4070.000000 70.000000 0.481910 0.150252 +dPolE 4080.000000 70.000000 0.455138 0.154312 +dPolE 4090.000000 70.000000 0.350742 0.157782 +dPolE 4100.000000 70.000000 0.060543 0.158659 +dPolE 4110.000000 70.000000 0.052516 0.158341 +dPolE 4120.000000 70.000000 0.141346 0.156012 +dPolE 4130.000000 70.000000 0.275461 0.150974 +dPolE 4140.000000 70.000000 0.029386 0.149349 +dPolE 4150.000000 70.000000 -0.038453 0.151652 +dPolE 4160.000000 70.000000 0.099878 0.152611 +dPolE 4170.000000 70.000000 0.325643 0.151583 +dPolE 4180.000000 70.000000 0.392706 0.151343 +dPolE 4190.000000 70.000000 0.091862 0.153553 +dPolE 4200.000000 70.000000 -0.292622 0.154599 +dPolE 4210.000000 70.000000 -0.035579 0.149878 +dPolE 4220.000000 70.000000 0.228127 0.144340 +dPolE 4230.000000 70.000000 0.369068 0.141014 +dPolE 4240.000000 70.000000 0.293355 0.140813 +dPolE 4250.000000 70.000000 0.085969 0.145897 +dPolE 4260.000000 70.000000 -0.001398 0.151563 +dPolE 4270.000000 70.000000 0.039642 0.150782 +dPolE 4280.000000 70.000000 0.111178 0.146099 +dPolE 4290.000000 70.000000 0.359181 0.146730 +dPolE 4300.000000 70.000000 0.170715 0.147758 +dPolE 4310.000000 70.000000 -0.300763 0.147327 +dPolE 4320.000000 70.000000 -0.003633 0.148969 +dPolE 4330.000000 70.000000 0.588404 0.149907 +dPolE 4340.000000 70.000000 0.628328 0.146233 +dPolE 4350.000000 70.000000 0.558563 0.144672 +dPolE 4360.000000 70.000000 0.306941 0.147106 +dPolE 4370.000000 70.000000 0.327173 0.147021 +dPolE 4380.000000 70.000000 0.675998 0.145259 +dPolE 4390.000000 70.000000 0.214689 0.145015 +dPolE 4400.000000 70.000000 -0.022017 0.144764 +dPolE 4410.000000 70.000000 0.296698 0.141558 +dPolE 4420.000000 70.000000 0.294059 0.136842 +dPolE 4430.000000 70.000000 0.269583 0.136150 +dPolE 4440.000000 70.000000 0.032787 0.137705 +dPolE 4450.000000 70.000000 0.000075 0.136910 +dPolE 4460.000000 70.000000 0.102685 0.135565 +dPolE 4470.000000 70.000000 0.015716 0.136359 +dPolE 4480.000000 70.000000 -0.036271 0.137056 +dPolE 4490.000000 70.000000 0.038010 0.136793 +dPolE 4500.000000 70.000000 0.194182 0.135650 +dPolE 4510.000000 70.000000 0.150745 0.135636 +dPolE 4520.000000 70.000000 0.156737 0.136046 +dPolE 4530.000000 70.000000 0.009053 0.135957 +dPolE 4540.000000 70.000000 -0.004445 0.135281 +dPolE 4550.000000 70.000000 0.375379 0.133816 +dPolE 4560.000000 70.000000 0.242737 0.132694 +dPolE 4570.000000 70.000000 0.047943 0.130943 +dPolE 4580.000000 70.000000 0.187827 0.127731 +dPolE 4590.000000 70.000000 -0.046732 0.125851 +dPolE 4600.000000 70.000000 -0.129069 0.127833 +dPolE 4610.000000 70.000000 -0.028350 0.130745 +dPolE 4620.000000 70.000000 0.012661 0.131649 +dPolE 4630.000000 70.000000 0.034983 0.128464 +dPolE 4640.000000 70.000000 0.011437 0.123678 +dPolE 4650.000000 70.000000 -0.144683 0.122280 +dPolE 4660.000000 70.000000 0.005674 0.123551 +dPolE 4670.000000 70.000000 -0.136371 0.126152 +dPolE 4680.000000 70.000000 -0.105499 0.126971 +dPolE 4690.000000 70.000000 0.102654 0.127143 +dPolE 4700.000000 70.000000 -0.001645 0.129713 +dPolE 4710.000000 70.000000 0.090944 0.131405 +dPolE 4720.000000 70.000000 0.162166 0.129674 +dPolE 4730.000000 70.000000 0.124136 0.126960 +dPolE 4740.000000 70.000000 -0.043987 0.126245 +dPolE 4750.000000 70.000000 0.142650 0.126316 +dPolE 4760.000000 70.000000 0.298378 0.125526 +dPolE 4770.000000 70.000000 0.235287 0.124547 +dPolE 4780.000000 70.000000 0.116149 0.123495 +dPolE 4790.000000 70.000000 0.076604 0.122382 +dPolE 4800.000000 70.000000 -0.015214 0.122229 +dPolE 4810.000000 70.000000 0.003375 0.121858 +dPolE 4820.000000 70.000000 -0.028611 0.121848 +dPolE 4830.000000 70.000000 -0.126976 0.121478 +dPolE 4840.000000 70.000000 0.062497 0.119685 +dPolE 4850.000000 70.000000 0.188894 0.113984 +dPolE 4860.000000 70.000000 0.095411 0.100253 +dPolE 4870.000000 70.000000 0.065847 0.095347 +dPolE 4880.000000 70.000000 0.058894 0.109548 +dPolE 4890.000000 70.000000 -0.023552 0.116775 +dPolE 4900.000000 70.000000 0.014744 0.116550 +dPolE 4910.000000 70.000000 0.052504 0.115364 +dPolE 4920.000000 70.000000 0.075653 0.115569 +dPolE 4930.000000 70.000000 -0.033627 0.115296 +dPolE 4940.000000 70.000000 -0.043220 0.114447 +dPolE 4950.000000 70.000000 0.272284 0.115149 +dPolE 4960.000000 70.000000 0.124181 0.116023 +dPolE 4970.000000 70.000000 -0.136845 0.115450 +dPolE 4980.000000 70.000000 -0.056424 0.114088 +dPolE 4990.000000 70.000000 0.105364 0.112348 +dPolE 5000.000000 70.000000 0.289539 0.111547 +dPolE 5010.000000 70.000000 0.208638 0.111361 +dPolE 5020.000000 70.000000 -0.040159 0.110889 +dPolE 5030.000000 70.000000 -0.005193 0.110776 +dPolE 5040.000000 70.000000 0.037615 0.110978 +dPolE 5050.000000 70.000000 0.115297 0.111026 +dPolE 5060.000000 70.000000 -0.143253 0.110863 +dPolE 5070.000000 70.000000 -0.121134 0.110562 +dPolE 5080.000000 70.000000 0.134311 0.110361 +dPolE 5090.000000 70.000000 0.006929 0.110404 +dPolE 5100.000000 70.000000 -0.081523 0.110400 +dPolE 5110.000000 70.000000 0.026294 0.109734 +dPolE 5120.000000 70.000000 0.002709 0.109066 +dPolE 5130.000000 70.000000 0.014123 0.108906 +dPolE 5140.000000 70.000000 -0.104844 0.108914 +dPolE 5150.000000 70.000000 0.113212 0.108318 +dPolE 5160.000000 70.000000 0.027502 0.107972 +dPolE 5170.000000 70.000000 0.061658 0.107694 +dPolE 5180.000000 70.000000 -0.028762 0.107475 +dPolE 5190.000000 70.000000 -0.140086 0.107270 +dPolE 5200.000000 70.000000 -0.064944 0.106522 +dPolE 5210.000000 70.000000 0.038993 0.105875 +dPolE 5220.000000 70.000000 0.117610 0.105634 +dPolE 5230.000000 70.000000 0.109318 0.105261 +dPolE 5240.000000 70.000000 -0.146617 0.105319 +dPolE 5250.000000 70.000000 -0.155949 0.104881 +dPolE 5260.000000 70.000000 -0.036281 0.103910 +dPolE 5270.000000 70.000000 0.136735 0.102737 +dPolE 5280.000000 70.000000 0.153482 0.102460 +dPolE 5290.000000 70.000000 0.117062 0.102323 +dPolE 5300.000000 70.000000 0.060490 0.102031 +dPolE 5310.000000 70.000000 0.016235 0.102008 +dPolE 5320.000000 70.000000 0.090539 0.101746 +dPolE 5330.000000 70.000000 0.141081 0.100874 +dPolE 5340.000000 70.000000 -0.012330 0.100169 +dPolE 5350.000000 70.000000 0.002886 0.099859 +dPolE 5360.000000 70.000000 0.097452 0.099515 +dPolE 5370.000000 70.000000 -0.032648 0.099441 +dPolE 5380.000000 70.000000 0.080119 0.098896 +dPolE 5390.000000 70.000000 0.010574 0.098193 +dPolE 5400.000000 70.000000 0.088004 0.097656 +dPolE 5410.000000 70.000000 0.259064 0.097134 +dPolE 5420.000000 70.000000 0.057579 0.096700 +dPolE 5430.000000 70.000000 -0.032372 0.095986 +dPolE 5440.000000 70.000000 0.175586 0.095389 +dPolE 5450.000000 70.000000 0.106692 0.095173 +dPolE 5460.000000 70.000000 0.000020 0.095257 +dPolE 5470.000000 70.000000 0.165417 0.094872 +dPolE 5480.000000 70.000000 0.167424 0.094102 +dPolE 5490.000000 70.000000 0.228326 0.093335 +dPolE 5500.000000 70.000000 0.046361 0.093394 +dPolE 5510.000000 70.000000 0.095957 0.093342 +dPolE 5520.000000 70.000000 0.158728 0.093120 +dPolE 5530.000000 70.000000 0.063093 0.092885 +dPolE 5540.000000 70.000000 -0.072500 0.092654 +dPolE 5550.000000 70.000000 -0.005746 0.092359 +dPolE 5560.000000 70.000000 0.088458 0.092053 +dPolE 5570.000000 70.000000 0.063510 0.091762 +dPolE 5580.000000 70.000000 0.070445 0.091520 +dPolE 5590.000000 70.000000 0.066416 0.091442 +dPolE 5600.000000 70.000000 -0.066667 0.091333 +dPolE 5610.000000 70.000000 -0.035336 0.090752 +dPolE 5620.000000 70.000000 0.055064 0.090396 +dPolE 5630.000000 70.000000 0.035173 0.090280 +dPolE 5640.000000 70.000000 -0.057755 0.090056 +dPolE 5650.000000 70.000000 -0.044679 0.089607 +dPolE 5660.000000 70.000000 0.029434 0.089157 +dPolE 5670.000000 70.000000 0.058578 0.088180 +dPolE 5680.000000 70.000000 -0.013512 0.086680 +dPolE 5690.000000 70.000000 0.064554 0.084742 +dPolE 5700.000000 70.000000 0.039269 0.082304 +dPolE 5710.000000 70.000000 0.056956 0.081055 +dPolE 5720.000000 70.000000 0.139337 0.080303 +dPolE 5730.000000 70.000000 0.031770 0.079635 +dPolE 5740.000000 70.000000 0.065659 0.078130 +dPolE 5750.000000 70.000000 0.108659 0.077311 +dPolE 5760.000000 70.000000 0.166897 0.076672 +dPolE 5770.000000 70.000000 0.114435 0.075234 +dPolE 5780.000000 70.000000 0.082144 0.074154 +dPolE 5790.000000 70.000000 0.096286 0.074007 +dPolE 5800.000000 70.000000 0.048153 0.073524 +dPolE 5810.000000 70.000000 0.189514 0.071541 +dPolE 5820.000000 70.000000 0.163162 0.069741 +dPolE 5830.000000 70.000000 0.109763 0.071468 +dPolE 5840.000000 70.000000 0.183615 0.074692 +dPolE 5850.000000 70.000000 0.176826 0.074171 +dPolE 5860.000000 70.000000 0.192224 0.074503 +dPolE 5870.000000 70.000000 0.158276 0.075281 +dPolE 5880.000000 70.000000 0.180411 0.074550 +dPolE 5890.000000 70.000000 0.182536 0.074306 +dPolE 5900.000000 70.000000 0.205404 0.076741 +dPolE 5910.000000 70.000000 0.181593 0.078338 +dPolE 5920.000000 70.000000 0.179803 0.078320 +dPolE 5930.000000 70.000000 0.182716 0.077059 +dPolE 5940.000000 70.000000 0.110711 0.075961 +dPolE 5950.000000 70.000000 0.246205 0.074884 +dPolE 5960.000000 70.000000 0.126930 0.075174 +dPolE 5970.000000 70.000000 0.113418 0.076438 +dPolE 5980.000000 70.000000 0.149004 0.077053 +dPolE 5990.000000 70.000000 0.167656 0.077049 +dPolE 6000.000000 70.000000 0.189131 0.077078 +dPolE 6010.000000 70.000000 0.139607 0.076568 +dPolE 6020.000000 70.000000 0.176891 0.075625 +dPolE 6030.000000 70.000000 0.070364 0.074656 +dPolE 6040.000000 70.000000 0.090206 0.074315 +dPolE 6050.000000 70.000000 0.213960 0.075684 +dPolE 6060.000000 70.000000 0.294537 0.076031 +dPolE 6070.000000 70.000000 0.197850 0.076215 +dPolE 6080.000000 70.000000 0.142612 0.076513 +dPolE 6090.000000 70.000000 0.191878 0.076729 +dPolE 6100.000000 70.000000 0.103531 0.076537 +dPolE 6110.000000 70.000000 0.154793 0.076041 +dPolE 6120.000000 70.000000 0.193620 0.075834 +dPolE 6130.000000 70.000000 0.190080 0.075647 +dPolE 6140.000000 70.000000 0.156744 0.075472 +dPolE 6150.000000 70.000000 0.271739 0.075807 +dPolE 6160.000000 70.000000 0.208232 0.076543 +dPolE 6170.000000 70.000000 0.167528 0.076948 +dPolE 6180.000000 70.000000 0.034704 0.077226 +dPolE 6190.000000 70.000000 0.074234 0.077442 +dPolE 6200.000000 70.000000 0.235343 0.076903 +dPolE 6210.000000 70.000000 0.190729 0.076983 +dPolE 6220.000000 70.000000 0.058706 0.077424 +dPolE 6230.000000 70.000000 0.116909 0.076939 +dPolE 6240.000000 70.000000 0.181659 0.076634 +dPolE 6250.000000 70.000000 0.159143 0.077312 +dPolE 6260.000000 70.000000 0.214264 0.077776 +dPolE 6270.000000 70.000000 0.082653 0.077911 +dPolE 6280.000000 70.000000 0.134886 0.077753 +dPolE 6290.000000 70.000000 0.087364 0.077850 +dPolE 6300.000000 70.000000 0.254228 0.077698 +dPolE 6310.000000 70.000000 0.203892 0.078131 +dPolE 6320.000000 70.000000 0.147749 0.078303 +dPolE 6330.000000 70.000000 0.280371 0.077897 +dPolE 6340.000000 70.000000 0.194945 0.078079 +dPolE 6350.000000 70.000000 0.106471 0.078151 +dPolE 6360.000000 70.000000 0.052000 0.077944 +dPolE 6370.000000 70.000000 0.201230 0.077620 +dPolE 6380.000000 70.000000 0.349383 0.077570 +dPolE 6390.000000 70.000000 0.234177 0.077677 +dPolE 6400.000000 70.000000 0.205810 0.077685 +dPolE 6410.000000 70.000000 0.113327 0.077894 +dPolE 6420.000000 70.000000 0.076214 0.078153 +dPolE 6430.000000 70.000000 0.260507 0.077856 +dPolE 6440.000000 70.000000 0.250163 0.077882 +dPolE 6450.000000 70.000000 0.178578 0.078078 +dPolE 6460.000000 70.000000 0.210804 0.077985 +dPolE 6470.000000 70.000000 0.069533 0.078063 +dPolE 6480.000000 70.000000 -0.009643 0.078038 +dPolE 6490.000000 70.000000 0.068340 0.077835 +dPolE 6500.000000 70.000000 0.190803 0.077681 +dPolE 6510.000000 70.000000 0.189304 0.077698 +dPolE 6520.000000 70.000000 0.160474 0.077634 +dPolE 6530.000000 70.000000 0.120649 0.077738 +dPolE 6540.000000 70.000000 0.096062 0.078473 +dPolE 6550.000000 70.000000 0.249018 0.069371 +dPolE 6560.000000 70.000000 0.099972 0.048729 +dPolE 6570.000000 70.000000 0.031249 0.047121 +dPolE 6580.000000 70.000000 0.096810 0.064305 +dPolE 6590.000000 70.000000 0.174632 0.076902 +dPolE 6600.000000 70.000000 0.049615 0.077481 +dPolE 6610.000000 70.000000 0.049730 0.077539 +dPolE 6620.000000 70.000000 0.177728 0.077213 +dPolE 6630.000000 70.000000 0.197949 0.077067 +dPolE 6640.000000 70.000000 0.172431 0.077128 +dPolE 6650.000000 70.000000 0.181691 0.077154 +dPolE 6660.000000 70.000000 0.082652 0.077235 +dPolE 6670.000000 70.000000 0.070465 0.077216 +dPolE 6680.000000 70.000000 0.107700 0.077076 +dPolE 6690.000000 70.000000 0.151576 0.076861 +dPolE 6700.000000 70.000000 0.103122 0.076685 +dPolE 6710.000000 70.000000 0.201016 0.076596 +dPolE 6720.000000 70.000000 0.086719 0.076598 +dPolE 6730.000000 70.000000 0.219930 0.076394 +dPolE 6740.000000 70.000000 0.161239 0.076556 +dPolE 6750.000000 70.000000 0.180187 0.076602 +dPolE 6760.000000 70.000000 0.064244 0.076713 +dPolE 6770.000000 70.000000 0.104215 0.076583 +dPolE 6780.000000 70.000000 0.195703 0.076331 +dPolE 6790.000000 70.000000 0.137002 0.076208 +dPolE 6800.000000 70.000000 0.287371 0.075942 +dPolE 6810.000000 70.000000 0.274111 0.075918 +dPolE 6820.000000 70.000000 0.163725 0.076056 +dPolE 6830.000000 70.000000 0.176707 0.075994 +dPolE 6840.000000 70.000000 0.154174 0.075921 +dPolE 6850.000000 70.000000 0.130154 0.075620 +dPolE 6860.000000 70.000000 0.186899 0.075505 +dPolE 6870.000000 70.000000 0.127524 0.075767 +dPolE 6880.000000 70.000000 0.141141 0.075847 +dPolE 6890.000000 70.000000 0.186885 0.075820 +dPolE 6900.000000 70.000000 0.225666 0.075852 +dPolE 6910.000000 70.000000 0.153733 0.075887 +dPolE 6920.000000 70.000000 0.134000 0.075819 +dPolE 6930.000000 70.000000 0.059862 0.075820 +dPolE 6940.000000 70.000000 0.025597 0.075756 +dPolE 6950.000000 70.000000 0.129609 0.075740 +dPolE 6960.000000 70.000000 0.104279 0.075771 +dPolE 6970.000000 70.000000 0.086572 0.075648 +dPolE 6980.000000 70.000000 0.212748 0.075410 +dPolE 6990.000000 70.000000 0.178598 0.075494 +dPolE 7000.000000 70.000000 0.037818 0.075753 +dPolE 7010.000000 70.000000 0.077229 0.075813 +dPolE 7020.000000 70.000000 0.073446 0.075839 +dPolE 7030.000000 70.000000 0.187654 0.075696 +dPolE 7040.000000 70.000000 0.216840 0.075785 +dPolE 7050.000000 70.000000 0.143490 0.075978 +dPolE 7060.000000 70.000000 0.183194 0.075959 +dPolE 7070.000000 70.000000 0.114953 0.075738 +dPolE 7080.000000 70.000000 0.094846 0.075796 +dPolE 7090.000000 70.000000 0.112099 0.075955 +dPolE 7100.000000 70.000000 0.147848 0.076065 +dPolE 7110.000000 70.000000 0.120577 0.076106 +dPolE 7120.000000 70.000000 0.114734 0.076117 +dPolE 7130.000000 70.000000 0.119191 0.076116 +dPolE 7140.000000 70.000000 0.129707 0.076013 +dPolE 7150.000000 70.000000 0.151679 0.075914 +dPolE 7160.000000 70.000000 0.218963 0.075896 +dPolE 7170.000000 70.000000 0.173940 0.076189 +dPolE 7180.000000 70.000000 0.210798 0.076139 +dPolE 7190.000000 70.000000 0.074115 0.076292 +dPolE 7200.000000 70.000000 0.174485 0.076293 +dPolE 7210.000000 70.000000 0.191399 0.076418 +dPolE 7220.000000 70.000000 0.076617 0.076553 +dPolE 7230.000000 70.000000 0.118210 0.076666 +dPolE 7240.000000 70.000000 0.031548 0.076725 +dPolE 7250.000000 70.000000 0.092550 0.076329 +dPolE 7260.000000 70.000000 0.231462 0.075857 +dPolE 7270.000000 70.000000 0.155483 0.076122 +dPolE 7280.000000 70.000000 0.179232 0.076160 +dPolE 7290.000000 70.000000 -0.029399 0.076296 +dPolE 7300.000000 70.000000 -0.022251 0.076358 +dPolE 7310.000000 70.000000 0.201233 0.076041 +dPolE 7320.000000 70.000000 0.084006 0.076277 +dPolE 7330.000000 70.000000 0.175146 0.076482 +dPolE 7340.000000 70.000000 0.243750 0.076337 +dPolE 7350.000000 70.000000 0.059223 0.076108 +dPolE 7360.000000 70.000000 0.031474 0.076176 +dPolE 7370.000000 70.000000 0.076741 0.076477 +dPolE 7380.000000 70.000000 0.068519 0.077008 +dPolE 7390.000000 70.000000 0.087430 0.077255 +dPolE 7400.000000 70.000000 0.121118 0.076910 +dPolE 7410.000000 70.000000 0.129713 0.077187 +dPolE 7420.000000 70.000000 0.036700 0.077850 +dPolE 7430.000000 70.000000 0.205184 0.077900 +dPolE 7440.000000 70.000000 0.201322 0.077951 +dPolE 7450.000000 70.000000 0.201874 0.078016 +dPolE 7460.000000 70.000000 0.098749 0.078198 +dPolE 7470.000000 70.000000 0.059382 0.077925 +dPolE 7480.000000 70.000000 0.127893 0.077808 +dPolE 7490.000000 70.000000 0.063966 0.078216 +dPolE 7500.000000 70.000000 -0.025729 0.078320 +dPolE 7510.000000 70.000000 0.157810 0.078090 +dPolE 7520.000000 70.000000 0.103777 0.078710 +dPolE 7530.000000 70.000000 0.012253 0.079076 +dPolE 7540.000000 70.000000 0.117435 0.078516 +dPolE 7550.000000 70.000000 0.147669 0.078646 +dPolE 7560.000000 70.000000 -0.042479 0.078968 +dPolE 7570.000000 70.000000 0.023384 0.078808 +dPolE 7580.000000 70.000000 0.065810 0.078633 +dPolE 7590.000000 70.000000 -0.001442 0.078661 +dPolE 7600.000000 70.000000 0.126228 0.079120 +dPolE 7610.000000 70.000000 0.216025 0.079629 +dPolE 7620.000000 70.000000 0.166506 0.080123 +dPolE 7630.000000 70.000000 0.073534 0.080021 +dPolE 7640.000000 70.000000 0.041569 0.079920 +dPolE 7650.000000 70.000000 0.038121 0.080219 +dPolE 7660.000000 70.000000 0.085176 0.080689 +dPolE 7670.000000 70.000000 0.094382 0.081355 +dPolE 7680.000000 70.000000 0.073295 0.081260 +dPolE 7690.000000 70.000000 0.051769 0.080436 +dPolE 7700.000000 70.000000 0.114565 0.080038 +dPolE 7710.000000 70.000000 0.146202 0.080598 +dPolE 7720.000000 70.000000 0.058651 0.081591 +dPolE 7730.000000 70.000000 0.119028 0.082138 +dPolE 7740.000000 70.000000 0.018637 0.082420 +dPolE 7750.000000 70.000000 0.053639 0.082743 +dPolE 7760.000000 70.000000 0.083829 0.083163 +dPolE 7770.000000 70.000000 0.011133 0.083519 +dPolE 7780.000000 70.000000 0.048656 0.083392 +dPolE 7790.000000 70.000000 0.058783 0.082886 +dPolE 7800.000000 70.000000 0.107588 0.082709 +dPolE 7810.000000 70.000000 0.158378 0.083306 +dPolE 7820.000000 70.000000 0.134648 0.083711 +dPolE 7830.000000 70.000000 -0.071309 0.084052 +dPolE 7840.000000 70.000000 -0.123098 0.084559 +dPolE 7850.000000 70.000000 0.002444 0.085029 +dPolE 7860.000000 70.000000 0.070002 0.085329 +dPolE 7870.000000 70.000000 0.008931 0.085347 +dPolE 7880.000000 70.000000 0.126764 0.085045 +dPolE 7890.000000 70.000000 0.175751 0.085234 +dPolE 7900.000000 70.000000 0.071446 0.085772 +dPolE 7910.000000 70.000000 0.021580 0.085892 +dPolE 7920.000000 70.000000 -0.043047 0.086174 +dPolE 7930.000000 70.000000 0.124044 0.086152 +dPolE 7940.000000 70.000000 0.058454 0.086015 +dPolE 7950.000000 70.000000 0.020356 0.086121 +dPolE 7960.000000 70.000000 0.056167 0.086577 +dPolE 7970.000000 70.000000 0.128231 0.086969 +dPolE 7980.000000 70.000000 0.166389 0.087197 +dPolE 7990.000000 70.000000 -0.005242 0.087593 +dPolE 8000.000000 70.000000 0.053198 0.087444 +dPolE 8010.000000 70.000000 0.004335 0.087385 +dPolE 8020.000000 70.000000 -0.032724 0.088052 +dPolE 8030.000000 70.000000 -0.027432 0.088582 +dPolE 8040.000000 70.000000 -0.043428 0.088591 +dPolE 8050.000000 70.000000 0.134210 0.088216 +dPolE 8060.000000 70.000000 0.112612 0.088542 +dPolE 8070.000000 70.000000 0.094600 0.089409 +dPolE 8080.000000 70.000000 0.042905 0.089820 +dPolE 8090.000000 70.000000 0.030298 0.089238 +dPolE 8100.000000 70.000000 0.104106 0.089297 +dPolE 8110.000000 70.000000 0.121303 0.089747 +dPolE 8120.000000 70.000000 0.024439 0.090449 +dPolE 8130.000000 70.000000 -0.035846 0.090458 +dPolE 8140.000000 70.000000 -0.074015 0.090018 +dPolE 8150.000000 70.000000 0.142647 0.090051 +dPolE 8160.000000 70.000000 -0.028809 0.090931 +dPolE 8170.000000 70.000000 -0.007807 0.091300 +dPolE 8180.000000 70.000000 0.050191 0.091007 +dPolE 8190.000000 70.000000 0.099577 0.090871 +dPolE 8200.000000 70.000000 -0.105708 0.091572 +dPolE 8210.000000 70.000000 -0.028399 0.091827 +dPolE 8220.000000 70.000000 0.028308 0.092043 +dPolE 8230.000000 70.000000 0.013126 0.091730 +dPolE 8240.000000 70.000000 0.003210 0.091679 +dPolE 8250.000000 70.000000 -0.126330 0.092558 +dPolE 8260.000000 70.000000 -0.068595 0.093026 +dPolE 8270.000000 70.000000 0.086717 0.092567 +dPolE 8280.000000 70.000000 0.112995 0.092118 +dPolE 8290.000000 70.000000 0.007557 0.092357 +dPolE 8300.000000 70.000000 -0.028661 0.093290 +dPolE 8310.000000 70.000000 0.026218 0.093744 +dPolE 8320.000000 70.000000 0.020732 0.093520 +dPolE 8330.000000 70.000000 0.157869 0.092859 +dPolE 8340.000000 70.000000 0.025099 0.092867 +dPolE 8350.000000 70.000000 -0.123805 0.093498 +dPolE 8360.000000 70.000000 0.102070 0.093957 +dPolE 8370.000000 70.000000 -0.012273 0.093906 +dPolE 8380.000000 70.000000 0.027252 0.093683 +dPolE 8390.000000 70.000000 0.014383 0.093964 +dPolE 8400.000000 70.000000 0.018116 0.094731 +dPolE 8410.000000 70.000000 0.109189 0.094963 +dPolE 8420.000000 70.000000 0.040521 0.094879 +dPolE 8430.000000 70.000000 -0.065913 0.094748 +dPolE 8440.000000 70.000000 -0.067413 0.094783 +dPolE 8450.000000 70.000000 -0.073867 0.095269 +dPolE 8460.000000 70.000000 0.067893 0.095350 +dPolE 8470.000000 70.000000 0.139870 0.095039 +dPolE 8480.000000 70.000000 0.019693 0.094828 +dPolE 8490.000000 70.000000 -0.124884 0.095767 +dPolE 8500.000000 70.000000 -0.156429 0.097510 +dPolE 8510.000000 70.000000 -0.153039 0.098008 +dPolE 8520.000000 70.000000 -0.112781 0.095901 +dPolE 8530.000000 70.000000 -0.013177 0.093609 +dPolE 8540.000000 70.000000 -0.057827 0.093422 +dPolE 8550.000000 70.000000 -0.020135 0.094731 +dPolE 8560.000000 70.000000 0.207781 0.095434 +dPolE 8570.000000 70.000000 0.255535 0.095589 +dPolE 8580.000000 70.000000 0.008354 0.095542 +dPolE 8590.000000 70.000000 0.140799 0.095113 +dPolE 8600.000000 70.000000 0.119354 0.095487 +dPolE 8610.000000 70.000000 0.035307 0.096469 +dPolE 8620.000000 70.000000 -0.075645 0.097002 +dPolE 8630.000000 70.000000 0.004445 0.096859 +dPolE 8640.000000 70.000000 0.059680 0.096144 +dPolE 8650.000000 70.000000 -0.105332 0.096054 +dPolE 8660.000000 70.000000 -0.102560 0.096544 +dPolE 8670.000000 70.000000 -0.030524 0.097144 +dPolE 8680.000000 70.000000 0.013191 0.097162 +dPolE 8690.000000 70.000000 -0.122428 0.097191 +dPolE 8700.000000 70.000000 -0.077661 0.096924 +dPolE 8710.000000 70.000000 -0.032900 0.097090 +dPolE 8720.000000 70.000000 -0.012885 0.097542 +dPolE 8730.000000 70.000000 0.157667 0.097326 +dPolE 8740.000000 70.000000 0.143880 0.096961 +dPolE 8750.000000 70.000000 0.026607 0.096819 +dPolE 8760.000000 70.000000 0.045346 0.096882 +dPolE 8770.000000 70.000000 -0.043068 0.097567 +dPolE 8780.000000 70.000000 0.047391 0.097897 +dPolE 8790.000000 70.000000 0.097743 0.097693 +dPolE 8800.000000 70.000000 -0.122301 0.097924 +dPolE 8810.000000 70.000000 -0.042563 0.098153 +dPolE 8820.000000 70.000000 -0.059887 0.098566 +dPolE 8830.000000 70.000000 -0.056642 0.098930 +dPolE 8840.000000 70.000000 -0.093738 0.099073 +dPolE 8850.000000 70.000000 0.018749 0.099101 +dPolE 8860.000000 70.000000 -0.143220 0.099117 +dPolE 8870.000000 70.000000 0.059563 0.098521 +dPolE 8880.000000 70.000000 -0.048442 0.098699 +dPolE 8890.000000 70.000000 -0.184547 0.099330 +dPolE 8900.000000 70.000000 -0.208488 0.099752 +dPolE 8910.000000 70.000000 0.061204 0.099608 +dPolE 8920.000000 70.000000 0.109885 0.099497 +dPolE 8930.000000 70.000000 -0.023908 0.099649 +dPolE 8940.000000 70.000000 0.012116 0.099679 +dPolE 8950.000000 70.000000 0.015102 0.100022 +dPolE 8960.000000 70.000000 -0.051909 0.100397 +dPolE 8970.000000 70.000000 0.025205 0.100513 +dPolE 8980.000000 70.000000 -0.125837 0.100917 +dPolE 8990.000000 70.000000 -0.106164 0.100732 +dPolE 9000.000000 70.000000 -0.037346 0.101026 +dPolE 9010.000000 70.000000 0.115205 0.101103 +dPolE 9020.000000 70.000000 -0.026847 0.101335 +dPolE 9030.000000 70.000000 0.030236 0.101712 +dPolE 9040.000000 70.000000 -0.039271 0.101898 +dPolE 9050.000000 70.000000 -0.077239 0.101768 +dPolE 9060.000000 70.000000 -0.010370 0.101981 +dPolE 9070.000000 70.000000 -0.086949 0.102506 +dPolE 9080.000000 70.000000 -0.143891 0.103141 +dPolE 9090.000000 70.000000 -0.119242 0.103540 +dPolE 9100.000000 70.000000 0.085673 0.103321 +dPolE 9110.000000 70.000000 0.043511 0.103080 +dPolE 9120.000000 70.000000 -0.076594 0.103445 +dPolE 9130.000000 70.000000 -0.072108 0.103908 +dPolE 9140.000000 70.000000 0.008168 0.104588 +dPolE 9150.000000 70.000000 -0.220292 0.104913 +dPolE 9160.000000 70.000000 0.077081 0.104102 +dPolE 9170.000000 70.000000 -0.109409 0.104225 +dPolE 9180.000000 70.000000 0.005502 0.104148 +dPolE 9190.000000 70.000000 0.007427 0.104697 +dPolE 9200.000000 70.000000 0.012564 0.105559 +dPolE 9210.000000 70.000000 0.000690 0.106035 +dPolE 9220.000000 70.000000 -0.152783 0.106752 +dPolE 9230.000000 70.000000 0.009628 0.106758 +dPolE 9240.000000 70.000000 -0.060487 0.106991 +dPolE 9250.000000 70.000000 0.063575 0.107030 +dPolE 9260.000000 70.000000 -0.137575 0.107759 +dPolE 9270.000000 70.000000 -0.054473 0.108177 +dPolE 9280.000000 70.000000 -0.183792 0.108933 +dPolE 9290.000000 70.000000 -0.143408 0.109217 +dPolE 9300.000000 70.000000 -0.084073 0.109311 +dPolE 9310.000000 70.000000 -0.055349 0.109438 +dPolE 9320.000000 70.000000 -0.108978 0.109624 +dPolE 9330.000000 70.000000 -0.030927 0.109889 +dPolE 9340.000000 70.000000 0.054314 0.110231 +dPolE 9350.000000 70.000000 -0.127035 0.111151 +dPolE 9360.000000 70.000000 -0.111230 0.111784 +dPolE 9370.000000 70.000000 -0.071466 0.112019 +dPolE 9380.000000 70.000000 0.079819 0.111881 +dPolE 9390.000000 70.000000 -0.127749 0.112451 +dPolE 9400.000000 70.000000 -0.115274 0.113328 +dPolE 9410.000000 70.000000 -0.102925 0.113952 +dPolE 9420.000000 70.000000 -0.203795 0.114682 +dPolE 9430.000000 70.000000 -0.079955 0.115098 +dPolE 9440.000000 70.000000 -0.100960 0.115199 +dPolE 9450.000000 70.000000 0.033011 0.115337 +dPolE 9460.000000 70.000000 -0.155072 0.116232 +dPolE 9470.000000 70.000000 -0.145331 0.116884 +dPolE 9480.000000 70.000000 -0.192588 0.117553 +dPolE 9490.000000 70.000000 -0.258296 0.118332 +dPolE 9500.000000 70.000000 -0.096283 0.118679 +dPolE 9510.000000 70.000000 -0.009232 0.119015 +dPolE 9520.000000 70.000000 -0.100055 0.119530 +dPolE 9530.000000 70.000000 -0.178912 0.120269 +dPolE 9540.000000 70.000000 0.016349 0.120939 +dPolE 9550.000000 70.000000 0.213172 0.121457 +dPolE 9560.000000 70.000000 -0.036055 0.122178 +dPolE 9570.000000 70.000000 -0.130783 0.122559 +dPolE 9580.000000 70.000000 -0.276977 0.123107 +dPolE 9590.000000 70.000000 -0.145228 0.123413 +dPolE 9600.000000 70.000000 0.059917 0.123670 +dPolE 9610.000000 70.000000 -0.047085 0.124285 +dPolE 9620.000000 70.000000 -0.116907 0.125162 +dPolE 9630.000000 70.000000 0.007982 0.125553 +dPolE 9640.000000 70.000000 -0.168328 0.126412 +dPolE 9650.000000 70.000000 -0.079738 0.126893 +dPolE 9660.000000 70.000000 -0.113084 0.127465 +dPolE 9670.000000 70.000000 -0.165609 0.128430 +dPolE 9680.000000 70.000000 -0.200340 0.129457 +dPolE 9690.000000 70.000000 -0.102812 0.130011 +dPolE 9700.000000 70.000000 -0.184242 0.130510 +dPolE 9710.000000 70.000000 -0.111650 0.131212 +dPolE 9720.000000 70.000000 0.042925 0.131800 +dPolE 9730.000000 70.000000 -0.021852 0.132875 +dPolE 9740.000000 70.000000 0.132754 0.133416 +dPolE 9750.000000 70.000000 -0.225737 0.134498 +dPolE 9760.000000 70.000000 -0.281890 0.135444 +dPolE 9770.000000 70.000000 0.042279 0.135718 +dPolE 9780.000000 70.000000 0.031213 0.136452 +dPolE 9790.000000 70.000000 0.106101 0.137222 +dPolE 9800.000000 70.000000 -0.077202 0.138631 +dPolE 9810.000000 70.000000 -0.101609 0.139790 +dPolE 9820.000000 70.000000 -0.064629 0.140891 +dPolE 9830.000000 70.000000 -0.068827 0.141433 +dPolE 9840.000000 70.000000 0.176781 0.141895 +dPolE 9850.000000 70.000000 -0.096974 0.143472 +dPolE 9860.000000 70.000000 -0.006578 0.144159 +dPolE 9870.000000 70.000000 -0.031664 0.145652 +dPolE 9880.000000 70.000000 -0.191599 0.147177 +dPolE 9890.000000 70.000000 -0.124415 0.147905 +dPolE 9900.000000 70.000000 0.088484 0.148285 +dPolE 9910.000000 70.000000 -0.010064 0.149592 +dPolE 9920.000000 70.000000 -0.161660 0.151424 +dPolE 9930.000000 70.000000 -0.303949 0.153384 +dPolE 9940.000000 70.000000 -0.155101 0.154431 +dPolE 9950.000000 70.000000 0.083986 0.154943 +dPolE 9960.000000 70.000000 -0.016296 0.156620 +dPolE 9970.000000 70.000000 0.144589 0.157392 +dPolE 9980.000000 70.000000 0.143249 0.159249 +dPolE 9990.000000 70.000000 -0.150440 0.161668 +dPolE 10000.000000 70.000000 -0.110606 0.163221 +dPolE 10025.000000 70.000000 0.006812 0.078677 +dPolE 10050.000000 70.000000 0.033280 0.076790 +dPolE 10075.000000 70.000000 0.075009 0.074493 +dPolE 10100.000000 70.000000 0.012870 0.072808 +dPolE 10125.000000 70.000000 -0.075710 0.071368 +dPolE 10150.000000 70.000000 0.030279 0.069433 +dPolE 10175.000000 70.000000 0.029748 0.067782 +dPolE 10200.000000 70.000000 -0.076906 0.066392 +dPolE 10225.000000 70.000000 -0.062878 0.064724 +dPolE 10250.000000 70.000000 -0.036536 0.063198 +dPolE 10275.000000 70.000000 -0.015102 0.061972 +dPolE 10300.000000 70.000000 0.028853 0.060387 +dPolE 10325.000000 70.000000 0.063402 0.058754 +dPolE 10350.000000 70.000000 -0.062004 0.057584 +dPolE 10375.000000 70.000000 -0.055670 0.056365 +dPolE 10400.000000 70.000000 0.072872 0.055111 +dPolE 10425.000000 70.000000 0.098910 0.053997 +dPolE 10450.000000 70.000000 0.062511 0.052960 +dPolE 10475.000000 70.000000 -0.083087 0.052019 +dPolE 10500.000000 70.000000 -0.001128 0.050991 +dPolE 10525.000000 70.000000 0.123771 0.049987 +dPolE 10550.000000 70.000000 -0.004313 0.049210 +dPolE 10575.000000 70.000000 -0.040286 0.048464 +dPolE 10600.000000 70.000000 -0.001314 0.047745 +dPolE 10625.000000 70.000000 -0.019042 0.046812 +dPolE 10650.000000 70.000000 -0.025030 0.045986 +dPolE 10675.000000 70.000000 -0.006424 0.045328 +dPolE 10700.000000 70.000000 -0.015318 0.044512 +dPolE 10725.000000 70.000000 -0.012618 0.043720 +dPolE 10750.000000 70.000000 0.073155 0.043150 +dPolE 10775.000000 70.000000 0.061572 0.042386 +dPolE 10800.000000 70.000000 -0.010398 0.041513 +dPolE 10825.000000 70.000000 0.064924 0.040849 +dPolE 10850.000000 70.000000 0.083024 0.040181 +dPolE 10875.000000 70.000000 0.028408 0.039499 +dPolE 10900.000000 70.000000 -0.073735 0.039010 +dPolE 10925.000000 70.000000 -0.124770 0.038486 +dPolE 10950.000000 70.000000 -0.011745 0.037753 +dPolE 10975.000000 70.000000 0.043302 0.037198 +dPolE 11000.000000 70.000000 0.069940 0.036734 +dPolE 11025.000000 70.000000 0.083896 0.036316 +dPolE 11050.000000 70.000000 0.115750 0.035942 +dPolE 11075.000000 70.000000 0.164115 0.035608 +dPolE 11100.000000 70.000000 0.087824 0.035115 +dPolE 11125.000000 70.000000 0.044422 0.034718 +dPolE 11150.000000 70.000000 0.074747 0.034503 +dPolE 11175.000000 70.000000 0.051224 0.034234 +dPolE 11200.000000 70.000000 0.027105 0.033973 +dPolE 11225.000000 70.000000 0.062793 0.033792 +dPolE 11250.000000 70.000000 0.051990 0.033559 +dPolE 11275.000000 70.000000 0.016998 0.033304 +dPolE 11300.000000 70.000000 0.074598 0.033231 +dPolE 11325.000000 70.000000 0.097672 0.033087 +dPolE 11350.000000 70.000000 0.081544 0.032863 +dPolE 11375.000000 70.000000 0.076166 0.032746 +dPolE 11400.000000 70.000000 0.068828 0.032627 +dPolE 11425.000000 70.000000 0.054459 0.032475 +dPolE 11450.000000 70.000000 0.044122 0.032316 +dPolE 11475.000000 70.000000 0.032761 0.032141 +dPolE 11500.000000 70.000000 0.009760 0.031901 +dPolE 11525.000000 70.000000 0.015214 0.031680 +dPolE 11550.000000 70.000000 0.038551 0.031472 +dPolE 11575.000000 70.000000 0.036614 0.031337 +dPolE 11600.000000 70.000000 0.032238 0.031110 +dPolE 11625.000000 70.000000 0.025058 0.030779 +dPolE 11650.000000 70.000000 0.015590 0.030595 +dPolE 11675.000000 70.000000 0.016101 0.030397 +dPolE 11700.000000 70.000000 0.037929 0.030131 +dPolE 11725.000000 70.000000 0.045867 0.029958 +dPolE 11750.000000 70.000000 0.049415 0.029786 +dPolE 11775.000000 70.000000 0.053501 0.029484 +dPolE 11800.000000 70.000000 0.059004 0.029213 +dPolE 11825.000000 70.000000 0.064218 0.028962 +dPolE 11850.000000 70.000000 0.050253 0.028718 +dPolE 11875.000000 70.000000 0.046572 0.028489 +dPolE 11900.000000 70.000000 0.053323 0.028275 +dPolE 11925.000000 70.000000 0.079530 0.028006 +dPolE 11950.000000 70.000000 0.089011 0.027773 +dPolE 11975.000000 70.000000 0.067459 0.027605 +dPolE 12000.000000 70.000000 0.071567 0.027421 +dPolE 12025.000000 70.000000 0.066121 0.027238 +dPolE 12050.000000 70.000000 0.011220 0.027068 +dPolE 12075.000000 70.000000 0.027049 0.026930 +dPolE 12100.000000 70.000000 0.066094 0.026803 +dPolE 12125.000000 70.000000 0.035420 0.026637 +dPolE 12150.000000 70.000000 0.018385 0.026478 +dPolE 12175.000000 70.000000 0.011979 0.026324 +dPolE 12200.000000 70.000000 0.059720 0.026252 +dPolE 12225.000000 70.000000 0.065164 0.026173 +dPolE 12250.000000 70.000000 0.018579 0.026086 +dPolE 12275.000000 70.000000 0.025677 0.026051 +dPolE 12300.000000 70.000000 0.037487 0.026043 +dPolE 12325.000000 70.000000 0.045386 0.026077 +dPolE 12350.000000 70.000000 0.035247 0.026012 +dPolE 12375.000000 70.000000 0.036068 0.025970 +dPolE 12400.000000 70.000000 0.092622 0.026100 +dPolE 12425.000000 70.000000 0.079267 0.026046 +dPolE 12450.000000 70.000000 0.043820 0.025928 +dPolE 12475.000000 70.000000 0.097409 0.026008 +dPolE 12500.000000 70.000000 0.083026 0.025930 +dPolE 12525.000000 70.000000 0.019673 0.025736 +dPolE 12550.000000 70.000000 0.092411 0.025632 +dPolE 12575.000000 70.000000 0.108301 0.025526 +dPolE 12600.000000 70.000000 0.059839 0.025415 +dPolE 12625.000000 70.000000 0.085187 0.025342 +dPolE 12650.000000 70.000000 0.099598 0.025244 +dPolE 12675.000000 70.000000 0.084149 0.025099 +dPolE 12700.000000 70.000000 0.079196 0.024932 +dPolE 12725.000000 70.000000 0.074591 0.024811 +dPolE 12750.000000 70.000000 0.064857 0.024823 +dPolE 12775.000000 70.000000 0.077203 0.024678 +dPolE 12800.000000 70.000000 0.093051 0.024494 +dPolE 12825.000000 70.000000 0.088572 0.024388 +dPolE 12850.000000 70.000000 0.107036 0.024268 +dPolE 12875.000000 70.000000 0.131399 0.024146 +dPolE 12900.000000 70.000000 0.089568 0.024074 +dPolE 12925.000000 70.000000 0.075375 0.023954 +dPolE 12950.000000 70.000000 0.083305 0.023796 +dPolE 12975.000000 70.000000 0.081726 0.023731 +dPolE 13000.000000 70.000000 0.081996 0.023650 +dPolE 13025.000000 70.000000 0.084333 0.023552 +dPolE 13050.000000 70.000000 0.065459 0.023436 +dPolE 13075.000000 70.000000 0.054320 0.023341 +dPolE 13100.000000 70.000000 0.057780 0.023279 +dPolE 13125.000000 70.000000 0.054970 0.023219 +dPolE 13150.000000 70.000000 0.053520 0.023153 +dPolE 13175.000000 70.000000 0.057470 0.023073 +dPolE 13200.000000 70.000000 0.063494 0.023010 +dPolE 13225.000000 70.000000 0.070928 0.022971 +dPolE 13250.000000 70.000000 0.080909 0.022993 +dPolE 13275.000000 70.000000 0.051857 0.022984 +dPolE 13300.000000 70.000000 0.022699 0.022969 +dPolE 13325.000000 70.000000 0.076654 0.022982 +dPolE 13350.000000 70.000000 0.102865 0.023010 +dPolE 13375.000000 70.000000 0.111541 0.023045 +dPolE 13400.000000 70.000000 0.107587 0.023057 +dPolE 13425.000000 70.000000 0.092557 0.023115 +dPolE 13450.000000 70.000000 0.071000 0.023211 +dPolE 13475.000000 70.000000 0.106587 0.023335 +dPolE 13500.000000 70.000000 0.110952 0.023487 +dPolE 13525.000000 70.000000 0.083744 0.023667 +dPolE 13550.000000 70.000000 0.147604 0.023953 +dPolE 13575.000000 70.000000 0.163248 0.024275 +dPolE 13600.000000 70.000000 0.112383 0.024642 +dPolE 13625.000000 70.000000 0.130552 0.024834 +dPolE 13650.000000 70.000000 0.123440 0.025042 +dPolE 13675.000000 70.000000 0.064734 0.025304 +dPolE 13700.000000 70.000000 0.069468 0.025886 +dPolE 13725.000000 70.000000 0.087003 0.026876 +dPolE 13750.000000 70.000000 0.110178 0.028689 +dPolE 13775.000000 70.000000 0.086923 0.031278 +dPolE 13800.000000 70.000000 0.051496 0.034004 +dPolE 13825.000000 70.000000 0.028648 0.035647 +dPolE 13850.000000 70.000000 0.046143 0.035350 +dPolE 13875.000000 70.000000 0.055333 0.034311 +dPolE 13900.000000 70.000000 0.002944 0.032902 +dPolE 13925.000000 70.000000 0.018140 0.031992 +dPolE 13950.000000 70.000000 0.047368 0.031122 +dPolE 13975.000000 70.000000 0.036399 0.029690 +dPolE 14000.000000 70.000000 0.029442 0.028820 +dPolE 14025.000000 70.000000 0.024933 0.028188 +dPolE 14050.000000 70.000000 0.024012 0.027500 +dPolE 14075.000000 70.000000 0.058673 0.027008 +dPolE 14100.000000 70.000000 0.098919 0.026613 +dPolE 14125.000000 70.000000 0.040108 0.026136 +dPolE 14150.000000 70.000000 0.029215 0.025807 +dPolE 14175.000000 70.000000 0.046739 0.025568 +dPolE 14200.000000 70.000000 0.040847 0.025304 +dPolE 14225.000000 70.000000 0.040553 0.025140 +dPolE 14250.000000 70.000000 0.045288 0.025042 +dPolE 14275.000000 70.000000 0.066948 0.024873 +dPolE 14300.000000 70.000000 0.101485 0.024752 +dPolE 14325.000000 70.000000 0.144912 0.024671 +dPolE 14350.000000 70.000000 0.104514 0.024619 +dPolE 14375.000000 70.000000 0.096325 0.024546 +dPolE 14400.000000 70.000000 0.118386 0.024453 +dPolE 14425.000000 70.000000 0.051843 0.024499 +dPolE 14450.000000 70.000000 0.044830 0.024458 +dPolE 14475.000000 70.000000 0.099677 0.024327 +dPolE 14500.000000 70.000000 0.050029 0.024327 +dPolE 14525.000000 70.000000 0.064940 0.024339 +dPolE 14550.000000 70.000000 0.155146 0.024361 +dPolE 14575.000000 70.000000 0.060414 0.024303 +dPolE 14600.000000 70.000000 0.029659 0.024308 +dPolE 14625.000000 70.000000 0.084604 0.024391 +dPolE 14650.000000 70.000000 0.061521 0.024334 +dPolE 14675.000000 70.000000 0.059383 0.024351 +dPolE 14700.000000 70.000000 0.089484 0.024471 +dPolE 14725.000000 70.000000 0.118830 0.024390 +dPolE 14750.000000 70.000000 0.127631 0.024384 +dPolE 14775.000000 70.000000 0.109367 0.024494 +dPolE 14800.000000 70.000000 0.034031 0.024511 +dPolE 14825.000000 70.000000 0.017250 0.024511 +dPolE 14850.000000 70.000000 0.086492 0.024500 +dPolE 14875.000000 70.000000 0.065683 0.024548 +dPolE 14900.000000 70.000000 0.057442 0.024618 +dPolE 14925.000000 70.000000 0.077460 0.024712 +dPolE 14950.000000 70.000000 0.045533 0.024714 +dPolE 14975.000000 70.000000 0.041801 0.024773 +dPolE 15000.000000 70.000000 0.083780 0.024925 +dPolE 15025.000000 70.000000 0.088659 0.024886 +dPolE 15050.000000 70.000000 0.095401 0.024913 +dPolE 15075.000000 70.000000 0.109194 0.025052 +dPolE 15100.000000 70.000000 0.103116 0.025046 +dPolE 15125.000000 70.000000 0.110659 0.025054 +dPolE 15150.000000 70.000000 0.138644 0.025097 +dPolE 15175.000000 70.000000 0.109977 0.025162 +dPolE 15200.000000 70.000000 0.089726 0.025249 +dPolE 15225.000000 70.000000 0.085784 0.025362 +dPolE 15250.000000 70.000000 0.075452 0.025418 +dPolE 15275.000000 70.000000 0.088063 0.025501 +dPolE 15300.000000 70.000000 0.129723 0.025623 +dPolE 15325.000000 70.000000 0.069571 0.025670 +dPolE 15350.000000 70.000000 0.041761 0.025743 +dPolE 15375.000000 70.000000 0.056999 0.025850 +dPolE 15400.000000 70.000000 0.064877 0.025907 +dPolE 15425.000000 70.000000 0.072747 0.026022 +dPolE 15450.000000 70.000000 0.080838 0.026202 +dPolE 15475.000000 70.000000 0.083334 0.026267 +dPolE 15500.000000 70.000000 0.090283 0.026358 +dPolE 15525.000000 70.000000 0.101656 0.026476 +dPolE 15550.000000 70.000000 0.110235 0.026461 +dPolE 15575.000000 70.000000 0.114928 0.026547 +dPolE 15600.000000 70.000000 0.112863 0.026721 +dPolE 15625.000000 70.000000 0.037594 0.026816 +dPolE 15650.000000 70.000000 0.034065 0.026933 +dPolE 15675.000000 70.000000 0.083328 0.027063 +dPolE 15700.000000 70.000000 0.066327 0.027122 +dPolE 15725.000000 70.000000 0.073002 0.027225 +dPolE 15750.000000 70.000000 0.089386 0.027361 +dPolE 15775.000000 70.000000 0.044818 0.027506 +dPolE 15800.000000 70.000000 0.064880 0.027613 +dPolE 15825.000000 70.000000 0.106870 0.027714 +dPolE 15850.000000 70.000000 0.038943 0.027931 +dPolE 15875.000000 70.000000 0.053389 0.028041 +dPolE 15900.000000 70.000000 0.097113 0.028118 +dPolE 15925.000000 70.000000 0.077599 0.028304 +dPolE 15950.000000 70.000000 0.082359 0.028476 +dPolE 15975.000000 70.000000 0.092483 0.028641 +dPolE 16000.000000 70.000000 0.084092 0.028807 +dPolE 16025.000000 70.000000 0.117735 0.028918 +dPolE 16050.000000 70.000000 0.124147 0.029058 +dPolE 16075.000000 70.000000 0.013779 0.029333 +dPolE 16100.000000 70.000000 0.057156 0.029495 +dPolE 16125.000000 70.000000 0.088385 0.029643 +dPolE 16150.000000 70.000000 0.002192 0.029831 +dPolE 16175.000000 70.000000 0.077811 0.030034 +dPolE 16200.000000 70.000000 0.116008 0.030257 +dPolE 16225.000000 70.000000 0.033283 0.030510 +dPolE 16250.000000 70.000000 0.089212 0.030682 +dPolE 16275.000000 70.000000 0.103785 0.030906 +dPolE 16300.000000 70.000000 0.037108 0.031217 +dPolE 16325.000000 70.000000 0.078843 0.031441 +dPolE 16350.000000 70.000000 0.106385 0.031719 +dPolE 16375.000000 70.000000 0.111403 0.032066 +dPolE 16400.000000 70.000000 0.072915 0.032302 +dPolE 16425.000000 70.000000 0.055535 0.032712 +dPolE 16450.000000 70.000000 0.059390 0.033252 +dPolE 16475.000000 70.000000 0.099431 0.033442 +dPolE 16500.000000 70.000000 0.094490 0.033926 +dPolE 16525.000000 70.000000 0.068718 0.034601 +dPolE 16550.000000 70.000000 0.106094 0.035170 +dPolE 16575.000000 70.000000 0.079572 0.036084 +dPolE 16600.000000 70.000000 0.039594 0.037215 +dPolE 16625.000000 70.000000 0.082032 0.038424 +dPolE 16650.000000 70.000000 0.040110 0.040602 +dPolE 16675.000000 70.000000 0.008557 0.043452 +dPolE 16700.000000 70.000000 0.112667 0.046835 +dPolE 16725.000000 70.000000 0.107670 0.052035 +dPolE 16750.000000 70.000000 0.086537 0.058760 +dPolE 16775.000000 70.000000 0.099584 0.067024 +dPolE 16800.000000 70.000000 0.026520 0.078223 +dPolE 16825.000000 70.000000 -0.001887 0.091867 +dPolE 16850.000000 70.000000 0.093951 0.107110 +dPolE 16875.000000 70.000000 0.015745 0.125295 +dPolE 16900.000000 70.000000 -0.217532 0.147289 +dPolE 16925.000000 70.000000 -0.622895 0.173056 +dPolE 16950.000000 70.000000 -0.393209 0.199934 +dPolE 16975.000000 70.000000 -0.096587 0.228777 +dPolE 17000.000000 70.000000 0.152324 0.260383 \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/ellips/test.yaml b/tests/data/tools/dataconverter/readers/ellips/test.yaml new file mode 100644 index 000000000..e58c91b9c --- /dev/null +++ b/tests/data/tools/dataconverter/readers/ellips/test.yaml @@ -0,0 +1,56 @@ +#filename: 2020-09-11-InS-2020-07-06-D5.dat +filename: tests/data/tools/dataconverter/readers/ellips/test-data.dat +skip: 3 +sep: "\t" + +# if the file has a block structure, +# which column has the block index? +blocks: + - type + - angle_of_incidence + +colnames: + - type + - wavelength + - angle_of_incidence + - psi + - delta + - err.psi + - err.delta +x-var: wavelength +y-var: + - psi + - delta +err-var: + - err.psi + - err.delta +parameters: + - type + - angle +experiment_description: V-VASE scan on SiO2 on Si in air. +experiment_identifier: exp-ID +detector_type: photodiode +integration_time: 2 s +rotating_element: analyzer +angle_of_incidence: 70 degrees +data_type: psi / delta +ellipsometry_type: rotating analyzer +focussing_probes: false +light_source: xenon arc lamp +model: V-VASE +sample_history: Sample history +address: Unter den Linden +affiliation: HU Berlin +email: name@hu-berlin.de +name: me +software: WVASE +program_version: "3.5" +atom_types: Si, O +data_identifier: 0 +layer_structure: SiO2 on Si +measured_data: 1 +medium: air +sample_name: SiO2 on Si +start_time: "2022-01-22T12:14:12.05018+00:00" +definition: "" +angular_spread: "0.2 sr" \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/em/Em.NeXus.Em.Example.1.ipynb b/tests/data/tools/dataconverter/readers/em/Em.NeXus.Em.Example.1.ipynb new file mode 100644 index 000000000..6578fe096 --- /dev/null +++ b/tests/data/tools/dataconverter/readers/em/Em.NeXus.Em.Example.1.ipynb @@ -0,0 +1,354 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## nomad-parser-nexus demo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sprint5, EM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step -1: Set up dependencies for jupyterlab_h5web" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Instructions how to set up all dependencies to start a new virtualenv with a jupyterlab installation.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# start with a fresh virtualenv\n", + "# ! pip install virtualenv\n", + "# ! virtualenv --python=python3.7 .py37env\n", + "# ! source .py37env/bin/activate\n", + "\n", + "# install jupyter, jupyter-lab and web extensions\n", + "\n", + "#inside SPRINT5-JUPYTER-TEST-02, conda, python 3.7, jupyter, jupyterlab" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! pip install --upgrade nodejs && pip install ipywidgets h5py==3.5.0 h5glance==0.7 h5grove==0.0.8 jupyterlab[full]==2.3.0 jupyterlab_h5web[full]==0.0.11 punx==0.2.5 nexpy==0.14.1 silx[full] && jupyter lab build" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! jupyter nbextension enable --py widgetsnbextension" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! jupyter serverextension enable jupyterlab_h5web" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Restart the Jupyter kernel, or easier start the following code after you have setup these environment steps.

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 0: Installating and testing nomad-parser-nexus module" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! pip list && pip install --upgrade pip && pip install nomad-lab==1.0.0 --extra-index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --branch yaml2nxdl --recursive parser-nexus && cd parser-nexus && git status && pip install -r requirements.txt\n", + "# once yaml2nxdl was merged with master\n", + "# ! git clone https://github.com/nomad-coe/nomad-parser-nexus.git --recursive parser-nexus && cd parser-nexus && git status && pip install -r requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ! cd parser-nexus && git status && git pull && pip install -r requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "! cd parser-nexus && pip install -e .[all]\n", + "! pip list | grep nomad*\n", + "! pip list | grep nexus*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# in the above cells clear redundant commands based on todays history\n", + "! cd parser-nexus && pytest -sv tests" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### Step 1: Download example data (for EM)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 498k 100 498k 0 0 361k 0 0:00:01 0:00:01 --:--:-- 361k\n" + ] + } + ], + "source": [ + "# showing here the example for APM, http://dx.doi.org/10.5281/zenodo.5911409\n", + "import shutil\n", + "! curl --output EM.STEM.Nion.Datasets.3.zip https://zenodo.org/record/5911409/files/EM.STEM.Nion.Datasets.3.zip\n", + "shutil.unpack_archive('EM.STEM.Nion.Datasets.3.zip')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "### Step 2: Run your \\<\\\\>-specific dataconverter/readers/\\<\\\\> on your \\<\\\\>" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using em_nion reader to convert the given files: \n", + "• HAADF_01.npy\n", + "• HAADF_01.ELabFTW.dat\n", + "• HAADF_01.json \n", + "Add metadata which come from other sources...\n", + "Extracting data from NionSwift JSON file: HAADF_01.json\n", + "Loading: NionSwiftJsonToNexusTranslationTable.ods from...\n", + "/home/mkuehbach/SPRINT5-JUPYTER-TEST-03/readers/em_nion/utils/\n", + "Add metadata/data from numpy array(s) representing scans...\n", + "Extracting data from NionSwift NPY file: HAADF_01.npy\n", + "Add metadata from e.g.ELN/LIMS dump JSON files...\n", + "Extracting data from ELN/LIMS/others JSON file: HAADF_01.ELabFTW.dat\n", + "The output file generated: em3.test.nxs\n" + ] + } + ], + "source": [ + "#parser-nexus/tests/data/tools/dataconverter/readers/em/\n", + "! python parser-nexus/nexusparser/tools/dataconverter/convert.py --reader em_nion --nxdl parser-nexus/nexusparser/definitions/applications/NXem_nion.nxdl.xml \\\n", + "--input-file HAADF_01.npy \\\n", + "--input-file HAADF_01.ELabFTW.dat \\\n", + "--input-file HAADF_01.json --output em3.test.nxs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The key take home message is that the above-specified command triggers the automatic creation of the HDF5 file.** This *.nxs file, is an HDF5 file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Inspect the HDF5/NeXus file em3.test.nxs using H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "config dir: /home/mkuehbach/.jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web \u001b[32mOK\u001b[0m\n", + "config dir: /home/mkuehbach/SPRINT5-JUPYTER-TEST-03/.pyenv/etc/jupyter\n", + " jupyterlab_h5web \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab_h5web \u001b[32mOK\u001b[0m\n", + " jupyterlab \u001b[32m enabled \u001b[0m\n", + " - Validating...\n", + " jupyterlab 2.3.0 \u001b[32mOK\u001b[0m\n", + "JupyterLab v2.3.0\n", + "Known labextensions:\n", + " app dir: /home/mkuehbach/SPRINT5-JUPYTER-TEST-03/.pyenv/share/jupyter/lab\n", + " jupyterlab-h5web v0.0.11 \u001b[32m enabled \u001b[0m \u001b[32mOK\u001b[0m\n" + ] + } + ], + "source": [ + "! jupyter serverextension list\n", + "! jupyter labextension list" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from jupyterlab_h5web import H5Web" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# h5_file_name = 'parser-nexus/tests/data/nexus_test_data/201805_WSe2_arpes.nxs'\n", + "h5_file_name = 'em3.test.nxs'" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "application/x-hdf5": "/home/mkuehbach/SPRINT5-JUPYTER-TEST-03/em3.test.nxs", + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H5Web(h5_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is where the general template ends. Continue to fill the notebook based on
\n", + "**your own** post-processing of the *.nxs file, taking e.g. inspiration from
\n", + "sprints 2 and 3 in the nomad-remote-tools-hub mpcdf git repo." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Congratulations. **Given that all NORTH tools have mounted your current directory, you can now inspect this HDF5 file.**
\n", + "**The clue is you can now use the data processing tools from NORTH for analysing apm.test.nxs further.**
\n", + "Again, these analysis tools come shipped with nomad so there is no need to install them locally.
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/data/tools/dataconverter/readers/example/testdata.json b/tests/data/tools/dataconverter/readers/example/testdata.json new file mode 100644 index 000000000..6295404b7 --- /dev/null +++ b/tests/data/tools/dataconverter/readers/example/testdata.json @@ -0,0 +1,17 @@ +{ + "bool_value": true, + "char_value": "A random string!", + "float_value": 0.1, + "float_value_units": "Units are always strings.", + "int_value": -3, + "int_value_units": "m/s^2", + "posint_value": 7, + "posint_value_units": "V", + "definition": "NXtest", + "definition_version": "0.0.1", + "program_name": "Nexus Parser", + "type": "2nd type", + "date_value": "2022-01-22T12:14:12.05018+00:00", + "required_child": 1, + "optional_child": 1 +} \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/mpes/config_file.json b/tests/data/tools/dataconverter/readers/mpes/config_file.json new file mode 100755 index 000000000..ba9450286 --- /dev/null +++ b/tests/data/tools/dataconverter/readers/mpes/config_file.json @@ -0,0 +1,155 @@ +{ + "/ENTRY[entry]/definition": "NXmpes", + "/ENTRY[entry]/definition/@version": "None", + "/ENTRY[entry]/title": "@attrs:metadata/entry_title", + "/ENTRY[entry]/@entry": "entry", + "/ENTRY[entry]/start_time": "@attrs:metadata/timing/acquisition_start", + "/ENTRY[entry]/experiment_institution": "Fritz Haber Institute - Max Planck Society", + "/ENTRY[entry]/experiment_facility": "Time Resolved ARPES", + "/ENTRY[entry]/experiment_laboratory": "Clean Room 4", + "/ENTRY[entry]/entry_identifier": "@attrs:metadata/entry_identifier", + "/ENTRY[entry]/entry_start_time": "@attrs:metadata/timing/acquisition_start", + "/ENTRY[entry]/entry_start_time_timestamp": "@attrs:metadata/timing/acquisition_start_ts", + "/ENTRY[entry]/entry_end_time": "@attrs:metadata/timing/acquisition_stop", + "/ENTRY[entry]/entry_start_time_timestamp": "@attrs:metadata/timing/acquisition_stop_ts", + "/ENTRY[entry]/entry_duration": "@attrs:metadata/timing/acquisition_duration", + "/ENTRY[entry]/entry_duration/@units": "s", + "/ENTRY[entry]/entry_collection_time": "@attrs:metadata/timing/acquisition_duration", + "/ENTRY[entry]/entry_collection_time/@units": "s", + + "/ENTRY[entry]/USER[user]/name": "@attrs:metadata/user0/name", + "/ENTRY[entry]/USER[user]/role": "@attrs:metadata/user0/name", + "/ENTRY[entry]/USER[user]/affiliation": "@attrs:metadata/user0/name", + "/ENTRY[entry]/USER[user]/address": "@attrs:metadata/user0/name", + "/ENTRY[entry]/USER[user]/email": "@attrs:metadata/user0/name", + + "/ENTRY[entry]/INSTRUMENT[instrument]/instrument_name": "TR-ARPES @ FHI", + "/ENTRY[entry]/INSTRUMENT[instrument]/instrument_description": "Time-of-flight momentum microscope equipped delay line detector, at the endstation of the high rep-rate HHG source at FHI", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/momentum_resolution": "@attrs:metadata/instrument/analyzer/momentum_resolution", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/momentum_resolution/@units": "1/A", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/description": "SPECS Metis 1000 Momentum Microscope", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/energy_resolution": 0.14, + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/energy_resolution/@units": "ev", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/fast_axes": ["kx","ky","E"], + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/slow_axes": "@attrs:metadata/instrument/analyzer/slow_axes", + + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/projection": "@attrs:metadata/instrument/analyzer/projection", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/scheme": "Momentum Microscope", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/mode": "@attrs:metadata/instrument/analyzer/lens_mode", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_voltage": "@attrs:metadata/file/KTOF:Lens:Extr:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_current": "@attrs:metadata/file/KTOF:Lens:Extr:I", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/extractor_current/@units": "A", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/working_distance": "@attrs:metadata/instrument/analyzer/working_distance", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/working_distance/@units": "mm", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/lens_names": "@attrs:metadata/instrument/analyzer/lens_voltages", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/lens_voltages": "@attrs:metadata/instrument/analyzer/lens_voltages", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/lens_voltages/@units": "V", + + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/field_aperture/shape": "circle", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/field_aperture/size": "@attrs:metadata/instrument/analyzer/fa_size", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/field_aperture/size/@units": "µm", + + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/contrast_aperture/shape": "circle", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/contrast_aperture/size": "@attrs:metadata/instrument/analyzer/ca_size", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/COLLECTIONCOLUMN[collectioncolumn]/contrast_aperture/size/@units": "µm", + + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/energy_scan_mode": "fixed", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/pass_energy": "@attrs:metadata/file/KTOF:Lens:TOF:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/pass_energy/@units": "ev", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/scheme": "tof", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/tof_distance": "0.9", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/ENERGYDISPERSION[energydispersion]/tof_distance/@units": "m", + + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_type": "MCP", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_type": "DLD", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/sensor_pixels": [1800, 1800], + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_bias": "@attrs:metadata/file/KTOF:Lens:MCPfront:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_bias/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_voltage": "@attrs:metadata/file/KTOF:Lens:MCPback:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/amplifier_voltage/@units": "V", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_voltage": "@attrs:metadata/file/KTOF:Lens:UDLD:VSet", + "/ENTRY[entry]/INSTRUMENT[instrument]/ELECTRONANALYSER[electronanalyser]/DETECTOR[detector]/detector_voltage/@units": "V", + + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/name": "HHG @ TR-ARPES @ FHI", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/probe": "x-ray", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/type": "Laser", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/mode": "Pulsed", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/frequency": "@attrs:metadata/instrument/beam/probe/frequency", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/frequency/@units": "kHz", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source]/photon_energy": "@attrs:metadata/instrument/beam/probe/incident_energy", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/distance": 0.0, + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/distance/@units": "mm", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/incident_energy": "@attrs:metadata/instrument/beam/probe/incident_energy", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/incident_energy/@units": "eV", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/incident_energy_spread": "@attrs:metadata/instrument/beam/probe/incident_energy_spread", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/incident_energy_spread/@units": "eV", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/pulse_duration": "@attrs:metadata/instrument/beam/probe/pulse_duration", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/pulse_duration/@units": "fs", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/incident_polarization": "@attrs:metadata/instrument/beam/probe/incident_polarization", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/incident_polarization/@units": "V^2/mm^2", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/extent": "@attrs:metadata/instrument/beam/probe/extent", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam]/extent/@units": "µm", + + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/name": "OPCPA @ TR-ARPES @ FHI", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/probe": "NIR", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/type": "Laser", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/mode": "Pulsed", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/frequency": "@attrs:metadata/instrument/beam/pump/frequency", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/frequency/@units": "kHz", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_pump]/photon_energy": "@attrs:metadata/instrument/beam/pump/incident_energy", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/distance": 0.0, + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/distance/@units": "mm", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_energy": "@attrs:metadata/instrument/beam/pump/incident_energy", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_energy/@units": "eV", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_energy_spread": "@attrs:metadata/instrument/beam/pump/incident_energy_spread", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_energy_spread/@units": "eV", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_wavelength": "@attrs:metadata/instrument/beam/pump/incident_wavelength", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_wavelength/@units": "nm", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/pulse_duration": "@attrs:metadata/instrument/beam/pump/pulse_duration", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/pulse_duration/@units": "fs", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_polarization": "@attrs:metadata/instrument/beam/pump/incident_polarization", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/incident_polarization/@units": "V^2/mm^2", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/pulse_energy": "@attrs:metadata/instrument/beam/pump/pulse_energy", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/pulse_energy/@units": "µJ", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/average_power": "@attrs:metadata/instrument/beam/pump/average_power", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/average_power/@units": "mW", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/extent": "@attrs:metadata/instrument/beam/pump/extent", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/extent/@units": "µm", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/fluence": "@attrs:metadata/instrument/beam/pump/fluence", + "/ENTRY[entry]/INSTRUMENT[instrument]/BEAM[beam_pump]/fluence/@units": "mJ/cm^2", + + "/ENTRY[entry]/SAMPLE[sample]/preparation_date": "@attrs:metadata/sample/preparation_date", + "/ENTRY[entry]/SAMPLE[sample]/sample_history": "@attrs:metadata/sample/sample_history", + "/ENTRY[entry]/SAMPLE[sample]/chemical_formula": "@attrs:metadata/sample/chemical_formula", + "/ENTRY[entry]/SAMPLE[sample]/description": "@attrs:metadata/sample/chemical_formula", + "/ENTRY[entry]/SAMPLE[sample]/name": "@attrs:metadata/sample/chemical_formula", + "/ENTRY[entry]/SAMPLE[sample]/pressure": "@attrs:metadata/sample/pressure", + "/ENTRY[entry]/SAMPLE[sample]/pressure/@units": "mbar", + "/ENTRY[entry]/SAMPLE[sample]/situation": "vacuum", + "/ENTRY[entry]/SAMPLE[sample]/temperature": "@attrs:metadata/sample/temperature", + "/ENTRY[entry]/SAMPLE[sample]/temperature/@units": "K", + "/ENTRY[entry]/SAMPLE[sample]/bias": "@attrs:metadata/file/KTOF:Lens:Sample:VSet", + "/ENTRY[entry]/SAMPLE[sample]/bias/@units": "V", + + + "/ENTRY[entry]/PROCESS[process]/calculated_energy": "@data:coords[\"E\"].data", + "/ENTRY[entry]/PROCESS[process]/calculated_kx": "@data:coords[\"kx\"].data", + "/ENTRY[entry]/PROCESS[process]/calculated_energy/@units": "eV", + "/ENTRY[entry]/PROCESS[process]/calculated_kx/@units": "1/A", + "/ENTRY[entry]/PROCESS[process]/energy_calibration/applied": true, + + "/ENTRY[entry]/DATA[data]/@axes": "@data:dims", + "/ENTRY[entry]/DATA[data]/@energy_indices": "@data:coords[\"E\"].data", + "/ENTRY[entry]/DATA[data]/@kx_indices": "@data:coords[\"kx\"].data", + "/ENTRY[entry]/DATA[data]/@signal": "data", + "/ENTRY[entry]/DATA[data]/data": "@data:data", + "/ENTRY[entry]/DATA[data]/energy": "@data:coords[\"E\"].data", + "/ENTRY[entry]/DATA[data]/kx": "@data:coords[\"kx\"].data", + "/ENTRY[entry]/DATA[data]/ky": "@data:coords[\"ky\"].data", + "/ENTRY[entry]/DATA[data]/delay": "@data:coords[\"delay\"].data" + + + + +} \ No newline at end of file diff --git a/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small.h5 b/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small.h5 new file mode 100755 index 000000000..44c186c1c Binary files /dev/null and b/tests/data/tools/dataconverter/readers/mpes/xarray_saved_small.h5 differ diff --git a/tests/data/yaml2nxdl_test_data/NXattributes.yml b/tests/data/yaml2nxdl_test_data/NXattributes.yml new file mode 100644 index 000000000..9e5061bc9 --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/NXattributes.yml @@ -0,0 +1,33 @@ +#test case for attributes +doc: documentation no. 0 +symbols: + doc: documentation no. 1 + testnamesymbol: test description of symbol +category: application +(NXellipsometry_base_draft): + (NXentry): + \@entry: + doc: attribute documentation + # ATTRIBUTE DOCUMENTATION + exists: required + #if the exists keyword is not used the default is exists optional + doc: documentation no. 2 + experiment_identifier: + exists: required + doc: documentation no. 3 + experiment_description: + exists: required + start_time(NX_DATE_TIME): + exists: required + unit: NX_TIME + program_name: + doc: documentation no. 4 + program_version: + doc: documentation no. 5 + time_zone(NX_DATE_TIME): + exists: required + doc: documentation no. 6 + definition_local: + doc: documentation no. 7 + \@version: + # EMPTY ATTRIBUTES diff --git a/tests/data/yaml2nxdl_test_data/NXnested_symbols.yml b/tests/data/yaml2nxdl_test_data/NXnested_symbols.yml new file mode 100644 index 000000000..1544e51b0 --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/NXnested_symbols.yml @@ -0,0 +1,19 @@ +symbols: + doc: teststring + nfa: Number of fast axes (acquired simutaneously) e.g. emission angle, kinetic energy + nsa: Number of slow axes (acquired scanning a physical quantity) e.g. lens voltage, photon energy or temperature + nx: Number of points in the first angular direction + ne: Number of points in the energy dispersion direction +category: base +doc: Test case for verifying handling of symbols inside a nexus class in nested layers of the hierarchy +(NXentry): + (NXsample): + symbols: + doc: teststring + n_comp: number of compositions + n_Temp: number of temperatures + (NXprocess): + symbols: + doc: another nest + x: parameter1 + y: parameter2 diff --git a/tests/data/yaml2nxdl_test_data/NXnested_symbols.yml.nxdl.xml b/tests/data/yaml2nxdl_test_data/NXnested_symbols.yml.nxdl.xml new file mode 100644 index 000000000..3f41398cc --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/NXnested_symbols.yml.nxdl.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/yaml2nxdl_test_data/NXtest_links.yml b/tests/data/yaml2nxdl_test_data/NXtest_links.yml new file mode 100644 index 000000000..4bd6d5c36 --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/NXtest_links.yml @@ -0,0 +1,8 @@ +category: base +doc: Test case for verifying that the parser can handle links correctly. +(NXentry): + (NXdata): + polar_angle(link): + target: here1 + target_angle(link): + target: here2 diff --git a/tests/data/yaml2nxdl_test_data/NXtest_links.yml.nxdl.xml b/tests/data/yaml2nxdl_test_data/NXtest_links.yml.nxdl.xml new file mode 100644 index 000000000..d48fbeb52 --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/NXtest_links.yml.nxdl.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tests/data/yaml2nxdl_test_data/Ref_NXattributes.nxdl.xml b/tests/data/yaml2nxdl_test_data/Ref_NXattributes.nxdl.xml new file mode 100644 index 000000000..4dcbe76ec --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/Ref_NXattributes.nxdl.xml @@ -0,0 +1,33 @@ + + + + documentation no. 0 + + documentation no. 1 + + + + + attribute documentation + + documentation no. 2 + + documentation no. 3 + + + + + documentation no. 4 + + + documentation no. 5 + + + documentation no. 6 + + + documentation no. 7 + + + + diff --git a/tests/data/yaml2nxdl_test_data/Ref_NXellipsometry.yml b/tests/data/yaml2nxdl_test_data/Ref_NXellipsometry.yml new file mode 100644 index 000000000..817bc4c90 --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/Ref_NXellipsometry.yml @@ -0,0 +1,270 @@ +doc: "draft application definition for ellipsometry measurements, including complex systems up to variable angle spectroscopic ellipsometry." +symbols: + doc: "Variables used throughout the document, e.g. dimensions and important parameters" + angle_of_incidence: "The angle of incidence to the surface normal (stage normal) of the sample" + N_wavelength: "Size of the energy / wavelength vector used" + N_variables: "How many variables are saved in a measurement (e.g. Psi and delta, Mueller matrix)" + N_angles: "Number of incident angles used" + N_p1: "Number of first sample parameters scanned" + N_time: "Number of time points measured" +category: application +(NXellipsometry_base_draft): + (NXentry): + exists: required + \@entry: + doc: "NeXus convention is to use entry1, entry2, for analysis software to locate each entry." + doc: "to be defined" + experiment_identifier(NX_CHAR): + exists: required + doc: "Unique identifier of the experiment, such as a (globally persistent) unique identifier. The identifier is usually defined by the facility or principle investigator. The identifier enables to link experiments to e.g. proposals." + experiment_description(NX_CHAR): + exists: required + start_time(NX_DATE_TIME): + exists: required + unit: NX_TIME + program_name(NX_CHAR): + doc: "Commercial or otherwise defined given name to the program that was used to generate the results file(s) with measured data and metadata." + program_version(NX_CHAR): + doc: "Either version with build number, commit hash, or description of a (online) repository where the source code of the program and build instructions can be found so that the program can be configured in such a way that result files can be created ideally in a deterministic manner." + time_zone(NX_DATE_TIME): + exists: required + doc: "ISO 8601 time_zone offset from UTC." + definition_local(NX_CHAR): + doc: "FAIRmat-specific candidate proposal for an application definition exemplifying ellipsometry." + \@version: + doc: "Ideally version with build number are commit hash of the application definition. If not available a free-text description." + \@url: + doc: "URL where to find further material (documentation, examples) relevant to the application definition" + operator(NXuser): + exists: [min, 1, max, unbounded] + doc: "Contact information of at least the user of the instrument or the principal investigator who performed this experiment. Adding multiple users if relevant is recommended." + name(NX_CHAR): + exists: required + affiliation(NX_CHAR): + exists: recommended + doc: "Name of the affiliation of the user at the point in time when the experiment was performed." + address(NX_CHAR): + exists: recommended + email(NX_CHAR): + exists: required + orcid(NX_CHAR): + exists: recommended + telephone_number(NX_CHAR): + exists: recommended + (NXmonitor): + instrument(NXinstrument): + exists: required + doc: "General properties of the ellipsometry equipment" + model(NX_CHAR): + doc: "The name of the instrument" + company(NX_CHAR): + doc: "Name of the company" + construction_year(NX_DATE_TIME): + unit: NX_TIME + doc: "ISO8601 date when the instrument was constructed" + hardware_version(NX_CHAR): + doc: "The used version of the hardware if available" + software_name(NX_CHAR): + doc: "Name (e.g. commercial) of the software that was used for the measurement" + software_version(NX_CHAR): + doc: "Version and build number or commit hash of the software source code" + bandwidth(NX_NUMBER): + unit: NX_WAVELENGTH + doc: "Specify the bandwidth of the light" + light_source(NX_CHAR): + doc: "Specify the used light source" + focussing_probes(NX_BOOLEAN): + doc: "Were focussing probes (lenses) used or not?" + data_correction(NX_BOOLEAN): + doc: "Were the recorded data corrected by the window effects of the lenses or not?" + angular_spread(NX_NUMBER): + unit: NX_ANGLE + doc: "Specify the angular spread caused by the focussing probes" + ellipsometry_type(NX_CHAR): + doc: "What type of ellipsometry was used? See Fujiwara Table 4.2." + enumeration: [rotating analyzer, rotating analyzer with analyzer compensator, rotating analyzer with polarizer compensator, rotating polarizer, rotating compensator on polarizer side, rotating compensator on analyzer side, modulator on polarizer side, modulator on analyzer side, dual compensator, phase modulation, imaging ellipsometry, null ellipsometry] + calibration(NXprocess): + doc: "ellipsometers require regular calibration to adjust the hardware parameters for proper zero values and background light compensation" + calibration_time(NX_DATE_TIME): + doc: "ISO8601 datum when calibration was last performed before this measurement" + calibration_provided(NX_BOOLEAN): + doc: "Are the measured data provided?" + calibration_data(NXdata): + doc: "Arrays which provide the measured calibration data. Multiple sets are possible, e.g. Psi and delta measured on an e.g. silicon calibration waver, and the straight-through data." + data(NX_CHAR): + doc: "to be defined" + enumeration: [psi/delta, tan(psi)/cos(delta), Jones matrix, Mueller matrix] + angle_of_incidence(NX_NUMBER): + unit: NX_ANGLE + doc: "angle(s) of incidence used during the calibration measurement" + wavelength(NX_NUMBER): + unit: NX_LENGTH + doc: "The wavelength or equivalent values (, which are inter-convertible). The importer should convert all to one unit, and make the others accessible. Historically, energy is used in eV, but for visible spectroscopy wavelength is more common, for IR wave numbers in 1/cm units." + calibration_data(NX_NUMBER): + unit: NX_UNITLESS + doc: "to be defined" + calibration_sample(NX_CHAR): + doc: "Free-text to describe which sample was used for calibration, e.g. silicon wafer with 25 nm thermal oxide layer" + angle_of_incidence(NX_NUMBER): + unit: NX_ANGLE + doc: "the incident angle of the beam vs. the normal of the sample surface" + \@target: + dimensions: + rank: 1 + dim: [[1, N_angles]] + stage(NXstage): + exists: required + doc: "Where and how is the sample mounted" + enumeration: [manual stage, scanning stage, liquid stage, gas cell] + window(NXcollection): + doc: "For environmental measurements, if a window is between the sample and the optics of the ellipsometer, describe its properties." + thickness(NX_NUMBER): + unit: NX_LENGTH + doc: "Thickness of the window" + orientation_angle(NX_NUMBER): + unit: NX_ANGLE + doc: "Angle in the plane of incidence" + calibration_data(NXdata): + doc: "to be defined" + wavelength(NX_NUMBER): + unit: NX_LENGTH + doc: "to be defined" + data array(NX_NUMBER): + unit: NX_UNITLESS + doc: "to be defined" + calibration_sample(NX_CHAR): + doc: "Which sample was used to calibrate the window effect?" + detector(NXdetector): + doc: "Which type of detector was used, and what is known about it? A detector can be a photomultiplier (PMT), a CCD in a camera, an array in a spectrometer. If so, the whole unit goes in here." + detector_type(NX_CHAR): + exists: required + doc: "What kind of detector module is used, e.g. CCD-spectrometer, CCD camera, PMT, photodiode, etc." + duration(NX_NUMBER): + unit: NX_TIME + doc: "Integration time for the measurement. Single number or array if it was varied." + revolution(NX_NUMBER): + unit: NX_ANY + doc: "Define how many rotations of the rotating element were taken into account for one spectra." + rotating_element(NX_CHAR): + doc: "Define which elements rotates" + enumeration: [polarizer (source side), polarizer (detector side), compensator (source side), ccompensator (detector side)] + fixed_revolution(NX_NUMBER): + unit: NX_PER_TIME + doc: "if the revolution does not change during the measurement." + variable revolution(NX_NUMBER): + doc: "Specify maximum and minimum values for the revolution." + dimensions: + rank: 1 + dim: [[1, 2]] + sample(NXsample): + exists: required + atom_types(NX_CHAR): + exists: required + doc: "Use Hill's system for listing elements of the periodic table which are inside or attached to the surface of the specimen and thus relevant from a scientific point. The purpose of this field is to allow materials database to parse the relevant elements without having to interpret the sample history or other fields." + name(NX_CHAR): + exists: required + sample_history(NX_CHAR): + exists: required + doc: "Ideally, a reference to the location or a unique (globally persistent) identifier (e.g.) of e.g. another file which gives as many as possible details of the material, its microstructure, and its thermo-chemo-mechanical processing/preparation history. In the case that such a detailed history of the sample is not available, use this field as a free-text description to specify details of the sample and its preparation." + preparation_date(NX_DATE_TIME): + exists: required + unit: NX_TIME + preparation_time_zone(NX_DATE_TIME): + exists: required + unit: NX_TIME + doc: "ISO 8601 time_zone offset from UTC. The time zone can be different to the time zone of this experiment description because maybe the sample was prepared by one international group and is then measured in a different time zone." + description(NX_CHAR): + doc: "Specimen/sample preparation and previous processing steps is the history which the sample carries when it is mounted in the electron microscope. Therefore, preparation details and other points of this history should be stored in sample_history." + layer structure(NX_CHAR): + doc: "Qualitative description of the layer structure for the sample in cases where a detailed geometrical description is not available or desired/required." + orientation(NX_NUMBER): + unit: NX_ANGLE + doc: "Euler angles of stress relative to sample" + dimensions: + rank: 1 + dim: [[1, 3]] + position(NX_NUMBER): + unit: NX_LENGTH + doc: "Specifiy the position (e.g. in a line scan) with respect to a reference point" + dimensions: + rank: 1 + dim: [[1, 3]] + data_identifier(NX_NUMBER): + doc: "A identifier to correlate data to the experimental conditions, if several were used in this measurement; typically an index of 0 - N" + data_type(NX_CHAR): + exists: required + doc: "to be defined" + enumeration: [psi / delta, tan(psi)/cos(delta), Mueller matrix, Jones matrix, raw data] + number_of_variables(NX_INT): + doc: "specify the number of variables stored, e.g. psi, delta and their errors are 4 (this can be also automated, based on the provided data table)" + wavelength(NX_NUMBER): + unit: NX_LENGTH + doc: "Range, to be further specified" + (NXdata): + doc: "Resulting data from the measurement, described by data type. Minimum two columns, if errors are available twice as many. For a Mueller matrix, it may be nine (1,1 is all 1, the rest is symmetric)." + data(NX_NUMBER): + dimensions: + rank: 5 + dim: [[5, N_time], [4, N_p1], [3, N_angles], [2, N_variables], [1, N_wavelength]] + stage(NX_CHAR): + doc: "A link to the already existing information about sample position." + angle_of_incidence(NX_CHAR): + doc: "The incident angle of the beam vs. the normal of the sample surface." + time_points(NX_NUMBER): + unit: NX_TIME + doc: "An array of relative time points if a time series was recorded" + medium(NX_CHAR): + exists: required + doc: "Describe what was the medium above or around the sample. The common model is built up from substrate to the medium on the other side. Both boundaries are assumed infinite in the model. Here define the name of the material (e.g. water, air, etc.)." + alternative(NX_NUMBER): + unit: NX_UNITLESS + doc: "Array of pairs of complex refractive indices of the medium for every measured wavelength." + dimensions: + rank: 2 + dim: [[1, N_wavelength], [2, 2]] + environment_conditions(NX_CHAR): + doc: "External parameters that have influenced the sample." + number_of_runs(NX_UINT): + doc: "How many measurements were done varying the parameters? This forms an extra dimension beyond incident angle and energy / wavelength." + varied_parameters(NX_CHAR): + doc: "this is to indicate which parameter was changed. Its definition must exist below. The specified variable has to be number_of_runs long, providing the parameters for each data set." + enumeration: [optical excitation, voltage, temperature, pH, stress, stage positions] + length_of_runs(NX_UINT): + unit: NX_DIMENSIONLESS + doc: "Provide the number of parameters used, N_p1" + optical_excitation(NX_BOOLEAN): + doc: "Describe if the spectra where taken under optical excitation" + excitation_source(NX_CHAR): + doc: "Specify the source for the external excitation" + broadening(NX_NUMBER): + unit: NX_LENGTH + doc: "Specify the FWHM of the excitation" + excitation_type(NX_CHAR): + doc: "CW or pulsed excitation" + enumeration: [cw, pulsed] + pulse_length(NX_NUMBER): + unit: NX_TIME + repetition_rate(NX_NUMBER): + unit: NX_FREQUENCY + pulse_energy(NX_NUMBER): + unit: NX_ENERGY + doc: "to be define" + excitation power(NX_NUMBER): + unit: NX_ENERGY + voltage(NX_NUMBER): + unit: NX_VOLTAGE + doc: "If the spectra were taken under bias" + temperature(NX_NUMBER): + unit: nx_temperature + doc: "to be defined" + ph(NX_NUMBER): + unit: NX_UNITLESS + doc: "to be defined, how measured?" + stress(NX_NUMBER): + unit: NX_PRESSURE + doc: "to be defined, only qualitative (atmospheric) pressure or really the applied continuum stress/strain tensor on the sample?" + derived_parameters(NXcollection): + doc: "What parameters are derived from the above data" + depolarization(NX_NUMBER): + unit: NX_UNITLESS + doc: "to be defined" diff --git a/tests/data/yaml2nxdl_test_data/Ref_NXellipsometry_base_draft.nxdl.xml b/tests/data/yaml2nxdl_test_data/Ref_NXellipsometry_base_draft.nxdl.xml new file mode 100644 index 000000000..9a2a92acc --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/Ref_NXellipsometry_base_draft.nxdl.xml @@ -0,0 +1,349 @@ + + + + draft application definition for ellipsometry measurements, including complex systems up to variable angle spectroscopic ellipsometry. + + Variables used throughout the document, e.g. dimensions and important parameters + + + + + + + + + + NeXus convention is to use entry1, entry2, for analysis software to locate each entry. + + to be defined + + Unique identifier of the experiment, such as a (globally persistent) unique identifier. The identifier is usually defined by the facility or principle investigator. The identifier enables to link experiments to e.g. proposals. + + + + + Commercial or otherwise defined given name to the program that was used to generate the results file(s) with measured data and metadata. + + + Either version with build number, commit hash, or description of a (online) repository where the source code of the program and build instructions can be found so that the program can be configured in such a way that result files can be created ideally in a deterministic manner. + + + ISO 8601 time_zone offset from UTC. + + + FAIRmat-specific candidate proposal for an application definition exemplifying ellipsometry. + + Ideally version with build number are commit hash of the application definition. If not available a free-text description. + + + URL where to find further material (documentation, examples) relevant to the application definition + + + + Contact information of at least the user of the instrument or the principal investigator who performed this experiment. Adding multiple users if relevant is recommended. + + + Name of the affiliation of the user at the point in time when the experiment was performed. + + + + + + + + + General properties of the ellipsometry equipment + + The name of the instrument + + + Name of the company + + + ISO8601 date when the instrument was constructed + + + The used version of the hardware if available + + + Name (e.g. commercial) of the software that was used for the measurement + + + Version and build number or commit hash of the software source code + + + Specify the bandwidth of the light + + + Specify the used light source + + + Were focussing probes (lenses) used or not? + + + Were the recorded data corrected by the window effects of the lenses or not? + + + Specify the angular spread caused by the focussing probes + + + What type of ellipsometry was used? See Fujiwara Table 4.2. + + + + + + + + + + + + + + + + + ellipsometers require regular calibration to adjust the hardware parameters for proper zero values and background light compensation + + ISO8601 datum when calibration was last performed before this measurement + + + Are the measured data provided? + + + Arrays which provide the measured calibration data. Multiple sets are possible, e.g. Psi and delta measured on an e.g. silicon calibration waver, and the straight-through data. + + to be defined + + + + + + + + + angle(s) of incidence used during the calibration measurement + + + The wavelength or equivalent values (, which are inter-convertible). The importer should convert all to one unit, and make the others accessible. Historically, energy is used in eV, but for visible spectroscopy wavelength is more common, for IR wave numbers in 1/cm units. + + + to be defined + + + Free-text to describe which sample was used for calibration, e.g. silicon wafer with 25 nm thermal oxide layer + + + + the incident angle of the beam vs. the normal of the sample surface + + + + + + + + Where and how is the sample mounted + + + + + + + + + For environmental measurements, if a window is between the sample and the optics of the ellipsometer, describe its properties. + + Thickness of the window + + + Angle in the plane of incidence + + + to be defined + + + to be defined + + + to be defined + + + Which sample was used to calibrate the window effect? + + + + Which type of detector was used, and what is known about it? A detector can be a photomultiplier (PMT), a CCD in a camera, an array in a spectrometer. If so, the whole unit goes in here. + + What kind of detector module is used, e.g. CCD-spectrometer, CCD camera, PMT, photodiode, etc. + + + Integration time for the measurement. Single number or array if it was varied. + + + Define how many rotations of the rotating element were taken into account for one spectra. + + + Define which elements rotates + + + + + + + + + if the revolution does not change during the measurement. + + + Specify maximum and minimum values for the revolution. + + + + + + + + + Use Hill's system for listing elements of the periodic table which are inside or attached to the surface of the specimen and thus relevant from a scientific point. The purpose of this field is to allow materials database to parse the relevant elements without having to interpret the sample history or other fields. + + + + Ideally, a reference to the location or a unique (globally persistent) identifier (e.g.) of e.g. another file which gives as many as possible details of the material, its microstructure, and its thermo-chemo-mechanical processing/preparation history. In the case that such a detailed history of the sample is not available, use this field as a free-text description to specify details of the sample and its preparation. + + + + ISO 8601 time_zone offset from UTC. The time zone can be different to the time zone of this experiment description because maybe the sample was prepared by one international group and is then measured in a different time zone. + + + Specimen/sample preparation and previous processing steps is the history which the sample carries when it is mounted in the electron microscope. Therefore, preparation details and other points of this history should be stored in sample_history. + + + Qualitative description of the layer structure for the sample in cases where a detailed geometrical description is not available or desired/required. + + + Euler angles of stress relative to sample + + + + + + Specifiy the position (e.g. in a line scan) with respect to a reference point + + + + + + A identifier to correlate data to the experimental conditions, if several were used in this measurement; typically an index of 0 - N + + + to be defined + + + + + + + + + + specify the number of variables stored, e.g. psi, delta and their errors are 4 (this can be also automated, based on the provided data table) + + + Range, to be further specified + + + Resulting data from the measurement, described by data type. Minimum two columns, if errors are available twice as many. For a Mueller matrix, it may be nine (1,1 is all 1, the rest is symmetric). + + + + + + + + + + + + A link to the already existing information about sample position. + + + The incident angle of the beam vs. the normal of the sample surface. + + + An array of relative time points if a time series was recorded + + + Describe what was the medium above or around the sample. The common model is built up from substrate to the medium on the other side. Both boundaries are assumed infinite in the model. Here define the name of the material (e.g. water, air, etc.). + + + Array of pairs of complex refractive indices of the medium for every measured wavelength. + + + + + + + External parameters that have influenced the sample. + + + How many measurements were done varying the parameters? This forms an extra dimension beyond incident angle and energy / wavelength. + + + this is to indicate which parameter was changed. Its definition must exist below. The specified variable has to be number_of_runs long, providing the parameters for each data set. + + + + + + + + + + + Provide the number of parameters used, N_p1 + + + Describe if the spectra where taken under optical excitation + + + Specify the source for the external excitation + + + Specify the FWHM of the excitation + + + CW or pulsed excitation + + + + + + + + + to be define + + + + If the spectra were taken under bias + + + to be defined + + + to be defined, how measured? + + + to be defined, only qualitative (atmospheric) pressure or really the applied continuum stress/strain tensor on the sample? + + + What parameters are derived from the above data + + to be defined + + + + + diff --git a/tests/data/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml b/tests/data/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml new file mode 100644 index 000000000..9894682c2 --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml @@ -0,0 +1,26 @@ + + + + Test case for verifying handling of symbols inside a nexus class in nested layers of the hierarchy + + teststring + + + + + + + + teststring + + + + + + another nest + + + + + + diff --git a/tests/data/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml b/tests/data/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml new file mode 100644 index 000000000..cf488d73a --- /dev/null +++ b/tests/data/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml @@ -0,0 +1,9 @@ + + + + Test case for verifying that the parser can handle links correctly. + + + + + diff --git a/tests/test_nexus.py b/tests/test_nexus.py index 3c02c7cc0..70945d4b2 100644 --- a/tests/test_nexus.py +++ b/tests/test_nexus.py @@ -1,3 +1,6 @@ +"""This is a code that performs several tests on nexus tool + +""" # # Copyright The NOMAD Authors. # @@ -20,30 +23,34 @@ import pytest from nomad.metainfo import Definition, MSection, Section -from nexusparser.metainfo import nexus from nomad.datamodel import EntryArchive +from nexusparser.metainfo import nexus +from nexusparser import tools @pytest.mark.parametrize('path,value', [ - pytest.param('base_classes.name', 'nexus_base_classes'), - pytest.param('base_classes.NXobject.name', 'NXobject'), - pytest.param('base_classes.NXentry.nx_kind', 'group'), - pytest.param('base_classes.NXentry.defaultAttribute.nx_value.type', str), - pytest.param('base_classes.NXentry.nx_attribute_default', '*'), - pytest.param('base_classes.NXentry.NXdataGroup', '*'), - pytest.param('base_classes.NXdetector.real_timeField', '*'), - pytest.param('base_classes.NXentry.NXdataGroup.nx_optional', True), - pytest.param('base_classes.NXentry.nx_group_DATA.section_def.nx_kind', 'group'), - pytest.param('base_classes.NXentry.nx_group_DATA.section_def.nx_optional', True), - pytest.param('base_classes.NXentry.nx_group_DATA.section_def.nx_name.type', str), - pytest.param('base_classes.NXdetector.real_timeField.name', 'real_timeField'), - pytest.param('base_classes.NXdetector.real_timeField.nx_type', 'NX_NUMBER'), - pytest.param('base_classes.NXdetector.real_timeField.nx_units', 'NX_TIME'), - pytest.param('base_classes.NXdetector.real_timeField.nx_unit', '*'), - pytest.param('base_classes.NXdetector.real_timeField.nx_value', '*'), - pytest.param('applications.NXarpes.NXentryGroup.NXdataGroup.nx_optional', False) + pytest.param('BASE_CLASSES.name', 'nexus_base_classes'), + pytest.param('BASE_CLASSES.NXobject.name', 'NXobject'), + pytest.param('BASE_CLASSES.NXentry.nx_kind', 'group'), + pytest.param('BASE_CLASSES.NXentry.defaultAttribute.nx_value.type', str), + pytest.param('BASE_CLASSES.NXentry.nx_attribute_default', '*'), + pytest.param('BASE_CLASSES.NXentry.NXdataGroup', '*'), + pytest.param('BASE_CLASSES.NXdetector.real_timeField', '*'), + pytest.param('BASE_CLASSES.NXentry.NXdataGroup.nx_optional', True), + pytest.param('BASE_CLASSES.NXentry.nx_group_DATA.section_def.nx_kind', 'group'), + pytest.param('BASE_CLASSES.NXentry.nx_group_DATA.section_def.nx_optional', True), + pytest.param('BASE_CLASSES.NXentry.nx_group_DATA.section_def.nx_name.type', str), + pytest.param('BASE_CLASSES.NXdetector.real_timeField.name', 'real_timeField'), + pytest.param('BASE_CLASSES.NXdetector.real_timeField.nx_type', 'NX_NUMBER'), + pytest.param('BASE_CLASSES.NXdetector.real_timeField.nx_units', 'NX_TIME'), + pytest.param('BASE_CLASSES.NXdetector.real_timeField.nx_unit', '*'), + pytest.param('BASE_CLASSES.NXdetector.real_timeField.nx_value', '*'), + pytest.param('APPLICATIONS.NXarpes.NXentryGroup.NXdataGroup.nx_optional', False) ]) def test_assert_nexus_metainfo(path: str, value: Any): + """Test the existance of nexus metainfo + +""" segments = path.split('.') package, definition_names = segments[0], segments[1:] @@ -60,7 +67,7 @@ def test_assert_nexus_metainfo(path: str, value: Any): if current is None: assert False, f'{path} does not exist' - if value is '*': + if value == '*': assert current is not None, f'{path} does not exist' elif value is None: assert current is None, f'{path} does exist' @@ -74,28 +81,35 @@ def test_assert_nexus_metainfo(path: str, value: Any): def test_use_nexus_metainfo(): + """Test on use of Nexus metainfo + +""" # pylint: disable=no-member archive = EntryArchive() archive.nexus = nexus.Nexus() archive.nexus.nx_application_arpes = nexus.NXarpes() archive.nexus.nx_application_arpes.m_create(nexus.NXarpes.NXentryGroup) - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title = nexus.NXarpes.NXentryGroup.titleField() + archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title = \ + nexus.NXarpes.NXentryGroup.titleField() archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title.nx_value = 'my title' - # Entry/default is not overwritten in NXarpes. Therefore technically, there is no attribute section + # Entry/default is not overwritten in NXarpes. Therefore technically, + # there is no attribute section # nexus.NXarpes.NXentryGroup.DefaultAttribute. We artifically extented inheritence to # include inner section/classes. So both options work: - # archive.nexus.nx_application_arpes.nx_group_ENTRY.nx_attribute_default = nexus.NXentry.DefaultAttribute() - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default = nexus.NXarpes.NXentryGroup.defaultAttribute() - archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default.nx_value = 'my default' + # archive.nexus.nx_application_arpes.nx_group_ENTRY.nx_attribute_default = + # nexus.NXentry.DefaultAttribute() + archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default = \ + nexus.NXarpes.NXentryGroup.defaultAttribute() + archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default.nx_value = \ + 'my default' # pylint: enable=no-member archive = EntryArchive.m_from_dict(archive.m_to_dict()) - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default.nx_value == 'my default' - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title.nx_value == 'my title' - - # TODO remove - # print(json.dumps(archive.m_to_dict(), indent=2)) + assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_attribute_default.nx_value == \ + 'my default' + assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_field_title.nx_value == \ + 'my title' @pytest.mark.parametrize('path', [ @@ -103,6 +117,9 @@ def test_use_nexus_metainfo(): pytest.param('NXarpes:app/NXentry:group/default:attribute/my default:value', id='attribute') ]) def test_use_nexus_metainfo_reflectivly(path): + """Test of the use of nexus metainfo reflectivly + +""" archive = EntryArchive() archive.nexus = nexus.Nexus() # pylint: disable=no-member parent_object: MSection = archive.nexus @@ -113,20 +130,28 @@ def test_use_nexus_metainfo_reflectivly(path): name_or_value, kind = segment.split(':') if kind in ['app', 'group', 'field', 'attribute']: if kind == 'app': - section_definition = nexus.applications.all_definitions[name_or_value] - sub_section_definition = parent_definition.all_sub_sections[name_or_value.replace('NX', 'nx_application_')] + section_definition = nexus.APPLICATIONS.all_definitions[name_or_value] + sub_section_definition = \ + parent_definition.all_sub_sections[name_or_value.replace('NX', '\ +nx_application_')] if kind == 'group': - section_definition = parent_definition.all_inner_section_definitions[f'{name_or_value}Group'] - sub_section_definition = parent_definition.all_sub_sections[f'nx_group_{name_or_value.replace("NX", "").upper()}'] + section_definition = \ + parent_definition.all_inner_section_definitions[f'{name_or_value}Group'] + sub_section_definition = \ + parent_definition.all_sub_sections[f'nx_group_{name_or_value.replace("NX", "").upper()}'] if kind == 'field': - section_definition = parent_definition.all_inner_section_definitions[f'{name_or_value}Field'] - sub_section_definition = parent_definition.all_sub_sections[f'nx_field_{name_or_value}'] + section_definition = \ + parent_definition.all_inner_section_definitions[f'{name_or_value}Field'] + sub_section_definition = \ + parent_definition.all_sub_sections[f'nx_field_{name_or_value}'] if kind == 'attribute': - section_definition = parent_definition.all_inner_section_definitions[f'{name_or_value}Attribute'] - sub_section_definition = parent_definition.all_sub_sections[f'nx_attribute_{name_or_value}'] + section_definition = \ + parent_definition.all_inner_section_definitions[f'{name_or_value}Attribute'] + sub_section_definition = \ + parent_definition.all_sub_sections[f'nx_attribute_{name_or_value}'] new_object = section_definition.section_cls() parent_object.m_add_sub_section(sub_section_definition, new_object) @@ -139,3 +164,25 @@ def test_use_nexus_metainfo_reflectivly(path): parent_object = new_object parent_definition = section_definition + + +def test_get_nexus_classes_units_attributes(): + """Check the correct parsing of a separate list for: +Nexus classes (base_classes) +Nexus units (memberTypes) +Nexus attribute type (primitiveTypes) +the tested functions can be found in nexus.py file +""" + + # Test 1 + nexus_classes_list = tools.nexus.get_nx_classes() + + assert 'NXbeam' in nexus_classes_list + + # Test 2 + nexus_units_list = tools.nexus.get_nx_units() + assert 'NX_TEMPERATURE' in nexus_units_list + + # Test 3 + nexus_attribute_list = tools.nexus.get_nx_attribute_type() + assert 'NX_FLOAT' in nexus_attribute_list diff --git a/tests/test_parser.py b/tests/test_parser.py index c5a643098..b40fffdad 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -1,3 +1,6 @@ +"""Test scripts for parser.py tool + +""" # # Copyright The NOMAD Authors. # @@ -16,78 +19,85 @@ # limitations under the License. # +import sys import os -import pytest import logging +from datetime import datetime +from pathlib import Path +import pytest from nomad.datamodel import EntryArchive - -import sys +from nexusparser.tools import nexus # noqa: E402 +from nexusparser import NexusParser # noqa: E402 sys.path.insert(0, '.') sys.path.insert(0, '..') sys.path.insert(0, '../..') -from nexusparser.tools import read_nexus # noqa: E402 -from nexusparser import NexusParser # noqa: E402 @pytest.fixture def parser(): + """Helper function to launch NexusParser class + +""" return NexusParser() -def test_read_nexus(): - localDir = os.path.abspath(os.path.dirname(__file__)) - example_data = os.path.join(localDir, 'data/nexus_test_data/201805_WSe2_arpes.nxs') +def test_nexus(tmp_path): + """The nexus test function + +""" + local_dir = os.path.abspath(os.path.dirname(__file__)) + example_data = os.path.join(local_dir, 'data/nexus_test_data/201805_WSe2_arpes.nxs') logger = logging.getLogger() logger.setLevel(logging.DEBUG) - handler = logging.FileHandler(os.path.join(localDir, 'data/read_nexus_test.log'), 'w') + handler = logging.\ + FileHandler(os.path.join(tmp_path, 'nexus_test.log'), 'w') handler.setLevel(logging.DEBUG) formatter = logging.Formatter('%(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) - nexus_helper = read_nexus.HandleNexus(logger, [example_data]) + nexus_helper = nexus.HandleNexus(logger, [example_data]) nexus_helper.process_nexus_master_file(None) # check logging result - with open(os.path.join(localDir, 'data/read_nexus_test.log'), "r") as file: - number_of_lines = len(file.readlines()) - file.seek(0) - sum_char_values = sum(map(ord, file.read())) - assert number_of_lines == 1653 - assert sum_char_values == 4419958 - print('Testing of read_nexus.py is SUCCESSFUL.') - + # with open(os.path.join(local_dir, 'data/nexus_test.log'), "r") as file: + # number_of_lines = len(file.readlines()) + # file.seek(0) + # sum_char_values = sum(map(ord, file.read())) + # assert number_of_lines == 1653 + # assert sum_char_values == 4419958 + with open(os.path.join(tmp_path, 'nexus_test.log'), 'r') as logfile: + log = logfile.readlines() + with open(os.path.join(local_dir, 'data/nexus_test_data/Ref_nexus_test.log'), 'r') as reffile: + ref = reffile.readlines() + assert log == ref + print('Testing of nexus.py is SUCCESSFUL.') -@pytest.mark.skip(reason="not to test it alone") -def testing_nxdl_to_attr_obj_1(example_path, result_str): - result = read_nexus.nxdl_to_attr_obj(example_path) - assert result.attrib['type'] == result_str, "failed on: " + example_path + "expected type: " + result_str +# TODO Write a test for tools.nexus.get_node_at_nxdl_path - Sherjeel -def test_nxdl_to_attr_obj(): - testing_nxdl_to_attr_obj_1('NXsqom:/ENTRY/instrument/SOURCE', "NXsource") - testing_nxdl_to_attr_obj_1('NXspe:/ENTRY/NXSPE_info', "NXcollection") - # test_nxdl_to_attr_obj_1('NXem_base_draft.yml:/ENTRY/SUBENTRY/thumbnail/mime_type', "") - -def test_example(parser): +def test_example(): archive = EntryArchive() - localDir = os.path.abspath(os.path.dirname(__file__)) - example_data = os.path.join(localDir, 'data/nexus_test_data/201805_WSe2_arpes.nxs') - parser.parse(example_data, archive, logging.getLogger()) - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.nx_unit == "millibar" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.m_def.nx_units == "NX_PRESSURE" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_MONOCHROMATOR[0].nx_field_energy.nx_value == 36.49699020385742 - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].nx_group_MONOCHROMATOR[0].nx_field_energy.nx_name == 'energy' - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_name == "angles" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[1].nx_name == "delays" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[2].nx_name == "energies" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_unit == "1/Å" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[1].nx_unit == "fs" - assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[2].nx_unit == "eV" - - -if __name__ == '__main__': - # test_read_nexus() - # test_nxdl_to_attr_obj() - p = parser() - test_example(p) + local_dir = os.path.abspath(os.path.dirname(__file__)) + example_data = os.path.join(local_dir, 'data/nexus_test_data/201805_WSe2_arpes.nxs') + parser().parse(example_data, archive, logging.getLogger()) + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.nx_unit == "millibar" + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_SAMPLE[0].nx_field_pressure.m_def.nx_units == "NX_PRESSURE" + assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].\ + nx_group_MONOCHROMATOR[0].nx_field_energy.nx_value == 36.49699020385742 + assert archive.nexus.nx_application_arpes.nx_group_ENTRY[0].nx_group_INSTRUMENT[0].\ + nx_group_MONOCHROMATOR[0].nx_field_energy.nx_name == 'energy' + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_name == "angles" + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[1].nx_name == "delays" + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[2].nx_name == "energies" + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[0].nx_unit == "1/Å" + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[1].nx_unit == "fs" + assert archive.nexus.nx_application_arpes.\ + nx_group_ENTRY[0].nx_group_DATA[0].nx_field_VARIABLE[2].nx_unit == "eV" diff --git a/tests/test_yml2nxdl.py b/tests/test_yml2nxdl.py new file mode 100755 index 000000000..f157f740d --- /dev/null +++ b/tests/test_yml2nxdl.py @@ -0,0 +1,221 @@ +#!/usr/bin/env python3 +"""This tool accomplishes some tests for the yaml2nxdl parser + +""" +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import os +import sys +from datetime import datetime +from pathlib import Path +import xml.etree.ElementTree as ET +import pytest +from click.testing import CliRunner +import nexusparser.tools.yaml2nxdl.yaml2nxdl as yml2nxdl +import nexusparser.tools.yaml2nxdl.nxdl2yaml as nxdl2yaml +from nexusparser.tools.yaml2nxdl import yaml2nxdl_read_yml_file as read + +sys.path.insert(0, '../nexusparser/tools') +sys.path.insert(0, '../nexusparser/tools/yaml2nxdl') + +LOCALDIR = os.path.abspath(os.path.dirname(__file__)) + + +def delete_duplicates(list_of_matching_string): + """Delete duplicate from lists + +""" + return list(dict.fromkeys(list_of_matching_string)) + + +def check_file_fresh_baked(test_file): + """Get sure that the test file is generated by the converter + +""" + path = Path(test_file) + timestamp = datetime.fromtimestamp(path.stat().st_mtime).strftime("%d/%m/%Y %H:%M") + now = datetime.now().strftime("%d/%m/%Y %H:%M") + assert timestamp == now, 'xml file not generated' + + +def find_matches(xml_file, desired_matches): + """Read xml file and find desired matches. +Return a list of two lists in the form: +[[matching_line],[matching_line_index]] + +""" + with open(xml_file, 'r') as file: + xml_reference = file.readlines() + lines = [] + lines_index = [] + found_matches = [] + for i, line in enumerate(xml_reference): + for desired_match in desired_matches: + if str(desired_match) in str(line): + lines.append(line) + lines_index.append(i) + found_matches.append(desired_match) + # ascertain that all the desired matches were found in file + found_matches_clean = delete_duplicates(found_matches) + assert len(found_matches_clean) == len(desired_matches), 'some desired_matches were \ +not found in file' + return [lines, lines_index] + + +def compare_matches(ref_xml_file, test_yml_file, test_xml_file, desired_matches): + """Check if a new xml file is generated +and if test xml file is equal to reference xml file + +""" + # Reference file is read + ref_matches = find_matches(ref_xml_file, desired_matches) + # Test file is generated + result = CliRunner().invoke(yml2nxdl.yaml2nxdl, ['--input-file', test_yml_file]) + assert result.exit_code == 0 + check_file_fresh_baked(test_xml_file) + # Test file is read + test_matches = find_matches(test_xml_file, desired_matches) + assert test_matches == ref_matches + + +@pytest.fixture +def test_links(): + """First test: check the correct parsing of links + +""" + ref_xml_link_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXtest_links.nxdl.xml') + test_yml_link_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/NXtest_links.yml') + test_xml_link_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/NXtest_links.nxdl.xml') + desired_matches = [''] + compare_matches( + ref_xml_link_file, + test_yml_link_file, + test_xml_link_file, + desired_matches) + sys.stdout.write('Test on links okay.\n') + + +@pytest.fixture +def test_symbols(): + """Second test: check the correct parsing of symbols + +""" + ref_xml_symbol_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXnested_symbols.nxdl.xml') + test_yml_symbol_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/NXnested_symbols.yml') + test_xml_symbol_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/NXnested_symbols.nxdl.xml') + desired_matches = ['', '', '', '', ''] + compare_matches( + ref_xml_attribute_file, + test_yml_attribute_file, + test_xml_attribute_file, + desired_matches) + sys.stdout.write('Test on attributes okay.\n') + + +@pytest.fixture +def test_xml_parsing(): + """In this test an xml file in converted to yml and then back to xml. +The xml trees of the two files are then compared. + + """ + ref_xml_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXellipsometry_base_draft.nxdl.xml') + test_yml_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXellipsometry_base_draft_parsed.yml') + test_xml_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXellipsometry_base_draft_parsed.nxdl.xml') + result = CliRunner().invoke(nxdl2yaml.launch_nxdl2yml, ['--input-file', ref_xml_file]) + assert result.exit_code == 0 + check_file_fresh_baked(test_yml_file) + result = CliRunner().invoke(yml2nxdl.yaml2nxdl, ['--input-file', test_yml_file]) + assert result.exit_code == 0 + check_file_fresh_baked(test_xml_file) + + test_tree = ET.parse(test_xml_file) + test_tree_flattened = [i.tag.split("}", 1)[1] for i in test_tree.iter()] + + ref_tree = ET.parse(ref_xml_file) + ref_tree_flattened = [i.tag.split("}", 1)[1] for i in ref_tree.iter()] + + assert set(test_tree_flattened) == set(ref_tree_flattened), 'Ref XML and parsed XML\ +has not the same tree structure!!' + sys.stdout.write('Test on xml -> yml -> xml okay.\n') + + +@pytest.fixture +def test_yml_parsing(): + """In this test an xml file in converted to yml and then back to xml. +The xml trees of the two files are then compared. + + """ + ref_yml_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXellipsometry.yml') + test_xml_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXellipsometry.nxdl.xml') + test_yml_file = os.path.join( + LOCALDIR, 'data/yaml2nxdl_test_data/Ref_NXellipsometry_parsed.yml') + result = CliRunner().invoke(yml2nxdl.yaml2nxdl, ['--input-file', ref_yml_file]) + assert result.exit_code == 0 + check_file_fresh_baked(test_xml_file) + result = CliRunner().invoke(nxdl2yaml.launch_nxdl2yml, ['--input-file', test_xml_file]) + assert result.exit_code == 0 + check_file_fresh_baked(test_yml_file) + + test_yml_tree = read.yml_reader(test_yml_file) + + ref_yml_tree = read.yml_reader(ref_yml_file) + + assert list(test_yml_tree) == list(ref_yml_tree), 'Ref YML and parsed YML \ +has not the same root entries!!' + sys.stdout.write('Test on yml -> xml -> yml okay.\n') + + +if __name__ == '__main__': + test_links() + test_symbols() + test_attributes() + test_xml_parsing() + test_yml_parsing() diff --git a/tests/tools/dataconverter/__init__.py b/tests/tools/dataconverter/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/tools/dataconverter/test_convert.py b/tests/tools/dataconverter/test_convert.py new file mode 100644 index 000000000..1e8b2471a --- /dev/null +++ b/tests/tools/dataconverter/test_convert.py @@ -0,0 +1,65 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""Test cases for the convert script used to access the DataConverter.""" + +import os +from click.testing import CliRunner +import pytest + +import nexusparser.tools.dataconverter.convert as dataconverter +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader + + +NX_TEST = os.path.join("tests", "data", "tools", "dataconverter", "NXtest.nxdl.xml") + + +def test_get_reader(): + """Unit test for the helper function to get a reader.""" + assert isinstance(dataconverter.get_reader("example")(), BaseReader) + + +def test_get_names_of_all_readers(): + """Unit test for the helper function to get all readers.""" + assert "example" in dataconverter.get_names_of_all_readers() + + +@pytest.mark.parametrize("cli_inputs", [ + pytest.param([ + "--nxdl", + NX_TEST, + "--generate-template" + ], id="generate-template"), + pytest.param([], id="nxdl-not-provided"), + pytest.param([ + "--nxdl", + NX_TEST, + "--input-file", + "test_input" + ], id="input-file") +]) +def test_cli(caplog, cli_inputs): + """A test for the convert CLI.""" + runner = CliRunner() + result = runner.invoke(dataconverter.convert, cli_inputs) + if "--generate-template" in cli_inputs: + assert result.exit_code == 0 + assert "\"/ENTRY[entry]/NXODD_name/int_value\": \"None\"," in caplog.text + elif "--input-file" in cli_inputs: + assert "test_input" in caplog.text + elif result.exit_code == 2: + assert "Error: Missing option '--nxdl'" in result.output diff --git a/tests/tools/dataconverter/test_helpers.py b/tests/tools/dataconverter/test_helpers.py new file mode 100644 index 000000000..385134f38 --- /dev/null +++ b/tests/tools/dataconverter/test_helpers.py @@ -0,0 +1,210 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""Test cases for the helper functions used by the DataConverter.""" + +import xml.etree.ElementTree as ET +import os +import pytest +import numpy as np + +import nexusparser.tools.dataconverter.helpers as helpers + + +def alter_dict(data_dict: dict, key: str, value: object): + """Helper function to alter a single entry in dict for parametrize.""" + if data_dict is not None: + internal_dict = dict(data_dict) + internal_dict[key] = value + return internal_dict + + return None + + +@pytest.fixture(name="nxdl_root") +def fixture_nxdl_root(): + """pytest fixtrue to load the same NXDL file for all tests.""" + nxdl_file = os.path.join("tests", "data", "tools", "dataconverter", "NXtest.nxdl.xml") + yield ET.parse(nxdl_file).getroot() + + +@pytest.fixture(name="template") +def fixture_template(): + """pytest fixture to use the same template in all tests""" + yield { + "/ENTRY[entry]/NXODD_name/bool_value": None, + "/ENTRY[entry]/NXODD_name/char_value": None, + "/ENTRY[entry]/NXODD_name/float_value": None, + "/ENTRY[entry]/NXODD_name/float_value/@units": None, + "/ENTRY[entry]/NXODD_name/int_value": None, + "/ENTRY[entry]/NXODD_name/int_value/@units": None, + "/ENTRY[entry]/NXODD_name/posint_value": None, + "/ENTRY[entry]/NXODD_name/posint_value/@units": None, + "/ENTRY[entry]/NXODD_name/type": None, + "/ENTRY[entry]/definition": None, + "/ENTRY[entry]/definition/@version": None, + "/ENTRY[entry]/program_name": None, + "/ENTRY[entry]/NXODD_name/date_value": None, + "/ENTRY[entry]/optional_parent/required_child": None, + "/ENTRY[entry]/optional_parent/optional_child": None, + } + + +VALID_DATA_DICT = { + "/ENTRY[my_entry]/NXODD_name/float_value": 2.0, + "/ENTRY[my_entry]/NXODD_name/float_value/@units": "nm", + "/ENTRY[my_entry]/NXODD_name/bool_value": True, + "/ENTRY[my_entry]/NXODD_name/int_value": 2, + "/ENTRY[my_entry]/NXODD_name/int_value/@units": "eV", + "/ENTRY[my_entry]/NXODD_name/posint_value": np.array([1, 2, 3], dtype=np.int8), + "/ENTRY[my_entry]/NXODD_name/posint_value/@units": "kg", + "/ENTRY[my_entry]/NXODD_name/char_value": "just chars", + "/ENTRY[my_entry]/definition": "NXtest", + "/ENTRY[my_entry]/definition/@version": "2.4.6", + "/ENTRY[my_entry]/program_name": "Testing program", + "/ENTRY[my_entry]/NXODD_name/type": "2nd type", + "/ENTRY[my_entry]/NXODD_name/date_value": "2022-01-22T12:14:12.05018+00:00", + "/ENTRY[my_entry]/optional_parent/required_child": 1, + "/ENTRY[my_entry]/optional_parent/optional_child": 1 +} + + +@pytest.mark.parametrize("data_dict,error_message", [ + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/int_value", "1"), + ("The value at /ENTRY[my_entry]/NXODD_name/in" + "t_value should be of Python type: (, , )," + " as defined in the NXDL as NX_INT."), + id="string-instead-of-int"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/bool_value", "True"), + ("The value at /ENTRY[my_entry]/NXODD_name/bool_value sh" + "ould be of Python type: (, , ), as defined in the NXDL as NX_BOOLEAN."), + id="string-instead-of-bool"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/posint_value", -1), + ("The value at /ENTRY[my_entry]/NXODD_name/posint_value " + "should be a positive int."), + id="negative-posint"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/char_value", 3), + ("The value at /ENTRY[my_entry]/NXODD_name/char_value should be of Python type:" + " (, , )," + " as defined in the NXDL as NX_CHAR."), + id="int-instead-of-chars"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/float_value", None), + "", + id="empty-optional-field"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/bool_value", None), + ("The data entry, /ENTRY[my_entry]/NXODD_name/bool_value, is required and " + "hasn't been supplied by the reader."), + id="empty-required-field"), + pytest.param( + alter_dict(VALID_DATA_DICT, + "/ENTRY[my_entry]/NXODD_name/date_value", + "2022-01-22T12:14:12.05018+00:00"), + "", + id="UTC-with-+00:00"), + pytest.param( + alter_dict(VALID_DATA_DICT, + "/ENTRY[my_entry]/NXODD_name/date_value", + "2022-01-22T12:14:12.05018Z"), + "", + id="UTC-with-Z"), + pytest.param( + alter_dict(VALID_DATA_DICT, + "/ENTRY[my_entry]/NXODD_name/date_value", + "2022-01-22T12:14:12.05018-00:00"), + "The date at /ENTRY[my_entry]/NXODD_name/date_value should be a timezone aware" + " ISO8601 formatted str. For example, 2022-01-22T12:14:12.05018Z or 2022-01-22" + "T12:14:12.05018+00:00.", + id="UTC-with--00:00"), + pytest.param( + { + "/ENTRY[my_entry]/NXODD_name/float_value": [2.0], + "/ENTRY[my_entry]/NXODD_name/float_value/@units": "nm", + "/ENTRY[my_entry]/NXODD_name/bool_value": [True], + "/ENTRY[my_entry]/NXODD_name/int_value": [np.zeros(3), np.zeros(5)], + "/ENTRY[my_entry]/NXODD_name/int_value/@units": "eV", + "/ENTRY[my_entry]/NXODD_name/posint_value": [1, 2, 3], + "/ENTRY[my_entry]/NXODD_name/posint_value/@units": "kg", + "/ENTRY[my_entry]/NXODD_name/char_value": ["just chars"], + "/ENTRY[my_entry]/definition": "NXtest", + "/ENTRY[my_entry]/definition/@version": ["2.4.6"], + "/ENTRY[my_entry]/program_name": ["Testing program"], + "/ENTRY[my_entry]/NXODD_name/type": "2nd type", + "/ENTRY[my_entry]/NXODD_name/date_value": "2022-01-22T12:14:12.05018+00:00", + "/ENTRY[my_entry]/optional_parent/required_child": [1], + "/ENTRY[my_entry]/optional_parent/optional_child": [1] + }, "", + id="lists"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/NXODD_name/type", "Wrong option"), + ("The value at /ENTRY[my_entry]/NXODD_name/type should be one of the following" + " strings: [1st type,2nd type,3rd type,4th type]"), + id="wrong-enum-choice"), + pytest.param( + alter_dict(VALID_DATA_DICT, "/ENTRY[my_entry]/optional_parent/required_child", None), + ("The data entry, /ENTRY[my_entry]/optional_parent/required_child, is required " + "and hasn't been supplied by the reader."), + id="atleast-one-required-child-not-provided-optional-parent"), + pytest.param( + alter_dict(alter_dict(VALID_DATA_DICT, + "/ENTRY[my_entry]/optional_parent/required_child", + None), + "/ENTRY[my_entry]/optional_parent/optional_child", + None), + (""), + id="no-child-provided-optional-parent"), + pytest.param( + VALID_DATA_DICT, + "", + id="valid-data-dict"), +]) +def test_validate_data_dict(data_dict, error_message, template, nxdl_root, request): + """Unit test for the data validation routine""" + if request.node.callspec.id in ("valid-data-dict", + "lists", + "empty-optional-field", + "UTC-with-+00:00", + "UTC-with-Z", + "no-child-provided-optional-parent"): + helpers.validate_data_dict(template, data_dict, nxdl_root) + else: + with pytest.raises(Exception) as execinfo: + helpers.validate_data_dict(template, data_dict, nxdl_root) + + assert (error_message) == str(execinfo.value) + + +@pytest.mark.parametrize("nxdl_path,expected", [ + pytest.param( + "/ENTRY/definition/@version", + (True, "/ENTRY[entry]/definition/@version"), + id="path-exists-in-dict"), + pytest.param( + "/RANDOM/does/not/@exist", + (False, ""), + id="path-does-not-exist-in-dict") +]) +def test_path_in_data_dict(nxdl_path, expected, template): + """Unit test for helper function to check if an NXDL path exists in the reader dictionary.""" + assert helpers.path_in_data_dict(nxdl_path, template) == expected diff --git a/tests/tools/dataconverter/test_readers.py b/tests/tools/dataconverter/test_readers.py new file mode 100644 index 000000000..31cc46c58 --- /dev/null +++ b/tests/tools/dataconverter/test_readers.py @@ -0,0 +1,96 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""Test cases for readers used for the DataConverter""" + +import glob +import os +from typing import List +import xml.etree.ElementTree as ET + +import pytest + +from nexusparser.tools.dataconverter.readers.base.reader import BaseReader +from nexusparser.tools.dataconverter.convert import \ + generate_template_from_nxdl, get_names_of_all_readers, get_reader +from nexusparser.tools.dataconverter.helpers import validate_data_dict + + +def get_reader_name_from_reader_object(reader) -> str: + """Helper function to find the name of a reader given the reader object.""" + for reader_name in get_names_of_all_readers(): + gotten_reader = get_reader(reader_name) + if reader.__name__ is gotten_reader.__name__: + return reader_name + return "" + + +def get_readers_file_names() -> List[str]: + """Helper function to parametrize paths of all the reader Python files""" + return glob.glob("nexusparser/tools/dataconverter/readers/*/reader.py") + + +def get_all_readers() -> List[BaseReader]: + """Scans through the reader list and returns them for pytest parametrization""" + readers = [] + + # Explicitly removing ApmReader and EmNionReader because we need to add test data + for reader in [get_reader(x) for x in get_names_of_all_readers()]: + if reader.__name__ in ("ApmReader", "EmNionReader"): + readers.append(pytest.param(reader, + marks=pytest.mark.skip(reason="Missing test data.") + )) + else: + readers.append(reader) + + return readers + + +@pytest.mark.parametrize("reader", get_all_readers()) +def test_if_readers_are_children_of_base_reader(reader): + """Test to verify that all readers are children of BaseReader""" + if reader.__name__ != "BaseReader": + assert isinstance(reader(), BaseReader) + + +@pytest.mark.parametrize("reader", get_all_readers()) +def test_has_correct_read_func(reader): + """Test if all readers have a valid read function implemented""" + assert callable(reader.read) + if reader.__name__ != "BaseReader": + assert hasattr(reader, "supported_nxdls") + + reader_name = get_reader_name_from_reader_object(reader) + + nexus_appdef_dir = os.path.join(os.getcwd(), "nexusparser", "definitions", "applications") + dataconverter_data_dir = os.path.join("tests", "data", "tools", "dataconverter") + + input_files = glob.glob(os.path.join(dataconverter_data_dir, "readers", reader_name, "*")) + for supported_nxdl in reader.supported_nxdls: + if supported_nxdl == "NXtest": + nxdl_file = os.path.join(dataconverter_data_dir, "NXtest.nxdl.xml") + else: + nxdl_file = os.path.join(nexus_appdef_dir, f"{supported_nxdl}.nxdl.xml") + + root = ET.parse(nxdl_file).getroot() + template = {} + generate_template_from_nxdl(root, template) + + read_data = reader().read(template=dict(template), file_paths=tuple(input_files)) + + assert isinstance(read_data, dict) + assert validate_data_dict(template, read_data, root) diff --git a/tests/tools/dataconverter/test_writer.py b/tests/tools/dataconverter/test_writer.py new file mode 100644 index 000000000..d5d9a7066 --- /dev/null +++ b/tests/tools/dataconverter/test_writer.py @@ -0,0 +1,52 @@ +# +# Copyright The NOMAD Authors. +# +# This file is part of NOMAD. See https://nomad-lab.eu for further info. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""Test cases for the Writer class used by the DataConverter""" + +import os + +import pytest +import h5py + +from nexusparser.tools.dataconverter.writer import Writer +from .test_helpers import VALID_DATA_DICT + + +@pytest.fixture(name="writer") +def fixture_writer(tmp_path): + """pytest fixture to setup Writer object to be used by tests with dummy data.""" + writer = Writer( + VALID_DATA_DICT, + os.path.join("tests", "data", "tools", "dataconverter", "NXtest.nxdl.xml"), + os.path.join(tmp_path, "test.nxs") + ) + yield writer + del writer + + +def test_init(writer): + """Test to verify Writer's initialization works.""" + assert isinstance(writer, Writer) + + +def test_write(writer): + """Test for the Writer's write function. Checks whether entries given above get written out.""" + writer.write() + test_nxs = h5py.File(writer.output_path, "r") + assert test_nxs["/my_entry/NXODD_name/int_value"][()] == 2 + assert test_nxs["/my_entry/NXODD_name/int_value"].attrs["units"] == "eV" + assert test_nxs["/my_entry/NXODD_name/posint_value"].shape == (3,) # pylint: disable=no-member