From 502fcb30c23b33ab5c32569345173ad4ae99bad3 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 12:32:30 +0100 Subject: [PATCH 01/13] first multi reader version --- pyproject.toml | 3 + src/pynxtools_raman_multiformat/README.md | 5 + .../config_file.json | 63 +++++ src/pynxtools_raman_multiformat/eln_data.yaml | 121 +++++++++ src/pynxtools_raman_multiformat/reader.py | 242 ++++++++++++++++++ 5 files changed, 434 insertions(+) create mode 100644 src/pynxtools_raman_multiformat/README.md create mode 100644 src/pynxtools_raman_multiformat/config_file.json create mode 100644 src/pynxtools_raman_multiformat/eln_data.yaml create mode 100644 src/pynxtools_raman_multiformat/reader.py diff --git a/pyproject.toml b/pyproject.toml index 53f5179..7d976f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,9 @@ dependencies = [ [project.entry-points."pynxtools.reader"] raman = "pynxtools_raman.reader:RamanReader" +raman_multi = "pynxtools_raman_multiformat.reader:RamanReaderMulti" +raman_multi2 = "pynxtools_multi.reader:MyDataReader2" +raman_multi3 = "pynxtools_multi_2.reader:RamanMultiReader" [project.urls] "Homepage" = "https://github.com/FAIRmat-NFDI/pynxtools-raman" diff --git a/src/pynxtools_raman_multiformat/README.md b/src/pynxtools_raman_multiformat/README.md new file mode 100644 index 0000000..5f8ebc7 --- /dev/null +++ b/src/pynxtools_raman_multiformat/README.md @@ -0,0 +1,5 @@ +## Multiformat data reader for Raman spectroscopy data +This is example data for writing a new data reader based on the [`MultiFormatReader`](https://github.com/FAIRmat-NFDI/pynxtools/blob/master/src/pynxtools/dataconverter/readers/multi/reader.py) from scratch. A how-to guide to implement this reader is available [here](https://fairmat-nfdi.github.io/pynxtools/how-tos/use-multi-format-reader.html) + +## This file types are currently supported: +- Witec Alpha Raman microscope - via ELN file (.yaml) \ No newline at end of file diff --git a/src/pynxtools_raman_multiformat/config_file.json b/src/pynxtools_raman_multiformat/config_file.json new file mode 100644 index 0000000..7aba577 --- /dev/null +++ b/src/pynxtools_raman_multiformat/config_file.json @@ -0,0 +1,63 @@ +{ + "/ENTRY[entry]/INSTRUMENT[instrument]/scattering_configuration": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/wavelength": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/wavelength/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/parameter_reliability": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/average_power": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/average_power/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/associated_source": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/detector_channel_type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/count_time/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/count_time": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/number_of_cycles": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/number_of_cycles/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/detector_type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/FABRICATION[device_information]/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/FABRICATION[device_information]/serial_number": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/detector_number": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/gain_setting": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_532nmlaser]/type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_532nmlaser]/power": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_532nmlaser]/power/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/FABRICATION[device_information]/vendor": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/FABRICATION[device_information]/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/FABRICATION[device_information]/vendor": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/FABRICATION[device_information]/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/magnification": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/numerical_aperture": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/device_information/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/grating/period": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/grating/period/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/wavelength": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/wavelength/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/attached_to": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/measurement": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/value": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/value/@units": "@eln", + "/ENTRY[entry]/SAMPLE[sample]/name": "@eln", + "/ENTRY[entry]/SAMPLE[sample]/atom_types": "@eln", + "/ENTRY[entry]/USER[user]/address": "@eln", + "/ENTRY[entry]/USER[user]/affiliation": "@eln", + "/ENTRY[entry]/USER[user]/email": "@eln", + "/ENTRY[entry]/USER[user]/name": "@eln", + "/ENTRY[entry]/experiment_description": "@eln", + "/ENTRY[entry]/experiment_type": "@eln", + "/ENTRY[entry]/raman_experiment_type": "@eln", + "/ENTRY[entry]/title": "@eln", + "/ENTRY[entry]/start_time": "@eln", + "/ENTRY[entry]/definition": "@eln", + "/ENTRY[entry]/@default": "data", + "/ENTRY[entry]/DATA[data]/@signal": "y_values", + "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", + "/ENTRY[entry]/DATA[data]/x_values": "@data:x_values", + "/ENTRY[entry]/DATA[data]/y_values/@unit": "@attrs:/ENTRY[entry]/data/unit_y", + "/ENTRY[entry]/DATA[data]/x_values/@unit": "@attrs:/ENTRY[entry]/data/unit_x", + "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_y", + "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_x", + "/ENTRY[entry]/DATA[data]/@axes":"x_values_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@attrs:/ENTRY[entry]/data/longname_x_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman": "@data:x_values_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman/@unit": "1/cm" + } + diff --git a/src/pynxtools_raman_multiformat/eln_data.yaml b/src/pynxtools_raman_multiformat/eln_data.yaml new file mode 100644 index 0000000..8dee742 --- /dev/null +++ b/src/pynxtools_raman_multiformat/eln_data.yaml @@ -0,0 +1,121 @@ +# Original meta_data_1.txt file below +#Spectrum--000 +# +#General: +# System ID: 100-1100-292 +# Start Time: 2:04:54 PM +# Start Date: Friday, June 21, 2024 +# Duration: 0h 0m 21s +# User Name: Witec +# Sample Name: +# Configuration: Raman CCD1 +# +# UHTS300M: +# Excitation Wavelength [nm]: 532.100 +# Grating: G1: 600 g/mm BLZ=500nm +# Center Wavelength [nm]: 596.989 +# Spectral Center [rel. 1/cm]: 2042.739 +# +# DU970_BV: +# Serial Number: 6358 +# Readout Mode: FVB (1-200) +# Output Amplifier: Conventional +# Vertical Shift Speed [µs]: 9.75 +# Horizontal Shift Speed [MHz]: 0.050 +# Preamplifier Gain: 1.00 +# Cycle Time [sec]: 1.00002 +# Sensor Temperature [°C]: -56 +# +# Number Of Accumulations: 20 +# Integration Time [s]: 1.00000 +# +# Objective: +# Objective Name: Nikon 20x 20x / 0.4 +# Objective Magnification: 20.0 +# +# Sample Location (global position): +# Position X [µm]: 0.000 +# Position Y [µm]: 0.000 +# Position Z [µm]: 0.000 + +data: + unit_x: nm + unit_y: counts + longname_x: Wavelength + longname_y: Raman Intensity +instrument: + scattering_configuration: z(xx)-z + beam_incident: + wavelength: + value: 532.1 + unit: nm + average_power: + value: 60 + unit: mW + parameter_reliability: nominal + associated_source: entry/instrument/source_532nmlaser + detector_ccd: + detector_channel_type: multichannel + count_time: + value: 1.0 + unit: s + number_of_cycles: + value: 20 + unit: counts + detector_type: CCD + device_information: + model: DU970_BV + serial_number: "6358" + detector_number: + - 1600 + - 200 + gain_setting: 1.0 + temperature_sensor: + attached_to: CCD + measurement: temperature + value: + value: -56 + unit: celsius + source_532nmlaser: + source_type: laser #DPSS + power: + value: 80 + unit: mW + device_information: + vendor: Witec + model: Alpha Raman + objective_lens: + type: objective + device_information: + vendor: Nikon + model: "Nikon 20x" + magnification: 20 + numerical_aperture: 0.4 + monochromator: + device_information: + model: UHTS300M + grating: + period: + value: 600 + unit: counts / mm + wavelength: + value: 596.989 ##Spectral Center [rel. 1/cm]: 2042.739 + unit: nm +sample: + name: Silicon Wafer + atom_types: Si +user: + address: Lennestr. 5, 04318 Leipzig + affiliation: Universität Leipzig + email: ron.hildebrandt@physik.hu-berlin.de + name: Hildebrandt, Ron +experiment_description: Raman spectrum of commercial silicon wafer +experiment_type: Raman spectroscopy +raman_experiment_type: non-resonant Raman spectroscopy +title: Si-Wafer +start_time: '2024-06-21T14:04:54+02:00' +definition: NXraman +measurement_file_meta_data: + delimiter: "," + skip_lines: 17 + diff --git a/src/pynxtools_raman_multiformat/reader.py b/src/pynxtools_raman_multiformat/reader.py new file mode 100644 index 0000000..b8376e2 --- /dev/null +++ b/src/pynxtools_raman_multiformat/reader.py @@ -0,0 +1,242 @@ +# 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 based on the MultiFormatReader.""" + +import logging +from typing import Dict, Any +import h5py +import numpy as np + +from pynxtools.dataconverter.readers.multi.reader import MultiFormatReader +from pynxtools.dataconverter.readers.utils import parse_yml + +logger = logging.getLogger("pynxtools") + +CONVERT_DICT = {} +# "unit": "@units", +# "version": "@version", +# "user": "USER[user]", +# "instrument": "INSTRUMENT[instrument]", +# "detector": "DETECTOR[detector]", +# "sample": "SAMPLE[sample]", +#} + + +class RamanReaderMulti(MultiFormatReader): + """MyDataReader implementation for the DataConverter to convert mydata to NeXus.""" + + supported_nxdls = ["NXraman"] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.extensions = { + ".yml": self.handle_eln_file, + ".yaml": self.handle_eln_file, + ".txt": self.handle_txt_file} + # ".json": self.set_config_file, + #} + + self.txt_line_skips = None + + def set_config_file(self, file_path: str) -> Dict[str, Any]: + if self.config_file is not None: + logger.info( + f"Config file already set. Replaced by the new file {file_path}." + ) + self.config_file = file_path + return {} + + + + def handle_eln_file(self, file_path: str) -> Dict[str, Any]: + self.eln_data = parse_yml( + file_path, + convert_dict=CONVERT_DICT, + parent_key="/ENTRY[entry]", + ) + #self.txt_line_skips = self.eln_data.get('/ENTRY[entry]/skip') + + return {} + + def handle_txt_file(self, filepath) -> Dict[str, Any]: + self.read_txt_file(filepath) + return {} + + + + + + + + + + def get_attr(self, key: str, path: str) -> Any: + """ + Get the metadata that was stored in the main file. + """ + # This uses the path given from the config file (path = the part after "@attrs:") + # to get the corresponting value stored at in the eln_data.yaml file, at the + # path value. + return self.eln_data.get(path) + + def read_txt_file(self, filepath): + with open(filepath, "r") as file: + lines = file.readlines() + + # Initialize dictionaries to hold header and data sections + header_dict = {} + data = [] + line_count = 0 + header_length = None + + # Track current section + current_section = None + + + + for line in lines: + line_count += 1 + line = line.strip() # Remove any leading/trailing whitespace + if line.startswith("[Header]"): + current_section = "header" + continue + elif line.startswith("[Data]"): + header_length = line_count + 2 + current_section = "data" + + continue + + # Parse the header section + if current_section == "header" and "=" in line: + key, value = line.split("=", 1) + header_dict[key.strip()] = value.strip() + + # Parse the data section + elif current_section == "data" and "," in line: + if line_count <= header_length: + if line.startswith("[Header]"): + print("We have to do something here") + if line_count > header_length: + values = line.split(",") + data.append([float(values[0].strip()), float(values[1].strip())]) + + #transform linewise read data to colum style data + + + + # Transform: [[A, B], [C, D], [E, F]] into [[A, C, E], [B, D, F]] + data = [list(item) for item in zip(*data)] + + data = np.transpose(data) + + data_dict = { + "data/x_values": data[:, 0], + "data/y_values": data[:, 1] + } + + self.txt_data = data_dict + self.txt_header = header_dict + + + def read_txt_columns(self, filepath): + data = np.loadtxt(filepath, delimiter=',') + + # Convert the array into a dictionary with labeled columns + data_dict = { + "data/x_values": data[:, 0], + "data/y_values": data[:, 1] + } + + A=self.transform_nm_to_wavenumber(532.1,data_dict["data/x_values"]) + print(A,"A") + return data_dict + + def get_eln_data(self, key: str, path: str) -> Any: + """Returns data from the given eln path.""" + if self.eln_data is None: + return None + upper_and_lower_mixed_nexus_concepts = ["/detector_TYPE[", + "/beam_TYPE[", + "/source_TYPE[", + "/polfilter_TYPE[", + "/spectral_filter_TYPE[", + "/temp_control_TYPE[", + "/software_TYPE[", + "/LENS_OPT[" + + ] + if self.eln_data.get(key) is None: + for string in upper_and_lower_mixed_nexus_concepts: + key = key.replace(string,"/[") + # add only characters, if they are lower case and if they are not "[" or "]" + result = ''.join([char for char in key if not (char.isupper() or char in '[]')]) + result = result.replace("entry","ENTRY[entry]") # CHANGE THIS LATER + if self.eln_data.get(result) is not None: + return self.eln_data.get(result) + else: + return "Parsing error?" + return self.eln_data.get(key) + + def get_data(self, key: str, path: str) -> Any: + """Returns measurement data from the given eln_data entry.""" + if path.endswith(("x_values", "y_values","x_values_raman")): + return self.txt_data.get(f"data/{path}") + else: + logger.warning(f"No axis name corresponding to the path {path}.") + + + def post_process(self) -> None: + """ + Do postprocessing after all files and config file are read. + """ + + def transform_nm_to_wavenumber(self, lambda_laser, lambda_measurement): + stokes_raman_shift = -(1e7 / lambda_measurement - 1e7 / lambda_laser) + return stokes_raman_shift + + def get_incident_wavelength_from_NXraman(self): + substring = "/beam_incident/wavelength" + + # Find matching keys with contain this substring + wavelength_keys = [key for key in self.eln_data if substring in key] + # Filter the matching keys for the strings, which contain this substring at the end only + filtered_list = [string for string in wavelength_keys if string.endswith(substring)] + # get the laser wavelength + laser_wavelength = self.eln_data.get(filtered_list[0]) + return laser_wavelength + + laser_wavelength = get_incident_wavelength_from_NXraman(self) + x_values_raman = transform_nm_to_wavenumber(self, laser_wavelength, self.txt_data["data/x_values"]) + + self.txt_data["data/x_values_raman"] = x_values_raman + + + + +READER = RamanReaderMulti + +# Use this command in this .py file folder: +# dataconverter eln_data.yaml Si-wafer-Raman-Spectrum-1.txt -c config_file.json --reader raman_multi --nxdl NXraman --output output_raman.nxs +# +# Remaining Warnings +# Could not find value for key /ENTRY[entry]/DATA[data]/x_values_raman/@long_name with value @attrs:/ENTRY[entry]/data/longname_x_raman. +# Tried prefixes: [('@attrs', '/ENTRY[entry]/data/longname_x_raman')]. +# WARNING: Missing attribute: "/ENTRY[entry]/definition/@URL" +# WARNING: Field /ENTRY[entry]/DATA[data]/y_values/@unit written without documentation. +# WARNING: Field /ENTRY[entry]/DATA[data]/x_values/@unit written without documentation. +# WARNING: Field /ENTRY[entry]/DATA[data]/x_values_raman/@unit written without documentation. \ No newline at end of file From cdd61db14093811587c483e7e9bad84bfdf92b07 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 12:39:37 +0100 Subject: [PATCH 02/13] pyproject.toml --- pyproject.toml | 3 +-- src/pynxtools_raman_multiformat/eln_data.yaml | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7d976f2..3114b4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,8 +28,7 @@ dependencies = [ [project.entry-points."pynxtools.reader"] raman = "pynxtools_raman.reader:RamanReader" raman_multi = "pynxtools_raman_multiformat.reader:RamanReaderMulti" -raman_multi2 = "pynxtools_multi.reader:MyDataReader2" -raman_multi3 = "pynxtools_multi_2.reader:RamanMultiReader" + [project.urls] "Homepage" = "https://github.com/FAIRmat-NFDI/pynxtools-raman" diff --git a/src/pynxtools_raman_multiformat/eln_data.yaml b/src/pynxtools_raman_multiformat/eln_data.yaml index 8dee742..38f89b6 100644 --- a/src/pynxtools_raman_multiformat/eln_data.yaml +++ b/src/pynxtools_raman_multiformat/eln_data.yaml @@ -118,4 +118,5 @@ definition: NXraman measurement_file_meta_data: delimiter: "," skip_lines: 17 + From f925bbbb9db21df21d06974ace4b658f26679c87 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 15:16:53 +0100 Subject: [PATCH 03/13] add suggestiony by lukas --- .../config_file.json | 6 +- src/pynxtools_raman_multiformat/eln_data.yaml | 3 +- src/pynxtools_raman_multiformat/reader.py | 83 +++++++------------ 3 files changed, 33 insertions(+), 59 deletions(-) diff --git a/src/pynxtools_raman_multiformat/config_file.json b/src/pynxtools_raman_multiformat/config_file.json index 7aba577..72d87c8 100644 --- a/src/pynxtools_raman_multiformat/config_file.json +++ b/src/pynxtools_raman_multiformat/config_file.json @@ -51,13 +51,13 @@ "/ENTRY[entry]/DATA[data]/@signal": "y_values", "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", "/ENTRY[entry]/DATA[data]/x_values": "@data:x_values", - "/ENTRY[entry]/DATA[data]/y_values/@unit": "@attrs:/ENTRY[entry]/data/unit_y", - "/ENTRY[entry]/DATA[data]/x_values/@unit": "@attrs:/ENTRY[entry]/data/unit_x", + "/ENTRY[entry]/DATA[data]/y_values/@units": "@attrs:/ENTRY[entry]/data/unit_y", + "/ENTRY[entry]/DATA[data]/x_values/@units": "@attrs:/ENTRY[entry]/data/unit_x", "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_y", "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_x", "/ENTRY[entry]/DATA[data]/@axes":"x_values_raman", "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@attrs:/ENTRY[entry]/data/longname_x_raman", "/ENTRY[entry]/DATA[data]/x_values_raman": "@data:x_values_raman", - "/ENTRY[entry]/DATA[data]/x_values_raman/@unit": "1/cm" + "/ENTRY[entry]/DATA[data]/x_values_raman/@units": "1/cm" } diff --git a/src/pynxtools_raman_multiformat/eln_data.yaml b/src/pynxtools_raman_multiformat/eln_data.yaml index 38f89b6..1a108c8 100644 --- a/src/pynxtools_raman_multiformat/eln_data.yaml +++ b/src/pynxtools_raman_multiformat/eln_data.yaml @@ -43,6 +43,7 @@ data: unit_y: counts longname_x: Wavelength longname_y: Raman Intensity + longname_x_raman: Raman Shift instrument: scattering_configuration: z(xx)-z beam_incident: @@ -77,7 +78,7 @@ instrument: value: -56 unit: celsius source_532nmlaser: - source_type: laser #DPSS + type: laser #DPSS power: value: 80 unit: mW diff --git a/src/pynxtools_raman_multiformat/reader.py b/src/pynxtools_raman_multiformat/reader.py index b8376e2..9eac3b4 100644 --- a/src/pynxtools_raman_multiformat/reader.py +++ b/src/pynxtools_raman_multiformat/reader.py @@ -27,13 +27,6 @@ logger = logging.getLogger("pynxtools") CONVERT_DICT = {} -# "unit": "@units", -# "version": "@version", -# "user": "USER[user]", -# "instrument": "INSTRUMENT[instrument]", -# "detector": "DETECTOR[detector]", -# "sample": "SAMPLE[sample]", -#} class RamanReaderMulti(MultiFormatReader): @@ -48,8 +41,6 @@ def __init__(self, *args, **kwargs): ".yml": self.handle_eln_file, ".yaml": self.handle_eln_file, ".txt": self.handle_txt_file} - # ".json": self.set_config_file, - #} self.txt_line_skips = None @@ -61,8 +52,6 @@ def set_config_file(self, file_path: str) -> Dict[str, Any]: self.config_file = file_path return {} - - def handle_eln_file(self, file_path: str) -> Dict[str, Any]: self.eln_data = parse_yml( file_path, @@ -77,14 +66,6 @@ def handle_txt_file(self, filepath) -> Dict[str, Any]: self.read_txt_file(filepath) return {} - - - - - - - - def get_attr(self, key: str, path: str) -> Any: """ Get the metadata that was stored in the main file. @@ -95,6 +76,9 @@ def get_attr(self, key: str, path: str) -> Any: return self.eln_data.get(path) def read_txt_file(self, filepath): + """ + Read a .txt file from Witec Alpha Raman spectrometer and save the header and measurement data. + """ with open(filepath, "r") as file: lines = file.readlines() @@ -102,21 +86,22 @@ def read_txt_file(self, filepath): header_dict = {} data = [] line_count = 0 - header_length = None + data_mini_header_length = None # Track current section current_section = None - - for line in lines: line_count += 1 - line = line.strip() # Remove any leading/trailing whitespace + # Remove any leading/trailing whitespace + line = line.strip() + # Go through the lines and define two different regions "Header" and + # "Data", as these need different methods to extract the data. if line.startswith("[Header]"): current_section = "header" continue elif line.startswith("[Data]"): - header_length = line_count + 2 + data_mini_header_length = line_count + 2 current_section = "data" continue @@ -128,22 +113,24 @@ def read_txt_file(self, filepath): # Parse the data section elif current_section == "data" and "," in line: - if line_count <= header_length: + # The header is set excactly until the float-like column data starts + # Rework this later to extract full metadata + if line_count <= data_mini_header_length: if line.startswith("[Header]"): - print("We have to do something here") - if line_count > header_length: + logger.info( + f"[Header] elements in the file {filepath}, are not parsed yet. Consider adden the respective functionality." + ) + if line_count > data_mini_header_length: values = line.split(",") data.append([float(values[0].strip()), float(values[1].strip())]) - #transform linewise read data to colum style data - - - # Transform: [[A, B], [C, D], [E, F]] into [[A, C, E], [B, D, F]] data = [list(item) for item in zip(*data)] + #transform linewise read data to colum style data data = np.transpose(data) + # assign column data with keys data_dict = { "data/x_values": data[:, 0], "data/y_values": data[:, 1] @@ -153,23 +140,13 @@ def read_txt_file(self, filepath): self.txt_header = header_dict - def read_txt_columns(self, filepath): - data = np.loadtxt(filepath, delimiter=',') - - # Convert the array into a dictionary with labeled columns - data_dict = { - "data/x_values": data[:, 0], - "data/y_values": data[:, 1] - } - - A=self.transform_nm_to_wavenumber(532.1,data_dict["data/x_values"]) - print(A,"A") - return data_dict - def get_eln_data(self, key: str, path: str) -> Any: """Returns data from the given eln path.""" if self.eln_data is None: return None + + # Filtering list, for NeXus concepts which use mixed notation of + # upper and lowercase to ensure correct NXclass labeling. upper_and_lower_mixed_nexus_concepts = ["/detector_TYPE[", "/beam_TYPE[", "/source_TYPE[", @@ -181,15 +158,18 @@ def get_eln_data(self, key: str, path: str) -> Any: ] if self.eln_data.get(key) is None: + # filter for mixed concept names for string in upper_and_lower_mixed_nexus_concepts: key = key.replace(string,"/[") # add only characters, if they are lower case and if they are not "[" or "]" result = ''.join([char for char in key if not (char.isupper() or char in '[]')]) - result = result.replace("entry","ENTRY[entry]") # CHANGE THIS LATER + # Filter as well for + result = result.replace("entry",f"ENTRY[{self.callbacks.entry_name}]") + if self.eln_data.get(result) is not None: return self.eln_data.get(result) else: - return "Parsing error?" + logger.warning(f"No key found during eln_data processsing for key '{key}' after it's modification to '{result}'.") return self.eln_data.get(key) def get_data(self, key: str, path: str) -> Any: @@ -202,7 +182,8 @@ def get_data(self, key: str, path: str) -> Any: def post_process(self) -> None: """ - Do postprocessing after all files and config file are read. + Post process the Raman data to add the Raman Shift from input laser wavelength and + data wavelengths. """ def transform_nm_to_wavenumber(self, lambda_laser, lambda_measurement): @@ -225,18 +206,10 @@ def get_incident_wavelength_from_NXraman(self): self.txt_data["data/x_values_raman"] = x_values_raman - - - READER = RamanReaderMulti # Use this command in this .py file folder: # dataconverter eln_data.yaml Si-wafer-Raman-Spectrum-1.txt -c config_file.json --reader raman_multi --nxdl NXraman --output output_raman.nxs # # Remaining Warnings -# Could not find value for key /ENTRY[entry]/DATA[data]/x_values_raman/@long_name with value @attrs:/ENTRY[entry]/data/longname_x_raman. -# Tried prefixes: [('@attrs', '/ENTRY[entry]/data/longname_x_raman')]. # WARNING: Missing attribute: "/ENTRY[entry]/definition/@URL" -# WARNING: Field /ENTRY[entry]/DATA[data]/y_values/@unit written without documentation. -# WARNING: Field /ENTRY[entry]/DATA[data]/x_values/@unit written without documentation. -# WARNING: Field /ENTRY[entry]/DATA[data]/x_values_raman/@unit written without documentation. \ No newline at end of file From 1c79bc951a30db7e5dabd47d03ae30ae7c4f1f1d Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 15:24:22 +0100 Subject: [PATCH 04/13] try adding tests for multi format reader --- tests/data_multi/config_file.json | 63 +++++++++++++++ tests/data_multi/eln_data.yaml | 123 ++++++++++++++++++++++++++++++ tests/data_multi/example.nxs | Bin 0 -> 77304 bytes tests/test_reader.py | 18 +++++ 4 files changed, 204 insertions(+) create mode 100644 tests/data_multi/config_file.json create mode 100644 tests/data_multi/eln_data.yaml create mode 100644 tests/data_multi/example.nxs diff --git a/tests/data_multi/config_file.json b/tests/data_multi/config_file.json new file mode 100644 index 0000000..72d87c8 --- /dev/null +++ b/tests/data_multi/config_file.json @@ -0,0 +1,63 @@ +{ + "/ENTRY[entry]/INSTRUMENT[instrument]/scattering_configuration": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/wavelength": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/wavelength/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/parameter_reliability": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/average_power": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/average_power/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/beam_incident/associated_source": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/detector_channel_type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/count_time/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/count_time": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/number_of_cycles": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/number_of_cycles/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/detector_type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/FABRICATION[device_information]/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/FABRICATION[device_information]/serial_number": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/detector_number": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/detector_TYPE[detector_ccd]/gain_setting": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_532nmlaser]/type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_532nmlaser]/power": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SOURCE[source_532nmlaser]/power/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/FABRICATION[device_information]/vendor": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/FABRICATION[device_information]/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/type": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/FABRICATION[device_information]/vendor": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/FABRICATION[device_information]/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/magnification": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/LENS_OPT[objective_lens]/numerical_aperture": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/device_information/model": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/grating/period": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/grating/period/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/wavelength": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/MONOCHROMATOR[monochromator]/wavelength/@units": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/attached_to": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/measurement": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/value": "@eln", + "/ENTRY[entry]/INSTRUMENT[instrument]/SENSOR[temperature_sensor]/value/@units": "@eln", + "/ENTRY[entry]/SAMPLE[sample]/name": "@eln", + "/ENTRY[entry]/SAMPLE[sample]/atom_types": "@eln", + "/ENTRY[entry]/USER[user]/address": "@eln", + "/ENTRY[entry]/USER[user]/affiliation": "@eln", + "/ENTRY[entry]/USER[user]/email": "@eln", + "/ENTRY[entry]/USER[user]/name": "@eln", + "/ENTRY[entry]/experiment_description": "@eln", + "/ENTRY[entry]/experiment_type": "@eln", + "/ENTRY[entry]/raman_experiment_type": "@eln", + "/ENTRY[entry]/title": "@eln", + "/ENTRY[entry]/start_time": "@eln", + "/ENTRY[entry]/definition": "@eln", + "/ENTRY[entry]/@default": "data", + "/ENTRY[entry]/DATA[data]/@signal": "y_values", + "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", + "/ENTRY[entry]/DATA[data]/x_values": "@data:x_values", + "/ENTRY[entry]/DATA[data]/y_values/@units": "@attrs:/ENTRY[entry]/data/unit_y", + "/ENTRY[entry]/DATA[data]/x_values/@units": "@attrs:/ENTRY[entry]/data/unit_x", + "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_y", + "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_x", + "/ENTRY[entry]/DATA[data]/@axes":"x_values_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@attrs:/ENTRY[entry]/data/longname_x_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman": "@data:x_values_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman/@units": "1/cm" + } + diff --git a/tests/data_multi/eln_data.yaml b/tests/data_multi/eln_data.yaml new file mode 100644 index 0000000..1a108c8 --- /dev/null +++ b/tests/data_multi/eln_data.yaml @@ -0,0 +1,123 @@ +# Original meta_data_1.txt file below +#Spectrum--000 +# +#General: +# System ID: 100-1100-292 +# Start Time: 2:04:54 PM +# Start Date: Friday, June 21, 2024 +# Duration: 0h 0m 21s +# User Name: Witec +# Sample Name: +# Configuration: Raman CCD1 +# +# UHTS300M: +# Excitation Wavelength [nm]: 532.100 +# Grating: G1: 600 g/mm BLZ=500nm +# Center Wavelength [nm]: 596.989 +# Spectral Center [rel. 1/cm]: 2042.739 +# +# DU970_BV: +# Serial Number: 6358 +# Readout Mode: FVB (1-200) +# Output Amplifier: Conventional +# Vertical Shift Speed [µs]: 9.75 +# Horizontal Shift Speed [MHz]: 0.050 +# Preamplifier Gain: 1.00 +# Cycle Time [sec]: 1.00002 +# Sensor Temperature [°C]: -56 +# +# Number Of Accumulations: 20 +# Integration Time [s]: 1.00000 +# +# Objective: +# Objective Name: Nikon 20x 20x / 0.4 +# Objective Magnification: 20.0 +# +# Sample Location (global position): +# Position X [µm]: 0.000 +# Position Y [µm]: 0.000 +# Position Z [µm]: 0.000 + +data: + unit_x: nm + unit_y: counts + longname_x: Wavelength + longname_y: Raman Intensity + longname_x_raman: Raman Shift +instrument: + scattering_configuration: z(xx)-z + beam_incident: + wavelength: + value: 532.1 + unit: nm + average_power: + value: 60 + unit: mW + parameter_reliability: nominal + associated_source: entry/instrument/source_532nmlaser + detector_ccd: + detector_channel_type: multichannel + count_time: + value: 1.0 + unit: s + number_of_cycles: + value: 20 + unit: counts + detector_type: CCD + device_information: + model: DU970_BV + serial_number: "6358" + detector_number: + - 1600 + - 200 + gain_setting: 1.0 + temperature_sensor: + attached_to: CCD + measurement: temperature + value: + value: -56 + unit: celsius + source_532nmlaser: + type: laser #DPSS + power: + value: 80 + unit: mW + device_information: + vendor: Witec + model: Alpha Raman + objective_lens: + type: objective + device_information: + vendor: Nikon + model: "Nikon 20x" + magnification: 20 + numerical_aperture: 0.4 + monochromator: + device_information: + model: UHTS300M + grating: + period: + value: 600 + unit: counts / mm + wavelength: + value: 596.989 ##Spectral Center [rel. 1/cm]: 2042.739 + unit: nm +sample: + name: Silicon Wafer + atom_types: Si +user: + address: Lennestr. 5, 04318 Leipzig + affiliation: Universität Leipzig + email: ron.hildebrandt@physik.hu-berlin.de + name: Hildebrandt, Ron +experiment_description: Raman spectrum of commercial silicon wafer +experiment_type: Raman spectroscopy +raman_experiment_type: non-resonant Raman spectroscopy +title: Si-Wafer +start_time: '2024-06-21T14:04:54+02:00' +definition: NXraman +measurement_file_meta_data: + delimiter: "," + skip_lines: 17 + + diff --git a/tests/data_multi/example.nxs b/tests/data_multi/example.nxs new file mode 100644 index 0000000000000000000000000000000000000000..1262e8fed7787162bfd81b240459a77eda18c247 GIT binary patch literal 77304 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 Date: Tue, 19 Nov 2024 15:29:36 +0100 Subject: [PATCH 05/13] add ruff --- tests/test_reader.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/test_reader.py b/tests/test_reader.py index f234791..9470252 100644 --- a/tests/test_reader.py +++ b/tests/test_reader.py @@ -25,7 +25,6 @@ def test_nexus_conversion(caplog, tmp_path): test.convert_to_nexus(caplog_level="WARNING", ignore_undocumented=False) test.check_reproducibility_of_nexus() - caplog.clear() dir_path_multi = Path(__file__).parent / "data_multi" test = ReaderTest( @@ -37,8 +36,3 @@ def test_nexus_conversion(caplog, tmp_path): ) test.convert_to_nexus(caplog_level="WARNING", ignore_undocumented=False) test.check_reproducibility_of_nexus() - - - - - From 07ad4068e6f89ddd732332e05a49590ebd2be3eb Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 15:41:03 +0100 Subject: [PATCH 06/13] add txt data initialization --- src/pynxtools_raman_multiformat/reader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pynxtools_raman_multiformat/reader.py b/src/pynxtools_raman_multiformat/reader.py index 9eac3b4..f395796 100644 --- a/src/pynxtools_raman_multiformat/reader.py +++ b/src/pynxtools_raman_multiformat/reader.py @@ -36,6 +36,7 @@ class RamanReaderMulti(MultiFormatReader): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + self.txt_data: Dict[str, Any] = {} self.extensions = { ".yml": self.handle_eln_file, From b128233d974a6b7dc627ae834e24fecdcb890a21 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 15:56:26 +0100 Subject: [PATCH 07/13] add txt files as they were ignored by git before.... --- .../Si-wafer-Raman-Spectrum-1.txt | 1617 +++++++++++++++++ .../data_multi/Si-wafer-Raman-Spectrum-1.txt | 1617 +++++++++++++++++ 2 files changed, 3234 insertions(+) create mode 100644 src/pynxtools_raman_multiformat/Si-wafer-Raman-Spectrum-1.txt create mode 100644 tests/data_multi/Si-wafer-Raman-Spectrum-1.txt diff --git a/src/pynxtools_raman_multiformat/Si-wafer-Raman-Spectrum-1.txt b/src/pynxtools_raman_multiformat/Si-wafer-Raman-Spectrum-1.txt new file mode 100644 index 0000000..43d4d1a --- /dev/null +++ b/src/pynxtools_raman_multiformat/Si-wafer-Raman-Spectrum-1.txt @@ -0,0 +1,1617 @@ +//Exported ASCII-File +[Header] +FileName = J:\Raman-spectroscopy-microscopy\Data\2024-06-20-CD-cover-test\Petri-dish-test.wip +GraphName = Spectrum--000--Spec.Data 1 +SizeX = 1 +SizeY = 1 +SizeGraph = 1600 +PositionUnit = µm +PositionX = 2.3283064365387E-8 +PositionY = 2.3283064365387E-8 +PositionZ = 0 +XAxisUnit = nm +DataUnit = CCD cts + +[Data] +X-Axis,Spectrum--000--Spec.Data 1 +nm,CCD cts + 5.307816803E+02, 3.568500061E+02 + 5.308650650E+02, 3.566000061E+02 + 5.309484482E+02, 3.556000061E+02 + 5.310318301E+02, 3.572500000E+02 + 5.311152107E+02, 3.636000061E+02 + 5.311985898E+02, 3.647999878E+02 + 5.312819676E+02, 3.783500061E+02 + 5.313653440E+02, 3.944500122E+02 + 5.314487190E+02, 4.185499878E+02 + 5.315320927E+02, 4.417000122E+02 + 5.316154650E+02, 4.921499939E+02 + 5.316988358E+02, 5.875000000E+02 + 5.317822054E+02, 9.454000244E+02 + 5.318655735E+02, 2.839050049E+03 + 5.319489403E+02, 9.894750000E+03 + 5.320323056E+02, 3.141025000E+04 + 5.321156696E+02, 6.553500000E+04 + 5.321990322E+02, 6.553500000E+04 + 5.322823935E+02, 6.553500000E+04 + 5.323657533E+02, 6.553500000E+04 + 5.324491118E+02, 6.553500000E+04 + 5.325324688E+02, 6.553500000E+04 + 5.326158245E+02, 6.553500000E+04 + 5.326991788E+02, 6.553500000E+04 + 5.327825318E+02, 3.606855078E+04 + 5.328658833E+02, 5.571549805E+03 + 5.329492334E+02, 1.359699951E+03 + 5.330325822E+02, 6.915000000E+02 + 5.331159295E+02, 5.402999878E+02 + 5.331992755E+02, 4.878999939E+02 + 5.332826200E+02, 4.567999878E+02 + 5.333659632E+02, 4.294500122E+02 + 5.334493050E+02, 4.121000061E+02 + 5.335326454E+02, 3.987000122E+02 + 5.336159844E+02, 3.841000061E+02 + 5.336993220E+02, 3.701000061E+02 + 5.337826582E+02, 3.602999878E+02 + 5.338659930E+02, 3.547999878E+02 + 5.339493264E+02, 3.511499939E+02 + 5.340326584E+02, 3.475000000E+02 + 5.341159890E+02, 3.451499939E+02 + 5.341993182E+02, 3.451000061E+02 + 5.342826460E+02, 3.429500122E+02 + 5.343659725E+02, 3.412500000E+02 + 5.344492975E+02, 3.399500122E+02 + 5.345326211E+02, 3.393500061E+02 + 5.346159433E+02, 3.446499939E+02 + 5.346992641E+02, 3.462500000E+02 + 5.347825834E+02, 3.467000122E+02 + 5.348659014E+02, 3.402999878E+02 + 5.349492180E+02, 3.305000000E+02 + 5.350325332E+02, 3.274500122E+02 + 5.351158469E+02, 3.312500000E+02 + 5.351991593E+02, 3.382500000E+02 + 5.352824702E+02, 3.357500000E+02 + 5.353657797E+02, 3.281000061E+02 + 5.354490879E+02, 3.296499939E+02 + 5.355323946E+02, 3.341000061E+02 + 5.356156999E+02, 3.335000000E+02 + 5.356990037E+02, 3.338500061E+02 + 5.357823062E+02, 3.350499878E+02 + 5.358656073E+02, 3.340499878E+02 + 5.359489069E+02, 3.306000061E+02 + 5.360322051E+02, 3.396000061E+02 + 5.361155019E+02, 3.457500000E+02 + 5.361987973E+02, 3.444500122E+02 + 5.362820913E+02, 3.596499939E+02 + 5.363653838E+02, 3.925000000E+02 + 5.364486749E+02, 4.168500061E+02 + 5.365319647E+02, 4.447500000E+02 + 5.366152529E+02, 4.767999878E+02 + 5.366985398E+02, 4.987999878E+02 + 5.367818252E+02, 5.137500000E+02 + 5.368651093E+02, 5.271500244E+02 + 5.369483918E+02, 5.201500244E+02 + 5.370316730E+02, 5.162500000E+02 + 5.371149528E+02, 5.230999756E+02 + 5.371982311E+02, 5.315000000E+02 + 5.372815080E+02, 5.334000244E+02 + 5.373647834E+02, 5.249000244E+02 + 5.374480574E+02, 5.210499878E+02 + 5.375313300E+02, 5.236500244E+02 + 5.376146012E+02, 5.252000122E+02 + 5.376978710E+02, 5.294500122E+02 + 5.377811393E+02, 5.327000122E+02 + 5.378644061E+02, 5.377500000E+02 + 5.379476716E+02, 5.419000244E+02 + 5.380309356E+02, 5.483499756E+02 + 5.381141982E+02, 5.499500122E+02 + 5.381974593E+02, 5.567500000E+02 + 5.382807190E+02, 5.690000000E+02 + 5.383639773E+02, 5.797999878E+02 + 5.384472341E+02, 5.885000000E+02 + 5.385304895E+02, 6.032999878E+02 + 5.386137434E+02, 6.313499756E+02 + 5.386969960E+02, 6.657000122E+02 + 5.387802470E+02, 6.997999878E+02 + 5.388634967E+02, 7.320499878E+02 + 5.389467448E+02, 7.552999878E+02 + 5.390299916E+02, 7.800499878E+02 + 5.391132369E+02, 7.878499756E+02 + 5.391964808E+02, 7.860000000E+02 + 5.392797232E+02, 7.950499878E+02 + 5.393629641E+02, 7.972999878E+02 + 5.394462037E+02, 8.177999878E+02 + 5.395294417E+02, 8.445000000E+02 + 5.396126784E+02, 8.434000244E+02 + 5.396959135E+02, 8.478499756E+02 + 5.397791473E+02, 8.565999756E+02 + 5.398623795E+02, 8.771500244E+02 + 5.399456104E+02, 8.962000122E+02 + 5.400288397E+02, 9.195000000E+02 + 5.401120677E+02, 9.234500122E+02 + 5.401952941E+02, 9.287000122E+02 + 5.402785192E+02, 9.475000000E+02 + 5.403617427E+02, 9.733499756E+02 + 5.404449648E+02, 1.012599976E+03 + 5.405281855E+02, 1.046650024E+03 + 5.406114047E+02, 1.072099976E+03 + 5.406946224E+02, 1.118150024E+03 + 5.407778387E+02, 1.202800049E+03 + 5.408610535E+02, 1.268500000E+03 + 5.409442669E+02, 1.327500000E+03 + 5.410274788E+02, 1.355050049E+03 + 5.411106892E+02, 1.336000000E+03 + 5.411938982E+02, 1.264650024E+03 + 5.412771057E+02, 1.190000000E+03 + 5.413603118E+02, 1.130800049E+03 + 5.414435164E+02, 1.089199951E+03 + 5.415267195E+02, 1.057550049E+03 + 5.416099212E+02, 1.003150024E+03 + 5.416931214E+02, 9.575499878E+02 + 5.417763201E+02, 9.495000000E+02 + 5.418595173E+02, 9.660999756E+02 + 5.419427131E+02, 9.540499878E+02 + 5.420259075E+02, 9.380499878E+02 + 5.421091003E+02, 9.090000000E+02 + 5.421922917E+02, 8.767500000E+02 + 5.422754816E+02, 8.750000000E+02 + 5.423586701E+02, 8.545999756E+02 + 5.424418570E+02, 8.401500244E+02 + 5.425250425E+02, 8.340499878E+02 + 5.426082265E+02, 8.328499756E+02 + 5.426914091E+02, 8.247000122E+02 + 5.427745902E+02, 8.137000122E+02 + 5.428577698E+02, 8.169000244E+02 + 5.429409479E+02, 8.104500122E+02 + 5.430241245E+02, 7.997000122E+02 + 5.431072997E+02, 7.792500000E+02 + 5.431904734E+02, 7.682500000E+02 + 5.432736456E+02, 7.734500122E+02 + 5.433568163E+02, 7.602500000E+02 + 5.434399855E+02, 7.368499756E+02 + 5.435231533E+02, 7.210999756E+02 + 5.436063195E+02, 7.175499878E+02 + 5.436894843E+02, 7.150499878E+02 + 5.437726476E+02, 7.059000244E+02 + 5.438558095E+02, 7.045499878E+02 + 5.439389698E+02, 7.042500000E+02 + 5.440221287E+02, 7.048499756E+02 + 5.441052860E+02, 6.950000000E+02 + 5.441884419E+02, 6.799500122E+02 + 5.442715963E+02, 6.854500122E+02 + 5.443547492E+02, 6.965000000E+02 + 5.444379006E+02, 7.022500000E+02 + 5.445210505E+02, 7.069000244E+02 + 5.446041989E+02, 7.093499756E+02 + 5.446873459E+02, 7.129500122E+02 + 5.447704913E+02, 7.050999756E+02 + 5.448536352E+02, 7.005000000E+02 + 5.449367777E+02, 7.015999756E+02 + 5.450199187E+02, 6.827000122E+02 + 5.451030581E+02, 6.499000244E+02 + 5.451861961E+02, 6.052500000E+02 + 5.452693325E+02, 5.814000244E+02 + 5.453524675E+02, 5.620499878E+02 + 5.454356010E+02, 5.369000244E+02 + 5.455187329E+02, 5.061000061E+02 + 5.456018634E+02, 4.766499939E+02 + 5.456849924E+02, 4.692000122E+02 + 5.457681199E+02, 4.718500061E+02 + 5.458512458E+02, 4.980000000E+02 + 5.459343703E+02, 5.066000061E+02 + 5.460174932E+02, 5.192999878E+02 + 5.461006147E+02, 5.346500244E+02 + 5.461837346E+02, 5.530499878E+02 + 5.462668531E+02, 5.679500122E+02 + 5.463499700E+02, 5.937000122E+02 + 5.464330854E+02, 6.264500122E+02 + 5.465161993E+02, 6.693499756E+02 + 5.465993118E+02, 7.277000122E+02 + 5.466824227E+02, 7.943499756E+02 + 5.467655320E+02, 8.970499878E+02 + 5.468486399E+02, 1.080150024E+03 + 5.469317463E+02, 1.368199951E+03 + 5.470148511E+02, 1.876199951E+03 + 5.470979545E+02, 2.918550049E+03 + 5.471810563E+02, 5.445149902E+03 + 5.472641566E+02, 1.210854980E+04 + 5.473472554E+02, 2.485109961E+04 + 5.474303527E+02, 3.471844922E+04 + 5.475134485E+02, 3.281710156E+04 + 5.475965427E+02, 2.164944922E+04 + 5.476796354E+02, 1.089300000E+04 + 5.477627266E+02, 5.679000000E+03 + 5.478458163E+02, 3.482050049E+03 + 5.479289045E+02, 2.450100098E+03 + 5.480119911E+02, 1.904550049E+03 + 5.480950762E+02, 1.562699951E+03 + 5.481781598E+02, 1.338349976E+03 + 5.482612419E+02, 1.164750000E+03 + 5.483443225E+02, 1.047699951E+03 + 5.484274015E+02, 9.755499878E+02 + 5.485104790E+02, 9.149000244E+02 + 5.485935550E+02, 8.467999878E+02 + 5.486766294E+02, 7.968499756E+02 + 5.487597023E+02, 7.582999878E+02 + 5.488427737E+02, 7.257000122E+02 + 5.489258436E+02, 6.812999878E+02 + 5.490089119E+02, 6.612500000E+02 + 5.490919787E+02, 6.521500244E+02 + 5.491750440E+02, 6.335499878E+02 + 5.492581077E+02, 6.128499756E+02 + 5.493411699E+02, 6.115000000E+02 + 5.494242306E+02, 6.025999756E+02 + 5.495072897E+02, 5.902999878E+02 + 5.495903473E+02, 5.904000244E+02 + 5.496734034E+02, 5.905000000E+02 + 5.497564579E+02, 5.925999756E+02 + 5.498395109E+02, 5.949500122E+02 + 5.499225623E+02, 5.969500122E+02 + 5.500056123E+02, 6.099000244E+02 + 5.500886606E+02, 6.335499878E+02 + 5.501717075E+02, 6.464000244E+02 + 5.502547528E+02, 6.655499878E+02 + 5.503377965E+02, 6.816500244E+02 + 5.504208387E+02, 6.784000244E+02 + 5.505038794E+02, 6.649500122E+02 + 5.505869185E+02, 6.473499756E+02 + 5.506699561E+02, 6.340000000E+02 + 5.507529921E+02, 6.159500122E+02 + 5.508360266E+02, 6.072500000E+02 + 5.509190595E+02, 6.004500122E+02 + 5.510020909E+02, 5.985499878E+02 + 5.510851207E+02, 5.982500000E+02 + 5.511681490E+02, 5.876500244E+02 + 5.512511758E+02, 5.795000000E+02 + 5.513342010E+02, 5.867500000E+02 + 5.514172246E+02, 5.829500122E+02 + 5.515002467E+02, 5.840000000E+02 + 5.515832672E+02, 5.959500122E+02 + 5.516662862E+02, 6.057500000E+02 + 5.517493036E+02, 6.135999756E+02 + 5.518323195E+02, 6.095000000E+02 + 5.519153338E+02, 6.136500244E+02 + 5.519983466E+02, 6.111500244E+02 + 5.520813578E+02, 6.018499756E+02 + 5.521643674E+02, 5.959000244E+02 + 5.522473755E+02, 5.922500000E+02 + 5.523303821E+02, 5.776500244E+02 + 5.524133870E+02, 5.646500244E+02 + 5.524963904E+02, 5.505000000E+02 + 5.525793923E+02, 5.281500244E+02 + 5.526623926E+02, 5.199000244E+02 + 5.527453913E+02, 5.075000000E+02 + 5.528283885E+02, 5.058999939E+02 + 5.529113840E+02, 5.022999878E+02 + 5.529943781E+02, 4.914500122E+02 + 5.530773705E+02, 4.820000000E+02 + 5.531603614E+02, 4.752000122E+02 + 5.532433508E+02, 4.746000061E+02 + 5.533263385E+02, 4.705000000E+02 + 5.534093247E+02, 4.665000000E+02 + 5.534923093E+02, 4.672500000E+02 + 5.535752924E+02, 4.658999939E+02 + 5.536582739E+02, 4.667999878E+02 + 5.537412538E+02, 4.627999878E+02 + 5.538242321E+02, 4.633500061E+02 + 5.539072089E+02, 4.636000061E+02 + 5.539901841E+02, 4.710499878E+02 + 5.540731577E+02, 4.683999939E+02 + 5.541561298E+02, 4.647000122E+02 + 5.542391002E+02, 4.602500000E+02 + 5.543220691E+02, 4.621000061E+02 + 5.544050364E+02, 4.632000122E+02 + 5.544880022E+02, 4.669500122E+02 + 5.545709663E+02, 4.729500122E+02 + 5.546539289E+02, 4.749500122E+02 + 5.547368899E+02, 4.797500000E+02 + 5.548198493E+02, 4.766499939E+02 + 5.549028071E+02, 4.786499939E+02 + 5.549857634E+02, 4.867000122E+02 + 5.550687181E+02, 4.860000000E+02 + 5.551516711E+02, 4.880499878E+02 + 5.552346226E+02, 4.876499939E+02 + 5.553175726E+02, 4.903500061E+02 + 5.554005209E+02, 4.955499878E+02 + 5.554834676E+02, 4.998500061E+02 + 5.555664128E+02, 5.053999939E+02 + 5.556493563E+02, 5.118500061E+02 + 5.557322983E+02, 5.185999756E+02 + 5.558152387E+02, 5.169000244E+02 + 5.558981775E+02, 5.136500244E+02 + 5.559811147E+02, 5.180000000E+02 + 5.560640503E+02, 5.269000244E+02 + 5.561469843E+02, 5.420499878E+02 + 5.562299168E+02, 5.400499878E+02 + 5.563128476E+02, 5.472500000E+02 + 5.563957769E+02, 5.572500000E+02 + 5.564787045E+02, 5.519000244E+02 + 5.565616305E+02, 5.546500244E+02 + 5.566445550E+02, 5.558499756E+02 + 5.567274778E+02, 5.518499756E+02 + 5.568103991E+02, 5.585499878E+02 + 5.568933188E+02, 5.464000244E+02 + 5.569762368E+02, 5.423499756E+02 + 5.570591533E+02, 5.410999756E+02 + 5.571420681E+02, 5.270000000E+02 + 5.572249814E+02, 5.244500122E+02 + 5.573078930E+02, 5.184500122E+02 + 5.573908031E+02, 5.239500122E+02 + 5.574737115E+02, 5.201500244E+02 + 5.575566184E+02, 5.250999756E+02 + 5.576395236E+02, 5.309000244E+02 + 5.577224272E+02, 5.235499878E+02 + 5.578053292E+02, 5.175999756E+02 + 5.578882296E+02, 5.169000244E+02 + 5.579711284E+02, 5.220499878E+02 + 5.580540256E+02, 5.302500000E+02 + 5.581369212E+02, 5.271500244E+02 + 5.582198152E+02, 5.222999878E+02 + 5.583027076E+02, 5.141500244E+02 + 5.583855983E+02, 5.157000122E+02 + 5.584684874E+02, 5.214000244E+02 + 5.585513750E+02, 5.232000122E+02 + 5.586342609E+02, 5.272999878E+02 + 5.587171452E+02, 5.319500122E+02 + 5.588000278E+02, 5.298499756E+02 + 5.588829089E+02, 5.262000122E+02 + 5.589657884E+02, 5.257500000E+02 + 5.590486662E+02, 5.257500000E+02 + 5.591315424E+02, 5.314000244E+02 + 5.592144170E+02, 5.332000122E+02 + 5.592972899E+02, 5.310000000E+02 + 5.593801613E+02, 5.400000000E+02 + 5.594630310E+02, 5.442500000E+02 + 5.595458991E+02, 5.541500244E+02 + 5.596287656E+02, 5.714500122E+02 + 5.597116305E+02, 5.987999878E+02 + 5.597944937E+02, 6.353499756E+02 + 5.598773553E+02, 7.229500122E+02 + 5.599602153E+02, 8.413499756E+02 + 5.600430736E+02, 1.013650024E+03 + 5.601259304E+02, 1.202349976E+03 + 5.602087855E+02, 1.395849976E+03 + 5.602916389E+02, 1.576849976E+03 + 5.603744908E+02, 1.644800049E+03 + 5.604573410E+02, 1.647750000E+03 + 5.605401896E+02, 1.644550049E+03 + 5.606230365E+02, 1.649250000E+03 + 5.607058818E+02, 1.646150024E+03 + 5.607887255E+02, 1.637699951E+03 + 5.608715676E+02, 1.626050049E+03 + 5.609544080E+02, 1.625349976E+03 + 5.610372468E+02, 1.647449951E+03 + 5.611200839E+02, 1.662449951E+03 + 5.612029194E+02, 1.673000000E+03 + 5.612857533E+02, 1.668349976E+03 + 5.613685855E+02, 1.679449951E+03 + 5.614514161E+02, 1.697849976E+03 + 5.615342451E+02, 1.686000000E+03 + 5.616170724E+02, 1.647050049E+03 + 5.616998981E+02, 1.533900024E+03 + 5.617827221E+02, 1.450849976E+03 + 5.618655445E+02, 1.318550049E+03 + 5.619483652E+02, 1.144650024E+03 + 5.620311843E+02, 9.840000000E+02 + 5.621140018E+02, 8.715999756E+02 + 5.621968176E+02, 8.002999878E+02 + 5.622796318E+02, 7.612500000E+02 + 5.623624443E+02, 7.222500000E+02 + 5.624452552E+02, 6.889000244E+02 + 5.625280644E+02, 6.590999756E+02 + 5.626108720E+02, 6.174000244E+02 + 5.626936779E+02, 5.990499878E+02 + 5.627764822E+02, 5.799000244E+02 + 5.628592848E+02, 5.526500244E+02 + 5.629420858E+02, 5.300999756E+02 + 5.630248851E+02, 5.068999939E+02 + 5.631076827E+02, 4.824500122E+02 + 5.631904788E+02, 4.563999939E+02 + 5.632732731E+02, 4.379500122E+02 + 5.633560658E+02, 4.137999878E+02 + 5.634388569E+02, 3.924500122E+02 + 5.635216463E+02, 3.785000000E+02 + 5.636044340E+02, 3.711000061E+02 + 5.636872201E+02, 3.651000061E+02 + 5.637700045E+02, 3.610000000E+02 + 5.638527872E+02, 3.587999878E+02 + 5.639355683E+02, 3.561499939E+02 + 5.640183478E+02, 3.545000000E+02 + 5.641011255E+02, 3.522999878E+02 + 5.641839016E+02, 3.490000000E+02 + 5.642666761E+02, 3.460000000E+02 + 5.643494489E+02, 3.450499878E+02 + 5.644322200E+02, 3.452000122E+02 + 5.645149894E+02, 3.464500122E+02 + 5.645977572E+02, 3.491499939E+02 + 5.646805233E+02, 3.473999939E+02 + 5.647632878E+02, 3.474500122E+02 + 5.648460506E+02, 3.477500000E+02 + 5.649288117E+02, 3.453500061E+02 + 5.650115711E+02, 3.433999939E+02 + 5.650943289E+02, 3.443500061E+02 + 5.651770850E+02, 3.438500061E+02 + 5.652598394E+02, 3.446499939E+02 + 5.653425922E+02, 3.443999939E+02 + 5.654253433E+02, 3.452000122E+02 + 5.655080927E+02, 3.431499939E+02 + 5.655908404E+02, 3.415499878E+02 + 5.656735865E+02, 3.438500061E+02 + 5.657563308E+02, 3.432999878E+02 + 5.658390735E+02, 3.396000061E+02 + 5.659218146E+02, 3.396499939E+02 + 5.660045539E+02, 3.410499878E+02 + 5.660872916E+02, 3.420000000E+02 + 5.661700276E+02, 3.399500122E+02 + 5.662527619E+02, 3.410000000E+02 + 5.663354945E+02, 3.412500000E+02 + 5.664182255E+02, 3.401499939E+02 + 5.665009547E+02, 3.397999878E+02 + 5.665836823E+02, 3.346499939E+02 + 5.666664082E+02, 3.362000122E+02 + 5.667491324E+02, 3.338999939E+02 + 5.668318549E+02, 3.352500000E+02 + 5.669145758E+02, 3.320000000E+02 + 5.669972949E+02, 3.325499878E+02 + 5.670800124E+02, 3.350499878E+02 + 5.671627282E+02, 3.310499878E+02 + 5.672454423E+02, 3.304500122E+02 + 5.673281546E+02, 3.296000061E+02 + 5.674108654E+02, 3.336000061E+02 + 5.674935744E+02, 3.318500061E+02 + 5.675762817E+02, 3.263999939E+02 + 5.676589873E+02, 3.292000122E+02 + 5.677416913E+02, 3.317000122E+02 + 5.678243935E+02, 3.308999939E+02 + 5.679070940E+02, 3.313500061E+02 + 5.679897929E+02, 3.292999878E+02 + 5.680724900E+02, 3.296499939E+02 + 5.681551855E+02, 3.285000000E+02 + 5.682378793E+02, 3.285499878E+02 + 5.683205713E+02, 3.272999878E+02 + 5.684032617E+02, 3.328999939E+02 + 5.684859503E+02, 3.280499878E+02 + 5.685686373E+02, 3.267999878E+02 + 5.686513226E+02, 3.253999939E+02 + 5.687340061E+02, 3.268999939E+02 + 5.688166880E+02, 3.271499939E+02 + 5.688993681E+02, 3.272999878E+02 + 5.689820466E+02, 3.271499939E+02 + 5.690647233E+02, 3.275499878E+02 + 5.691473983E+02, 3.274500122E+02 + 5.692300717E+02, 3.277500000E+02 + 5.693127433E+02, 3.289500122E+02 + 5.693954132E+02, 3.282000122E+02 + 5.694780814E+02, 3.285499878E+02 + 5.695607479E+02, 3.302999878E+02 + 5.696434127E+02, 3.282999878E+02 + 5.697260758E+02, 3.292000122E+02 + 5.698087371E+02, 3.271499939E+02 + 5.698913968E+02, 3.300499878E+02 + 5.699740547E+02, 3.278500061E+02 + 5.700567109E+02, 3.290000000E+02 + 5.701393654E+02, 3.267500000E+02 + 5.702220182E+02, 3.312500000E+02 + 5.703046693E+02, 3.315499878E+02 + 5.703873187E+02, 3.300499878E+02 + 5.704699663E+02, 3.310499878E+02 + 5.705526123E+02, 3.317000122E+02 + 5.706352565E+02, 3.335000000E+02 + 5.707178990E+02, 3.318999939E+02 + 5.708005397E+02, 3.321000061E+02 + 5.708831788E+02, 3.320499878E+02 + 5.709658161E+02, 3.317000122E+02 + 5.710484517E+02, 3.327999878E+02 + 5.711310856E+02, 3.327000122E+02 + 5.712137177E+02, 3.330499878E+02 + 5.712963482E+02, 3.360499878E+02 + 5.713789769E+02, 3.365000000E+02 + 5.714616039E+02, 3.373999939E+02 + 5.715442291E+02, 3.333999939E+02 + 5.716268526E+02, 3.363500061E+02 + 5.717094744E+02, 3.341000061E+02 + 5.717920945E+02, 3.307500000E+02 + 5.718747129E+02, 3.347500000E+02 + 5.719573295E+02, 3.353999939E+02 + 5.720399443E+02, 3.366499939E+02 + 5.721225575E+02, 3.355499878E+02 + 5.722051689E+02, 3.358500061E+02 + 5.722877786E+02, 3.387000122E+02 + 5.723703865E+02, 3.363500061E+02 + 5.724529928E+02, 3.382500000E+02 + 5.725355972E+02, 3.359500122E+02 + 5.726182000E+02, 3.351000061E+02 + 5.727008010E+02, 3.366499939E+02 + 5.727834003E+02, 3.365499878E+02 + 5.728659978E+02, 3.344500122E+02 + 5.729485936E+02, 3.372000122E+02 + 5.730311876E+02, 3.375499878E+02 + 5.731137800E+02, 3.360000000E+02 + 5.731963705E+02, 3.360499878E+02 + 5.732789594E+02, 3.361499939E+02 + 5.733615465E+02, 3.365000000E+02 + 5.734441318E+02, 3.363999939E+02 + 5.735267154E+02, 3.350000000E+02 + 5.736092973E+02, 3.372000122E+02 + 5.736918774E+02, 3.358999939E+02 + 5.737744557E+02, 3.354500122E+02 + 5.738570324E+02, 3.328999939E+02 + 5.739396072E+02, 3.344500122E+02 + 5.740221804E+02, 3.350499878E+02 + 5.741047517E+02, 3.365499878E+02 + 5.741873214E+02, 3.328500061E+02 + 5.742698892E+02, 3.320000000E+02 + 5.743524554E+02, 3.318999939E+02 + 5.744350197E+02, 3.333999939E+02 + 5.745175824E+02, 3.322000122E+02 + 5.746001432E+02, 3.281000061E+02 + 5.746827023E+02, 3.302999878E+02 + 5.747652597E+02, 3.292500000E+02 + 5.748478153E+02, 3.289500122E+02 + 5.749303692E+02, 3.255000000E+02 + 5.750129213E+02, 3.286000061E+02 + 5.750954716E+02, 3.265000000E+02 + 5.751780202E+02, 3.298500061E+02 + 5.752605670E+02, 3.304500122E+02 + 5.753431120E+02, 3.278500061E+02 + 5.754256553E+02, 3.247000122E+02 + 5.755081969E+02, 3.255499878E+02 + 5.755907367E+02, 3.267500000E+02 + 5.756732747E+02, 3.276499939E+02 + 5.757558109E+02, 3.277999878E+02 + 5.758383454E+02, 3.250499878E+02 + 5.759208781E+02, 3.248500061E+02 + 5.760034091E+02, 3.231000061E+02 + 5.760859383E+02, 3.262999878E+02 + 5.761684657E+02, 3.248500061E+02 + 5.762509914E+02, 3.242500000E+02 + 5.763335152E+02, 3.242500000E+02 + 5.764160374E+02, 3.268500061E+02 + 5.764985577E+02, 3.290499878E+02 + 5.765810763E+02, 3.283500061E+02 + 5.766635931E+02, 3.242500000E+02 + 5.767461081E+02, 3.246000061E+02 + 5.768286214E+02, 3.228500061E+02 + 5.769111329E+02, 3.232999878E+02 + 5.769936426E+02, 3.235499878E+02 + 5.770761506E+02, 3.240499878E+02 + 5.771586567E+02, 3.224500122E+02 + 5.772411611E+02, 3.217000122E+02 + 5.773236637E+02, 3.200000000E+02 + 5.774061646E+02, 3.186000061E+02 + 5.774886636E+02, 3.192500000E+02 + 5.775711609E+02, 3.166000061E+02 + 5.776536564E+02, 3.166000061E+02 + 5.777361502E+02, 3.166499939E+02 + 5.778186421E+02, 3.162000122E+02 + 5.779011323E+02, 3.179500122E+02 + 5.779836206E+02, 3.178999939E+02 + 5.780661072E+02, 3.159500122E+02 + 5.781485920E+02, 3.136000061E+02 + 5.782310751E+02, 3.132000122E+02 + 5.783135563E+02, 3.132999878E+02 + 5.783960358E+02, 3.147000122E+02 + 5.784785134E+02, 3.136499939E+02 + 5.785609893E+02, 3.137000122E+02 + 5.786434634E+02, 3.120000000E+02 + 5.787259357E+02, 3.122500000E+02 + 5.788084062E+02, 3.126000061E+02 + 5.788908749E+02, 3.099500122E+02 + 5.789733419E+02, 3.110000000E+02 + 5.790558070E+02, 3.113999939E+02 + 5.791382704E+02, 3.113999939E+02 + 5.792207319E+02, 3.097500000E+02 + 5.793031917E+02, 3.093999939E+02 + 5.793856497E+02, 3.112000122E+02 + 5.794681058E+02, 3.132000122E+02 + 5.795505602E+02, 3.132000122E+02 + 5.796330128E+02, 3.128999939E+02 + 5.797154636E+02, 3.105499878E+02 + 5.797979126E+02, 3.116000061E+02 + 5.798803597E+02, 3.101499939E+02 + 5.799628051E+02, 3.103500061E+02 + 5.800452487E+02, 3.109500122E+02 + 5.801276905E+02, 3.141499939E+02 + 5.802101305E+02, 3.142999878E+02 + 5.802925687E+02, 3.135499878E+02 + 5.803750051E+02, 3.142999878E+02 + 5.804574396E+02, 3.131499939E+02 + 5.805398724E+02, 3.138999939E+02 + 5.806223034E+02, 3.143999939E+02 + 5.807047325E+02, 3.151000061E+02 + 5.807871599E+02, 3.142500000E+02 + 5.808695854E+02, 3.145000000E+02 + 5.809520092E+02, 3.159500122E+02 + 5.810344311E+02, 3.166499939E+02 + 5.811168512E+02, 3.163999939E+02 + 5.811992695E+02, 3.147500000E+02 + 5.812816860E+02, 3.157000122E+02 + 5.813641007E+02, 3.176000061E+02 + 5.814465136E+02, 3.167000122E+02 + 5.815289246E+02, 3.152000122E+02 + 5.816113339E+02, 3.172500000E+02 + 5.816937413E+02, 3.162999878E+02 + 5.817761469E+02, 3.158999939E+02 + 5.818585508E+02, 3.146499939E+02 + 5.819409527E+02, 3.152999878E+02 + 5.820233529E+02, 3.149500122E+02 + 5.821057513E+02, 3.141000061E+02 + 5.821881478E+02, 3.147000122E+02 + 5.822705425E+02, 3.141499939E+02 + 5.823529354E+02, 3.158999939E+02 + 5.824353265E+02, 3.143999939E+02 + 5.825177157E+02, 3.095000000E+02 + 5.826001031E+02, 3.091000061E+02 + 5.826824888E+02, 3.098999939E+02 + 5.827648725E+02, 3.078999939E+02 + 5.828472545E+02, 3.072500000E+02 + 5.829296346E+02, 3.053999939E+02 + 5.830120129E+02, 3.026499939E+02 + 5.830943894E+02, 3.031000061E+02 + 5.831767641E+02, 3.025000000E+02 + 5.832591369E+02, 3.017999878E+02 + 5.833415079E+02, 3.025000000E+02 + 5.834238771E+02, 3.009500122E+02 + 5.835062444E+02, 3.010499878E+02 + 5.835886099E+02, 2.996000061E+02 + 5.836709736E+02, 2.970000000E+02 + 5.837533354E+02, 2.976000061E+02 + 5.838356954E+02, 2.972999878E+02 + 5.839180536E+02, 2.993500061E+02 + 5.840004099E+02, 2.982500000E+02 + 5.840827645E+02, 2.967999878E+02 + 5.841651171E+02, 2.969500122E+02 + 5.842474680E+02, 2.952500000E+02 + 5.843298170E+02, 2.957500000E+02 + 5.844121641E+02, 2.957500000E+02 + 5.844945094E+02, 2.953500061E+02 + 5.845768529E+02, 2.970000000E+02 + 5.846591946E+02, 2.943500061E+02 + 5.847415344E+02, 2.940499878E+02 + 5.848238723E+02, 2.933500061E+02 + 5.849062084E+02, 2.927999878E+02 + 5.849885427E+02, 2.927500000E+02 + 5.850708751E+02, 2.958999939E+02 + 5.851532057E+02, 2.946000061E+02 + 5.852355345E+02, 2.930499878E+02 + 5.853178614E+02, 2.936000061E+02 + 5.854001864E+02, 2.924500122E+02 + 5.854825096E+02, 2.922500000E+02 + 5.855648310E+02, 2.921000061E+02 + 5.856471505E+02, 2.923999939E+02 + 5.857294681E+02, 2.914500122E+02 + 5.858117839E+02, 2.913999939E+02 + 5.858940979E+02, 2.916000061E+02 + 5.859764100E+02, 2.905000000E+02 + 5.860587203E+02, 2.908999939E+02 + 5.861410287E+02, 2.913999939E+02 + 5.862233352E+02, 2.922999878E+02 + 5.863056399E+02, 2.927500000E+02 + 5.863879427E+02, 2.906000061E+02 + 5.864702437E+02, 2.911000061E+02 + 5.865525429E+02, 2.917500000E+02 + 5.866348401E+02, 2.916499939E+02 + 5.867171355E+02, 2.906000061E+02 + 5.867994291E+02, 2.888999939E+02 + 5.868817208E+02, 2.897000122E+02 + 5.869640106E+02, 2.905499878E+02 + 5.870462986E+02, 2.910000000E+02 + 5.871285847E+02, 2.906000061E+02 + 5.872108690E+02, 2.905499878E+02 + 5.872931513E+02, 2.897000122E+02 + 5.873754319E+02, 2.886000061E+02 + 5.874577105E+02, 2.895499878E+02 + 5.875399873E+02, 2.880000000E+02 + 5.876222622E+02, 2.894500122E+02 + 5.877045353E+02, 2.902999878E+02 + 5.877868065E+02, 2.902999878E+02 + 5.878690758E+02, 2.888500061E+02 + 5.879513433E+02, 2.893999939E+02 + 5.880336089E+02, 2.885499878E+02 + 5.881158726E+02, 2.887999878E+02 + 5.881981345E+02, 2.893500061E+02 + 5.882803944E+02, 2.901499939E+02 + 5.883626526E+02, 2.876499939E+02 + 5.884449088E+02, 2.883999939E+02 + 5.885271632E+02, 2.877999878E+02 + 5.886094156E+02, 2.887000122E+02 + 5.886916663E+02, 2.881499939E+02 + 5.887739150E+02, 2.865000000E+02 + 5.888561619E+02, 2.891499939E+02 + 5.889384068E+02, 2.880000000E+02 + 5.890206499E+02, 2.888999939E+02 + 5.891028912E+02, 2.883500061E+02 + 5.891851305E+02, 2.888999939E+02 + 5.892673680E+02, 2.886000061E+02 + 5.893496036E+02, 2.873500061E+02 + 5.894318373E+02, 2.877000122E+02 + 5.895140691E+02, 2.876000061E+02 + 5.895962991E+02, 2.878500061E+02 + 5.896785271E+02, 2.868999939E+02 + 5.897607533E+02, 2.887500000E+02 + 5.898429776E+02, 2.877000122E+02 + 5.899252000E+02, 2.871000061E+02 + 5.900074205E+02, 2.873500061E+02 + 5.900896392E+02, 2.881000061E+02 + 5.901718559E+02, 2.872500000E+02 + 5.902540708E+02, 2.873999939E+02 + 5.903362838E+02, 2.863500061E+02 + 5.904184948E+02, 2.865499878E+02 + 5.905007040E+02, 2.871499939E+02 + 5.905829113E+02, 2.875499878E+02 + 5.906651167E+02, 2.860000000E+02 + 5.907473203E+02, 2.870000000E+02 + 5.908295219E+02, 2.860000000E+02 + 5.909117216E+02, 2.867999878E+02 + 5.909939194E+02, 2.867000122E+02 + 5.910761154E+02, 2.858999939E+02 + 5.911583094E+02, 2.856499939E+02 + 5.912405016E+02, 2.857000122E+02 + 5.913226918E+02, 2.866499939E+02 + 5.914048802E+02, 2.867999878E+02 + 5.914870666E+02, 2.862000122E+02 + 5.915692512E+02, 2.860000000E+02 + 5.916514338E+02, 2.855499878E+02 + 5.917336146E+02, 2.860000000E+02 + 5.918157934E+02, 2.863999939E+02 + 5.918979704E+02, 2.862000122E+02 + 5.919801454E+02, 2.866499939E+02 + 5.920623186E+02, 2.857999878E+02 + 5.921444898E+02, 2.862999878E+02 + 5.922266592E+02, 2.866499939E+02 + 5.923088266E+02, 2.872500000E+02 + 5.923909921E+02, 2.863999939E+02 + 5.924731557E+02, 2.868500061E+02 + 5.925553174E+02, 2.856000061E+02 + 5.926374772E+02, 2.859500122E+02 + 5.927196351E+02, 2.852999878E+02 + 5.928017911E+02, 2.857500000E+02 + 5.928839451E+02, 2.850000000E+02 + 5.929660973E+02, 2.863999939E+02 + 5.930482475E+02, 2.853999939E+02 + 5.931303959E+02, 2.861499939E+02 + 5.932125423E+02, 2.848500061E+02 + 5.932946868E+02, 2.857500000E+02 + 5.933768294E+02, 2.852000122E+02 + 5.934589701E+02, 2.855000000E+02 + 5.935411088E+02, 2.858500061E+02 + 5.936232457E+02, 2.841000061E+02 + 5.937053806E+02, 2.842500000E+02 + 5.937875136E+02, 2.847500000E+02 + 5.938696447E+02, 2.848500061E+02 + 5.939517738E+02, 2.856499939E+02 + 5.940339011E+02, 2.854500122E+02 + 5.941160264E+02, 2.850000000E+02 + 5.941981498E+02, 2.853500061E+02 + 5.942802713E+02, 2.846000061E+02 + 5.943623908E+02, 2.855000000E+02 + 5.944445085E+02, 2.847500000E+02 + 5.945266242E+02, 2.845000000E+02 + 5.946087379E+02, 2.843999939E+02 + 5.946908498E+02, 2.842999878E+02 + 5.947729597E+02, 2.852500000E+02 + 5.948550677E+02, 2.858500061E+02 + 5.949371738E+02, 2.846499939E+02 + 5.950192779E+02, 2.834500122E+02 + 5.951013801E+02, 2.842999878E+02 + 5.951834804E+02, 2.843500061E+02 + 5.952655788E+02, 2.845499878E+02 + 5.953476752E+02, 2.838500061E+02 + 5.954297697E+02, 2.831000061E+02 + 5.955118622E+02, 2.848500061E+02 + 5.955939528E+02, 2.836499939E+02 + 5.956760415E+02, 2.837000122E+02 + 5.957581283E+02, 2.838999939E+02 + 5.958402131E+02, 2.841499939E+02 + 5.959222960E+02, 2.831499939E+02 + 5.960043769E+02, 2.827500000E+02 + 5.960864559E+02, 2.830000000E+02 + 5.961685330E+02, 2.846000061E+02 + 5.962506081E+02, 2.838500061E+02 + 5.963326813E+02, 2.831000061E+02 + 5.964147525E+02, 2.837999878E+02 + 5.964968218E+02, 2.841000061E+02 + 5.965788892E+02, 2.833500061E+02 + 5.966609546E+02, 2.825000000E+02 + 5.967430180E+02, 2.832999878E+02 + 5.968250796E+02, 2.835499878E+02 + 5.969071391E+02, 2.832500000E+02 + 5.969891968E+02, 2.840000000E+02 + 5.970712525E+02, 2.827000122E+02 + 5.971533062E+02, 2.830499878E+02 + 5.972353580E+02, 2.839500122E+02 + 5.973174078E+02, 2.828500061E+02 + 5.973994557E+02, 2.826499939E+02 + 5.974815017E+02, 2.827500000E+02 + 5.975635457E+02, 2.832500000E+02 + 5.976455877E+02, 2.838999939E+02 + 5.977276278E+02, 2.843999939E+02 + 5.978096659E+02, 2.833500061E+02 + 5.978917021E+02, 2.838500061E+02 + 5.979737363E+02, 2.832000122E+02 + 5.980557686E+02, 2.837000122E+02 + 5.981377989E+02, 2.820499878E+02 + 5.982198273E+02, 2.840000000E+02 + 5.983018537E+02, 2.836000061E+02 + 5.983838781E+02, 2.828999939E+02 + 5.984659006E+02, 2.841000061E+02 + 5.985479212E+02, 2.831499939E+02 + 5.986299397E+02, 2.822999878E+02 + 5.987119563E+02, 2.817500000E+02 + 5.987939710E+02, 2.819500122E+02 + 5.988759837E+02, 2.826499939E+02 + 5.989579944E+02, 2.817000122E+02 + 5.990400032E+02, 2.828500061E+02 + 5.991220099E+02, 2.817999878E+02 + 5.992040148E+02, 2.828999939E+02 + 5.992860176E+02, 2.830000000E+02 + 5.993680185E+02, 2.823500061E+02 + 5.994500175E+02, 2.824500122E+02 + 5.995320144E+02, 2.820499878E+02 + 5.996140094E+02, 2.822000122E+02 + 5.996960025E+02, 2.819500122E+02 + 5.997779935E+02, 2.827000122E+02 + 5.998599826E+02, 2.823500061E+02 + 5.999419697E+02, 2.827999878E+02 + 6.000239548E+02, 2.822500000E+02 + 6.001059380E+02, 2.825000000E+02 + 6.001879192E+02, 2.827999878E+02 + 6.002698984E+02, 2.816000061E+02 + 6.003518757E+02, 2.811000061E+02 + 6.004338510E+02, 2.820499878E+02 + 6.005158243E+02, 2.825499878E+02 + 6.005977956E+02, 2.833999939E+02 + 6.006797649E+02, 2.824500122E+02 + 6.007617323E+02, 2.818500061E+02 + 6.008436977E+02, 2.808500061E+02 + 6.009256611E+02, 2.819500122E+02 + 6.010076225E+02, 2.820000000E+02 + 6.010895819E+02, 2.817500000E+02 + 6.011715394E+02, 2.812000122E+02 + 6.012534949E+02, 2.823999939E+02 + 6.013354484E+02, 2.822999878E+02 + 6.014173999E+02, 2.826499939E+02 + 6.014993494E+02, 2.820499878E+02 + 6.015812970E+02, 2.817500000E+02 + 6.016632425E+02, 2.822500000E+02 + 6.017451861E+02, 2.816499939E+02 + 6.018271277E+02, 2.811000061E+02 + 6.019090673E+02, 2.811000061E+02 + 6.019910049E+02, 2.817000122E+02 + 6.020729405E+02, 2.820499878E+02 + 6.021548741E+02, 2.820499878E+02 + 6.022368058E+02, 2.826000061E+02 + 6.023187354E+02, 2.822000122E+02 + 6.024006631E+02, 2.812999878E+02 + 6.024825887E+02, 2.823500061E+02 + 6.025645124E+02, 2.816000061E+02 + 6.026464341E+02, 2.813500061E+02 + 6.027283538E+02, 2.810000000E+02 + 6.028102714E+02, 2.815000000E+02 + 6.028921871E+02, 2.817000122E+02 + 6.029741008E+02, 2.810499878E+02 + 6.030560125E+02, 2.810499878E+02 + 6.031379222E+02, 2.816000061E+02 + 6.032198299E+02, 2.811000061E+02 + 6.033017356E+02, 2.810000000E+02 + 6.033836393E+02, 2.813999939E+02 + 6.034655410E+02, 2.817500000E+02 + 6.035474407E+02, 2.813999939E+02 + 6.036293384E+02, 2.803999939E+02 + 6.037112341E+02, 2.803999939E+02 + 6.037931277E+02, 2.815499878E+02 + 6.038750194E+02, 2.811000061E+02 + 6.039569091E+02, 2.805000000E+02 + 6.040387968E+02, 2.808500061E+02 + 6.041206824E+02, 2.805499878E+02 + 6.042025661E+02, 2.817500000E+02 + 6.042844477E+02, 2.808999939E+02 + 6.043663273E+02, 2.811000061E+02 + 6.044482050E+02, 2.804500122E+02 + 6.045300806E+02, 2.803500061E+02 + 6.046119542E+02, 2.807000122E+02 + 6.046938258E+02, 2.804500122E+02 + 6.047756954E+02, 2.797500000E+02 + 6.048575629E+02, 2.799500122E+02 + 6.049394285E+02, 2.802000122E+02 + 6.050212920E+02, 2.811499939E+02 + 6.051031535E+02, 2.812000122E+02 + 6.051850130E+02, 2.810499878E+02 + 6.052668705E+02, 2.812500000E+02 + 6.053487260E+02, 2.799500122E+02 + 6.054305795E+02, 2.806499939E+02 + 6.055124309E+02, 2.797999878E+02 + 6.055942803E+02, 2.802999878E+02 + 6.056761277E+02, 2.798500061E+02 + 6.057579731E+02, 2.800000000E+02 + 6.058398164E+02, 2.803500061E+02 + 6.059216578E+02, 2.801000061E+02 + 6.060034971E+02, 2.815000000E+02 + 6.060853344E+02, 2.803500061E+02 + 6.061671696E+02, 2.810499878E+02 + 6.062490029E+02, 2.797000122E+02 + 6.063308341E+02, 2.800000000E+02 + 6.064126633E+02, 2.794500122E+02 + 6.064944904E+02, 2.801000061E+02 + 6.065763156E+02, 2.807999878E+02 + 6.066581387E+02, 2.798999939E+02 + 6.067399597E+02, 2.802999878E+02 + 6.068217788E+02, 2.802000122E+02 + 6.069035958E+02, 2.802000122E+02 + 6.069854108E+02, 2.813999939E+02 + 6.070672237E+02, 2.795499878E+02 + 6.071490346E+02, 2.804500122E+02 + 6.072308435E+02, 2.800499878E+02 + 6.073126504E+02, 2.807500000E+02 + 6.073944552E+02, 2.816499939E+02 + 6.074762580E+02, 2.844500122E+02 + 6.075580587E+02, 2.846000061E+02 + 6.076398574E+02, 2.851499939E+02 + 6.077216541E+02, 2.823999939E+02 + 6.078034487E+02, 2.813999939E+02 + 6.078852413E+02, 2.807999878E+02 + 6.079670319E+02, 2.805499878E+02 + 6.080488204E+02, 2.806499939E+02 + 6.081306069E+02, 2.797999878E+02 + 6.082123913E+02, 2.800000000E+02 + 6.082941737E+02, 2.800000000E+02 + 6.083759540E+02, 2.791499939E+02 + 6.084577323E+02, 2.807000122E+02 + 6.085395086E+02, 2.801499939E+02 + 6.086212828E+02, 2.802000122E+02 + 6.087030550E+02, 2.793999939E+02 + 6.087848251E+02, 2.792500000E+02 + 6.088665931E+02, 2.797500000E+02 + 6.089483592E+02, 2.805499878E+02 + 6.090301232E+02, 2.792000122E+02 + 6.091118851E+02, 2.797000122E+02 + 6.091936450E+02, 2.791499939E+02 + 6.092754028E+02, 2.791499939E+02 + 6.093571586E+02, 2.795000000E+02 + 6.094389123E+02, 2.791000061E+02 + 6.095206640E+02, 2.799500122E+02 + 6.096024136E+02, 2.792500000E+02 + 6.096841611E+02, 2.802000122E+02 + 6.097659066E+02, 2.792999878E+02 + 6.098476501E+02, 2.785000000E+02 + 6.099293915E+02, 2.795499878E+02 + 6.100111308E+02, 2.801000061E+02 + 6.100928681E+02, 2.785000000E+02 + 6.101746033E+02, 2.792999878E+02 + 6.102563365E+02, 2.795000000E+02 + 6.103380676E+02, 2.792999878E+02 + 6.104197967E+02, 2.798999939E+02 + 6.105015236E+02, 2.799500122E+02 + 6.105832486E+02, 2.800499878E+02 + 6.106649714E+02, 2.788999939E+02 + 6.107466922E+02, 2.788999939E+02 + 6.108284109E+02, 2.797500000E+02 + 6.109101276E+02, 2.800499878E+02 + 6.109918422E+02, 2.793999939E+02 + 6.110735548E+02, 2.793500061E+02 + 6.111552652E+02, 2.789500122E+02 + 6.112369736E+02, 2.795499878E+02 + 6.113186800E+02, 2.797500000E+02 + 6.114003842E+02, 2.800499878E+02 + 6.114820864E+02, 2.790000000E+02 + 6.115637866E+02, 2.795000000E+02 + 6.116454846E+02, 2.798500061E+02 + 6.117271806E+02, 2.796499939E+02 + 6.118088745E+02, 2.800000000E+02 + 6.118905664E+02, 2.794500122E+02 + 6.119722561E+02, 2.803500061E+02 + 6.120539438E+02, 2.785000000E+02 + 6.121356294E+02, 2.791499939E+02 + 6.122173130E+02, 2.788500061E+02 + 6.122989944E+02, 2.791000061E+02 + 6.123806738E+02, 2.787999878E+02 + 6.124623511E+02, 2.806499939E+02 + 6.125440264E+02, 2.795000000E+02 + 6.126256995E+02, 2.797999878E+02 + 6.127073706E+02, 2.796499939E+02 + 6.127890396E+02, 2.792999878E+02 + 6.128707065E+02, 2.785499878E+02 + 6.129523713E+02, 2.777500000E+02 + 6.130340341E+02, 2.787999878E+02 + 6.131156948E+02, 2.789500122E+02 + 6.131973533E+02, 2.790499878E+02 + 6.132790098E+02, 2.788999939E+02 + 6.133606642E+02, 2.787000122E+02 + 6.134423166E+02, 2.785499878E+02 + 6.135239668E+02, 2.788500061E+02 + 6.136056150E+02, 2.792999878E+02 + 6.136872610E+02, 2.793999939E+02 + 6.137689050E+02, 2.788500061E+02 + 6.138505469E+02, 2.787000122E+02 + 6.139321867E+02, 2.790499878E+02 + 6.140138244E+02, 2.792500000E+02 + 6.140954600E+02, 2.792500000E+02 + 6.141770935E+02, 2.794500122E+02 + 6.142587249E+02, 2.792000122E+02 + 6.143403543E+02, 2.801499939E+02 + 6.144219815E+02, 2.797500000E+02 + 6.145036067E+02, 2.787500000E+02 + 6.145852297E+02, 2.786499939E+02 + 6.146668507E+02, 2.790499878E+02 + 6.147484695E+02, 2.786000061E+02 + 6.148300863E+02, 2.794500122E+02 + 6.149117009E+02, 2.800499878E+02 + 6.149933135E+02, 2.790499878E+02 + 6.150749240E+02, 2.788999939E+02 + 6.151565323E+02, 2.787000122E+02 + 6.152381386E+02, 2.784500122E+02 + 6.153197427E+02, 2.787000122E+02 + 6.154013448E+02, 2.793500061E+02 + 6.154829447E+02, 2.793500061E+02 + 6.155645426E+02, 2.791499939E+02 + 6.156461383E+02, 2.782999878E+02 + 6.157277320E+02, 2.791000061E+02 + 6.158093235E+02, 2.786000061E+02 + 6.158909129E+02, 2.782000122E+02 + 6.159725003E+02, 2.782000122E+02 + 6.160540855E+02, 2.791499939E+02 + 6.161356686E+02, 2.784500122E+02 + 6.162172496E+02, 2.795499878E+02 + 6.162988284E+02, 2.785499878E+02 + 6.163804052E+02, 2.786499939E+02 + 6.164619799E+02, 2.792999878E+02 + 6.165435524E+02, 2.783999939E+02 + 6.166251229E+02, 2.790000000E+02 + 6.167066912E+02, 2.781000061E+02 + 6.167882574E+02, 2.781000061E+02 + 6.168698215E+02, 2.783999939E+02 + 6.169513834E+02, 2.786000061E+02 + 6.170329433E+02, 2.786499939E+02 + 6.171145011E+02, 2.777500000E+02 + 6.171960567E+02, 2.785000000E+02 + 6.172776102E+02, 2.791499939E+02 + 6.173591616E+02, 2.792500000E+02 + 6.174407108E+02, 2.792999878E+02 + 6.175222580E+02, 2.795499878E+02 + 6.176038030E+02, 2.792500000E+02 + 6.176853459E+02, 2.787500000E+02 + 6.177668867E+02, 2.788999939E+02 + 6.178484254E+02, 2.786499939E+02 + 6.179299619E+02, 2.791000061E+02 + 6.180114963E+02, 2.785499878E+02 + 6.180930286E+02, 2.786000061E+02 + 6.181745587E+02, 2.797999878E+02 + 6.182560868E+02, 2.787500000E+02 + 6.183376127E+02, 2.786000061E+02 + 6.184191365E+02, 2.784500122E+02 + 6.185006581E+02, 2.788500061E+02 + 6.185821776E+02, 2.783999939E+02 + 6.186636950E+02, 2.798999939E+02 + 6.187452103E+02, 2.779500122E+02 + 6.188267234E+02, 2.784500122E+02 + 6.189082344E+02, 2.783999939E+02 + 6.189897433E+02, 2.786000061E+02 + 6.190712500E+02, 2.787999878E+02 + 6.191527546E+02, 2.787500000E+02 + 6.192342570E+02, 2.783999939E+02 + 6.193157574E+02, 2.785000000E+02 + 6.193972556E+02, 2.784500122E+02 + 6.194787516E+02, 2.797000122E+02 + 6.195602455E+02, 2.781499939E+02 + 6.196417373E+02, 2.792000122E+02 + 6.197232269E+02, 2.788500061E+02 + 6.198047144E+02, 2.773500061E+02 + 6.198861998E+02, 2.779500122E+02 + 6.199676830E+02, 2.774500122E+02 + 6.200491641E+02, 2.775499878E+02 + 6.201306430E+02, 2.770499878E+02 + 6.202121198E+02, 2.782999878E+02 + 6.202935944E+02, 2.776000061E+02 + 6.203750669E+02, 2.782500000E+02 + 6.204565373E+02, 2.776499939E+02 + 6.205380055E+02, 2.774500122E+02 + 6.206194715E+02, 2.772999878E+02 + 6.207009355E+02, 2.777000122E+02 + 6.207823972E+02, 2.781499939E+02 + 6.208638568E+02, 2.772999878E+02 + 6.209453143E+02, 2.777000122E+02 + 6.210267696E+02, 2.780000000E+02 + 6.211082228E+02, 2.774500122E+02 + 6.211896738E+02, 2.767000122E+02 + 6.212711227E+02, 2.768999939E+02 + 6.213525694E+02, 2.759500122E+02 + 6.214340139E+02, 2.763999939E+02 + 6.215154563E+02, 2.772500000E+02 + 6.215968966E+02, 2.774500122E+02 + 6.216783347E+02, 2.775499878E+02 + 6.217597706E+02, 2.763500061E+02 + 6.218412044E+02, 2.772999878E+02 + 6.219226360E+02, 2.773500061E+02 + 6.220040655E+02, 2.771000061E+02 + 6.220854928E+02, 2.768999939E+02 + 6.221669179E+02, 2.774500122E+02 + 6.222483409E+02, 2.771000061E+02 + 6.223297618E+02, 2.763999939E+02 + 6.224111804E+02, 2.772500000E+02 + 6.224925969E+02, 2.765000000E+02 + 6.225740113E+02, 2.776000061E+02 + 6.226554234E+02, 2.774500122E+02 + 6.227368334E+02, 2.763999939E+02 + 6.228182413E+02, 2.767000122E+02 + 6.228996470E+02, 2.766000061E+02 + 6.229810505E+02, 2.773999939E+02 + 6.230624518E+02, 2.762000122E+02 + 6.231438510E+02, 2.771000061E+02 + 6.232252480E+02, 2.765000000E+02 + 6.233066429E+02, 2.777500000E+02 + 6.233880355E+02, 2.761499939E+02 + 6.234694260E+02, 2.770499878E+02 + 6.235508143E+02, 2.770499878E+02 + 6.236322005E+02, 2.770499878E+02 + 6.237135845E+02, 2.768999939E+02 + 6.237949663E+02, 2.772000122E+02 + 6.238763459E+02, 2.777000122E+02 + 6.239577234E+02, 2.769500122E+02 + 6.240390987E+02, 2.775000000E+02 + 6.241204718E+02, 2.771000061E+02 + 6.242018427E+02, 2.772500000E+02 + 6.242832115E+02, 2.755499878E+02 + 6.243645781E+02, 2.768999939E+02 + 6.244459425E+02, 2.772000122E+02 + 6.245273047E+02, 2.783500061E+02 + 6.246086647E+02, 2.766000061E+02 + 6.246900226E+02, 2.777500000E+02 + 6.247713783E+02, 2.766000061E+02 + 6.248527318E+02, 2.771499939E+02 + 6.249340831E+02, 2.754500122E+02 + 6.250154322E+02, 2.773999939E+02 + 6.250967791E+02, 2.771000061E+02 + 6.251781239E+02, 2.767999878E+02 + 6.252594665E+02, 2.772999878E+02 + 6.253408069E+02, 2.768999939E+02 + 6.254221451E+02, 2.767000122E+02 + 6.255034811E+02, 2.762999878E+02 + 6.255848149E+02, 2.768999939E+02 + 6.256661466E+02, 2.772000122E+02 + 6.257474760E+02, 2.770000000E+02 + 6.258288033E+02, 2.772500000E+02 + 6.259101283E+02, 2.767500000E+02 + 6.259914512E+02, 2.761000061E+02 + 6.260727719E+02, 2.764500122E+02 + 6.261540904E+02, 2.774500122E+02 + 6.262354067E+02, 2.773999939E+02 + 6.263167208E+02, 2.768500061E+02 + 6.263980327E+02, 2.760000000E+02 + 6.264793424E+02, 2.770499878E+02 + 6.265606499E+02, 2.778500061E+02 + 6.266419552E+02, 2.774500122E+02 + 6.267232583E+02, 2.776499939E+02 + 6.268045592E+02, 2.763500061E+02 + 6.268858580E+02, 2.773500061E+02 + 6.269671545E+02, 2.766000061E+02 + 6.270484488E+02, 2.775000000E+02 + 6.271297409E+02, 2.766000061E+02 + 6.272110308E+02, 2.767999878E+02 + 6.272923186E+02, 2.765000000E+02 + 6.273736041E+02, 2.767999878E+02 + 6.274548874E+02, 2.773999939E+02 + 6.275361685E+02, 2.773999939E+02 + 6.276174474E+02, 2.768500061E+02 + 6.276987241E+02, 2.762999878E+02 + 6.277799985E+02, 2.762500000E+02 + 6.278612708E+02, 2.757500000E+02 + 6.279425409E+02, 2.767500000E+02 + 6.280238088E+02, 2.767999878E+02 + 6.281050744E+02, 2.763999939E+02 + 6.281863378E+02, 2.763500061E+02 + 6.282675991E+02, 2.771499939E+02 + 6.283488581E+02, 2.761499939E+02 + 6.284301149E+02, 2.761499939E+02 + 6.285113695E+02, 2.766499939E+02 + 6.285926219E+02, 2.767500000E+02 + 6.286738720E+02, 2.769500122E+02 + 6.287551200E+02, 2.761000061E+02 + 6.288363657E+02, 2.763500061E+02 + 6.289176092E+02, 2.772999878E+02 + 6.289988505E+02, 2.763999939E+02 + 6.290800896E+02, 2.773999939E+02 + 6.291613265E+02, 2.763500061E+02 + 6.292425611E+02, 2.768500061E+02 + 6.293237936E+02, 2.767999878E+02 + 6.294050238E+02, 2.770499878E+02 + 6.294862518E+02, 2.767999878E+02 + 6.295674775E+02, 2.762999878E+02 + 6.296487011E+02, 2.762500000E+02 + 6.297299224E+02, 2.767000122E+02 + 6.298111415E+02, 2.776499939E+02 + 6.298923584E+02, 2.763500061E+02 + 6.299735730E+02, 2.775000000E+02 + 6.300547854E+02, 2.772000122E+02 + 6.301359956E+02, 2.763999939E+02 + 6.302172036E+02, 2.765000000E+02 + 6.302984093E+02, 2.776000061E+02 + 6.303796128E+02, 2.767500000E+02 + 6.304608141E+02, 2.775000000E+02 + 6.305420132E+02, 2.775000000E+02 + 6.306232100E+02, 2.766499939E+02 + 6.307044046E+02, 2.775000000E+02 + 6.307855969E+02, 2.768999939E+02 + 6.308667871E+02, 2.760499878E+02 + 6.309479750E+02, 2.767999878E+02 + 6.310291606E+02, 2.762999878E+02 + 6.311103440E+02, 2.757500000E+02 + 6.311915252E+02, 2.770000000E+02 + 6.312727042E+02, 2.768999939E+02 + 6.313538809E+02, 2.770499878E+02 + 6.314350554E+02, 2.763500061E+02 + 6.315162276E+02, 2.771499939E+02 + 6.315973976E+02, 2.755000000E+02 + 6.316785654E+02, 2.757500000E+02 + 6.317597309E+02, 2.767500000E+02 + 6.318408942E+02, 2.768999939E+02 + 6.319220552E+02, 2.760000000E+02 + 6.320032140E+02, 2.771000061E+02 + 6.320843706E+02, 2.766000061E+02 + 6.321655249E+02, 2.765000000E+02 + 6.322466770E+02, 2.756000061E+02 + 6.323278268E+02, 2.762500000E+02 + 6.324089744E+02, 2.760499878E+02 + 6.324901197E+02, 2.761499939E+02 + 6.325712628E+02, 2.757000122E+02 + 6.326524036E+02, 2.762000122E+02 + 6.327335422E+02, 2.754500122E+02 + 6.328146786E+02, 2.757999878E+02 + 6.328958127E+02, 2.765000000E+02 + 6.329769445E+02, 2.767000122E+02 + 6.330580741E+02, 2.760000000E+02 + 6.331392015E+02, 2.755000000E+02 + 6.332203265E+02, 2.758999939E+02 + 6.333014494E+02, 2.754500122E+02 + 6.333825700E+02, 2.761000061E+02 + 6.334636883E+02, 2.760000000E+02 + 6.335448044E+02, 2.767500000E+02 + 6.336259182E+02, 2.752999878E+02 + 6.337070297E+02, 2.766000061E+02 + 6.337881390E+02, 2.763999939E+02 + 6.338692461E+02, 2.765499878E+02 + 6.339503509E+02, 2.748999939E+02 + 6.340314534E+02, 2.767000122E+02 + 6.341125537E+02, 2.760499878E+02 + 6.341936517E+02, 2.770499878E+02 + 6.342747474E+02, 2.761000061E+02 + 6.343558409E+02, 2.761000061E+02 + 6.344369322E+02, 2.747999878E+02 + 6.345180211E+02, 2.765499878E+02 + 6.345991078E+02, 2.760499878E+02 + 6.346801922E+02, 2.766499939E+02 + 6.347612744E+02, 2.760000000E+02 + 6.348423543E+02, 2.760000000E+02 + 6.349234320E+02, 2.756499939E+02 + 6.350045073E+02, 2.757999878E+02 + 6.350855804E+02, 2.756000061E+02 + 6.351666513E+02, 2.765000000E+02 + 6.352477198E+02, 2.771499939E+02 + 6.353287861E+02, 2.752999878E+02 + 6.354098501E+02, 2.760000000E+02 + 6.354909119E+02, 2.752000122E+02 + 6.355719714E+02, 2.764500122E+02 + 6.356530286E+02, 2.766499939E+02 + 6.357340835E+02, 2.763999939E+02 + 6.358151362E+02, 2.761000061E+02 + 6.358961866E+02, 2.766499939E+02 + 6.359772347E+02, 2.757000122E+02 + 6.360582805E+02, 2.758500061E+02 + 6.361393241E+02, 2.757999878E+02 + 6.362203654E+02, 2.754500122E+02 + 6.363014044E+02, 2.762500000E+02 + 6.363824411E+02, 2.755499878E+02 + 6.364634756E+02, 2.763999939E+02 + 6.365445077E+02, 2.761499939E+02 + 6.366255376E+02, 2.755000000E+02 + 6.367065652E+02, 2.765499878E+02 + 6.367875905E+02, 2.759500122E+02 + 6.368686136E+02, 2.761499939E+02 + 6.369496344E+02, 2.758999939E+02 + 6.370306528E+02, 2.747999878E+02 + 6.371116690E+02, 2.758500061E+02 + 6.371926829E+02, 2.752999878E+02 + 6.372736945E+02, 2.760499878E+02 + 6.373547039E+02, 2.765499878E+02 + 6.374357109E+02, 2.756000061E+02 + 6.375167157E+02, 2.761000061E+02 + 6.375977182E+02, 2.757000122E+02 + 6.376787183E+02, 2.757000122E+02 + 6.377597162E+02, 2.757000122E+02 + 6.378407118E+02, 2.767500000E+02 + 6.379217051E+02, 2.755000000E+02 + 6.380026961E+02, 2.765499878E+02 + 6.380836849E+02, 2.756000061E+02 + 6.381646713E+02, 2.756000061E+02 + 6.382456554E+02, 2.758999939E+02 + 6.383266373E+02, 2.750499878E+02 + 6.384076168E+02, 2.752000122E+02 + 6.384885941E+02, 2.755000000E+02 + 6.385695690E+02, 2.755000000E+02 + 6.386505417E+02, 2.766499939E+02 + 6.387315120E+02, 2.757500000E+02 + 6.388124801E+02, 2.755000000E+02 + 6.388934459E+02, 2.758999939E+02 + 6.389744093E+02, 2.762000122E+02 + 6.390553705E+02, 2.752500000E+02 + 6.391363294E+02, 2.748999939E+02 + 6.392172859E+02, 2.755499878E+02 + 6.392982402E+02, 2.765000000E+02 + 6.393791921E+02, 2.746499939E+02 + 6.394601418E+02, 2.752999878E+02 + 6.395410891E+02, 2.753999939E+02 + 6.396220341E+02, 2.752999878E+02 + 6.397029769E+02, 2.755499878E+02 + 6.397839173E+02, 2.755499878E+02 + 6.398648554E+02, 2.763500061E+02 + 6.399457912E+02, 2.761000061E+02 + 6.400267247E+02, 2.757000122E+02 + 6.401076559E+02, 2.753999939E+02 + 6.401885848E+02, 2.760499878E+02 + 6.402695114E+02, 2.758500061E+02 + 6.403504356E+02, 2.755000000E+02 + 6.404313576E+02, 2.759500122E+02 + 6.405122772E+02, 2.751000061E+02 + 6.405931945E+02, 2.765000000E+02 + 6.406741095E+02, 2.762999878E+02 + 6.407550222E+02, 2.754500122E+02 + 6.408359326E+02, 2.769500122E+02 + 6.409168406E+02, 2.757500000E+02 + 6.409977464E+02, 2.761499939E+02 + 6.410786498E+02, 2.755499878E+02 + 6.411595509E+02, 2.761000061E+02 + 6.412404497E+02, 2.758999939E+02 + 6.413213462E+02, 2.762500000E+02 + 6.414022403E+02, 2.757000122E+02 + 6.414831322E+02, 2.757999878E+02 + 6.415640217E+02, 2.760000000E+02 + 6.416449088E+02, 2.762500000E+02 + 6.417257937E+02, 2.752999878E+02 + 6.418066762E+02, 2.754500122E+02 + 6.418875565E+02, 2.752000122E+02 + 6.419684343E+02, 2.757999878E+02 + 6.420493099E+02, 2.758500061E+02 + 6.421301831E+02, 2.753999939E+02 + 6.422110541E+02, 2.747999878E+02 + 6.422919226E+02, 2.751000061E+02 + 6.423727889E+02, 2.757500000E+02 + 6.424536528E+02, 2.757000122E+02 + 6.425345144E+02, 2.757999878E+02 + 6.426153737E+02, 2.758999939E+02 + 6.426962306E+02, 2.762999878E+02 + 6.427770852E+02, 2.750000000E+02 + 6.428579375E+02, 2.757999878E+02 + 6.429387874E+02, 2.757999878E+02 + 6.430196350E+02, 2.762500000E+02 + 6.431004803E+02, 2.751499939E+02 + 6.431813232E+02, 2.760499878E+02 + 6.432621639E+02, 2.766499939E+02 + 6.433430021E+02, 2.747999878E+02 + 6.434238380E+02, 2.760000000E+02 + 6.435046716E+02, 2.755000000E+02 + 6.435855029E+02, 2.747999878E+02 + 6.436663318E+02, 2.750000000E+02 + 6.437471584E+02, 2.753999939E+02 + 6.438279826E+02, 2.754500122E+02 + 6.439088045E+02, 2.750000000E+02 + 6.439896241E+02, 2.752999878E+02 + 6.440704413E+02, 2.757000122E+02 + 6.441512561E+02, 2.751499939E+02 + 6.442320686E+02, 2.751499939E+02 + 6.443128788E+02, 2.759500122E+02 + 6.443936867E+02, 2.752999878E+02 + 6.444744922E+02, 2.752500000E+02 + 6.445552953E+02, 2.754500122E+02 + 6.446360961E+02, 2.756000061E+02 + 6.447168945E+02, 2.749500122E+02 + 6.447976906E+02, 2.758500061E+02 + 6.448784844E+02, 2.752500000E+02 + 6.449592758E+02, 2.752500000E+02 + 6.450400648E+02, 2.748999939E+02 + 6.451208515E+02, 2.761499939E+02 + 6.452016359E+02, 2.761499939E+02 + 6.452824179E+02, 2.751499939E+02 + 6.453631975E+02, 2.750499878E+02 + 6.454439748E+02, 2.754500122E+02 + 6.455247498E+02, 2.751499939E+02 + 6.456055223E+02, 2.754500122E+02 + 6.456862926E+02, 2.750000000E+02 + 6.457670604E+02, 2.746000061E+02 + 6.458478259E+02, 2.752500000E+02 + 6.459285891E+02, 2.752999878E+02 + 6.460093499E+02, 2.753500061E+02 + 6.460901083E+02, 2.757000122E+02 + 6.461708644E+02, 2.753999939E+02 + 6.462516181E+02, 2.757999878E+02 + 6.463323695E+02, 2.750000000E+02 + 6.464131185E+02, 2.748500061E+02 + 6.464938651E+02, 2.752500000E+02 + 6.465746094E+02, 2.751000061E+02 + 6.466553513E+02, 2.765000000E+02 + 6.467360908E+02, 2.750000000E+02 + 6.468168280E+02, 2.755000000E+02 + 6.468975628E+02, 2.754500122E+02 + 6.469782953E+02, 2.750499878E+02 + 6.470590253E+02, 2.756499939E+02 + 6.471397531E+02, 2.754500122E+02 + 6.472204784E+02, 2.757000122E+02 + 6.473012014E+02, 2.753999939E+02 + 6.473819220E+02, 2.750000000E+02 + 6.474626402E+02, 2.742999878E+02 + 6.475433561E+02, 2.752999878E+02 + 6.476240696E+02, 2.753500061E+02 + 6.477047807E+02, 2.757999878E+02 + 6.477854894E+02, 2.752000122E+02 + 6.478661958E+02, 2.748999939E+02 + 6.479468998E+02, 2.755000000E+02 + 6.480276014E+02, 2.761000061E+02 + 6.481083007E+02, 2.742999878E+02 + 6.481889976E+02, 2.752500000E+02 + 6.482696921E+02, 2.747999878E+02 + 6.483503842E+02, 2.755499878E+02 + 6.484310739E+02, 2.752500000E+02 + 6.485117613E+02, 2.751000061E+02 + 6.485924463E+02, 2.749500122E+02 + 6.486731289E+02, 2.755499878E+02 + 6.487538091E+02, 2.752999878E+02 + 6.488344869E+02, 2.763500061E+02 + 6.489151624E+02, 2.765499878E+02 + 6.489958355E+02, 2.757500000E+02 + 6.490765062E+02, 2.750000000E+02 + 6.491571745E+02, 2.744500122E+02 + 6.492378404E+02, 2.750499878E+02 + 6.493185039E+02, 2.748500061E+02 + 6.493991651E+02, 2.749500122E+02 + 6.494798239E+02, 2.747000122E+02 + 6.495604802E+02, 2.761499939E+02 + 6.496411342E+02, 2.742500000E+02 + 6.497217858E+02, 2.748999939E+02 + 6.498024350E+02, 2.757999878E+02 + 6.498830819E+02, 2.747500000E+02 + 6.499637263E+02, 2.751000061E+02 + 6.500443683E+02, 2.751499939E+02 + 6.501250080E+02, 2.752999878E+02 + 6.502056452E+02, 2.748999939E+02 + 6.502862801E+02, 2.751499939E+02 + 6.503669126E+02, 2.759500122E+02 + 6.504475426E+02, 2.743999939E+02 + 6.505281703E+02, 2.753500061E+02 + 6.506087956E+02, 2.756000061E+02 + 6.506894185E+02, 2.754500122E+02 + 6.507700390E+02, 2.753999939E+02 + 6.508506571E+02, 2.746000061E+02 + 6.509312727E+02, 2.756499939E+02 + 6.510118860E+02, 2.757500000E+02 + 6.510924969E+02, 2.753500061E+02 + 6.511731054E+02, 2.752999878E+02 + 6.512537115E+02, 2.758500061E+02 + 6.513343152E+02, 2.749500122E+02 + 6.514149165E+02, 2.754500122E+02 + 6.514955154E+02, 2.752999878E+02 + 6.515761118E+02, 2.750000000E+02 + 6.516567059E+02, 2.753500061E+02 + 6.517372976E+02, 2.753500061E+02 + 6.518178868E+02, 2.747500000E+02 + 6.518984737E+02, 2.747500000E+02 + 6.519790581E+02, 2.749500122E+02 + 6.520596402E+02, 2.753999939E+02 + 6.521402198E+02, 2.755000000E+02 + 6.522207970E+02, 2.747500000E+02 + 6.523013719E+02, 2.746499939E+02 + 6.523819443E+02, 2.745499878E+02 + 6.524625142E+02, 2.756499939E+02 + 6.525430818E+02, 2.747000122E+02 + 6.526236470E+02, 2.751499939E+02 + 6.527042097E+02, 2.749500122E+02 + 6.527847701E+02, 2.750499878E+02 + 6.528653280E+02, 2.755499878E+02 + 6.529458835E+02, 2.742500000E+02 + 6.530264366E+02, 2.743500061E+02 + 6.531069873E+02, 2.748500061E+02 + 6.531875355E+02, 2.757500000E+02 + 6.532680814E+02, 2.756499939E+02 + 6.533486248E+02, 2.750000000E+02 + 6.534291658E+02, 2.747000122E+02 + 6.535097044E+02, 2.753999939E+02 + 6.535902406E+02, 2.760499878E+02 + 6.536707743E+02, 2.755499878E+02 + 6.537513056E+02, 2.747999878E+02 + 6.538318345E+02, 2.755000000E+02 + 6.539123610E+02, 2.753999939E+02 + 6.539928851E+02, 2.747500000E+02 + 6.540734067E+02, 2.750000000E+02 + 6.541539259E+02, 2.749500122E+02 + 6.542344427E+02, 2.754500122E+02 + 6.543149570E+02, 2.746000061E+02 + 6.543954689E+02, 2.750000000E+02 + 6.544759784E+02, 2.747000122E+02 + 6.545564855E+02, 2.755000000E+02 + 6.546369901E+02, 2.752500000E+02 + 6.547174923E+02, 2.750499878E+02 + 6.547979921E+02, 2.742000122E+02 + 6.548784895E+02, 2.751499939E+02 + 6.549589844E+02, 2.757999878E+02 + 6.550394769E+02, 2.752500000E+02 + 6.551199669E+02, 2.753500061E+02 + 6.552004545E+02, 2.751000061E+02 + 6.552809397E+02, 2.753500061E+02 + 6.553614225E+02, 2.747500000E+02 + 6.554419028E+02, 2.749500122E+02 + 6.555223806E+02, 2.749500122E+02 + 6.556028561E+02, 2.749500122E+02 + 6.556833291E+02, 2.747999878E+02 + 6.557637996E+02, 2.754500122E+02 + 6.558442678E+02, 2.749500122E+02 + 6.559247335E+02, 2.761499939E+02 + 6.560051967E+02, 2.740000000E+02 + 6.560856575E+02, 2.750499878E+02 + 6.561661159E+02, 2.757500000E+02 + 6.562465718E+02, 2.748500061E+02 + 6.563270253E+02, 2.748999939E+02 + 6.564074763E+02, 2.747999878E+02 + 6.564879249E+02, 2.752500000E+02 + 6.565683710E+02, 2.741499939E+02 + 6.566488147E+02, 2.752000122E+02 + 6.567292560E+02, 2.750000000E+02 + 6.568096948E+02, 2.746499939E+02 + 6.568901311E+02, 2.738500061E+02 + 6.569705651E+02, 2.750000000E+02 + 6.570509965E+02, 2.747000122E+02 + 6.571314255E+02, 2.755499878E+02 + 6.572118521E+02, 2.746000061E+02 + 6.572922762E+02, 2.743500061E+02 + 6.573726979E+02, 2.745000000E+02 + 6.574531171E+02, 2.753999939E+02 + 6.575335338E+02, 2.751499939E+02 + 6.576139481E+02, 2.750499878E+02 + 6.576943600E+02, 2.753999939E+02 + 6.577747694E+02, 2.748999939E+02 + 6.578551763E+02, 2.747500000E+02 + 6.579355808E+02, 2.752000122E+02 + 6.580159828E+02, 2.750000000E+02 + 6.580963824E+02, 2.747500000E+02 + 6.581767795E+02, 2.745000000E+02 + 6.582571741E+02, 2.752000122E+02 + 6.583375663E+02, 2.739500122E+02 + 6.584179561E+02, 2.745499878E+02 + 6.584983433E+02, 2.748999939E+02 + 6.585787281E+02, 2.753999939E+02 + 6.586591105E+02, 2.757000122E+02 + 6.587394904E+02, 2.750000000E+02 + 6.588198678E+02, 2.742999878E+02 + 6.589002428E+02, 2.747000122E+02 + 6.589806153E+02, 2.747999878E+02 + 6.590609853E+02, 2.752500000E+02 + 6.591413529E+02, 2.751000061E+02 + 6.592217180E+02, 2.759500122E+02 + 6.593020806E+02, 2.745499878E+02 + 6.593824407E+02, 2.753500061E+02 + 6.594627984E+02, 2.741499939E+02 + 6.595431537E+02, 2.753500061E+02 + 6.596235064E+02, 2.751499939E+02 + 6.597038567E+02, 2.748500061E+02 + 6.597842045E+02, 2.751000061E+02 + 6.598645499E+02, 2.747999878E+02 + 6.599448927E+02, 2.747999878E+02 + 6.600252331E+02, 2.749500122E+02 + 6.601055711E+02, 2.747500000E+02 + 6.601859065E+02, 2.753999939E+02 + 6.602662395E+02, 2.757999878E+02 + 6.603465700E+02, 2.747000122E+02 + 6.604268980E+02, 2.754500122E+02 + 6.605072236E+02, 2.753999939E+02 + 6.605875466E+02, 2.746000061E+02 + 6.606678672E+02, 2.752999878E+02 + 6.607481853E+02, 2.751000061E+02 + 6.608285010E+02, 2.743500061E+02 + 6.609088141E+02, 2.756000061E+02 + 6.609891248E+02, 2.749500122E+02 + 6.610694330E+02, 2.747500000E+02 + 6.611497387E+02, 2.742500000E+02 + 6.612300419E+02, 2.745499878E+02 + 6.613103426E+02, 2.749500122E+02 + 6.613906409E+02, 2.752000122E+02 + 6.614709367E+02, 2.751499939E+02 + 6.615512300E+02, 2.746499939E+02 + 6.616315208E+02, 2.751499939E+02 + 6.617118091E+02, 2.748999939E+02 + 6.617920949E+02, 2.752500000E+02 + 6.618723782E+02, 2.746499939E+02 diff --git a/tests/data_multi/Si-wafer-Raman-Spectrum-1.txt b/tests/data_multi/Si-wafer-Raman-Spectrum-1.txt new file mode 100644 index 0000000..43d4d1a --- /dev/null +++ b/tests/data_multi/Si-wafer-Raman-Spectrum-1.txt @@ -0,0 +1,1617 @@ +//Exported ASCII-File +[Header] +FileName = J:\Raman-spectroscopy-microscopy\Data\2024-06-20-CD-cover-test\Petri-dish-test.wip +GraphName = Spectrum--000--Spec.Data 1 +SizeX = 1 +SizeY = 1 +SizeGraph = 1600 +PositionUnit = µm +PositionX = 2.3283064365387E-8 +PositionY = 2.3283064365387E-8 +PositionZ = 0 +XAxisUnit = nm +DataUnit = CCD cts + +[Data] +X-Axis,Spectrum--000--Spec.Data 1 +nm,CCD cts + 5.307816803E+02, 3.568500061E+02 + 5.308650650E+02, 3.566000061E+02 + 5.309484482E+02, 3.556000061E+02 + 5.310318301E+02, 3.572500000E+02 + 5.311152107E+02, 3.636000061E+02 + 5.311985898E+02, 3.647999878E+02 + 5.312819676E+02, 3.783500061E+02 + 5.313653440E+02, 3.944500122E+02 + 5.314487190E+02, 4.185499878E+02 + 5.315320927E+02, 4.417000122E+02 + 5.316154650E+02, 4.921499939E+02 + 5.316988358E+02, 5.875000000E+02 + 5.317822054E+02, 9.454000244E+02 + 5.318655735E+02, 2.839050049E+03 + 5.319489403E+02, 9.894750000E+03 + 5.320323056E+02, 3.141025000E+04 + 5.321156696E+02, 6.553500000E+04 + 5.321990322E+02, 6.553500000E+04 + 5.322823935E+02, 6.553500000E+04 + 5.323657533E+02, 6.553500000E+04 + 5.324491118E+02, 6.553500000E+04 + 5.325324688E+02, 6.553500000E+04 + 5.326158245E+02, 6.553500000E+04 + 5.326991788E+02, 6.553500000E+04 + 5.327825318E+02, 3.606855078E+04 + 5.328658833E+02, 5.571549805E+03 + 5.329492334E+02, 1.359699951E+03 + 5.330325822E+02, 6.915000000E+02 + 5.331159295E+02, 5.402999878E+02 + 5.331992755E+02, 4.878999939E+02 + 5.332826200E+02, 4.567999878E+02 + 5.333659632E+02, 4.294500122E+02 + 5.334493050E+02, 4.121000061E+02 + 5.335326454E+02, 3.987000122E+02 + 5.336159844E+02, 3.841000061E+02 + 5.336993220E+02, 3.701000061E+02 + 5.337826582E+02, 3.602999878E+02 + 5.338659930E+02, 3.547999878E+02 + 5.339493264E+02, 3.511499939E+02 + 5.340326584E+02, 3.475000000E+02 + 5.341159890E+02, 3.451499939E+02 + 5.341993182E+02, 3.451000061E+02 + 5.342826460E+02, 3.429500122E+02 + 5.343659725E+02, 3.412500000E+02 + 5.344492975E+02, 3.399500122E+02 + 5.345326211E+02, 3.393500061E+02 + 5.346159433E+02, 3.446499939E+02 + 5.346992641E+02, 3.462500000E+02 + 5.347825834E+02, 3.467000122E+02 + 5.348659014E+02, 3.402999878E+02 + 5.349492180E+02, 3.305000000E+02 + 5.350325332E+02, 3.274500122E+02 + 5.351158469E+02, 3.312500000E+02 + 5.351991593E+02, 3.382500000E+02 + 5.352824702E+02, 3.357500000E+02 + 5.353657797E+02, 3.281000061E+02 + 5.354490879E+02, 3.296499939E+02 + 5.355323946E+02, 3.341000061E+02 + 5.356156999E+02, 3.335000000E+02 + 5.356990037E+02, 3.338500061E+02 + 5.357823062E+02, 3.350499878E+02 + 5.358656073E+02, 3.340499878E+02 + 5.359489069E+02, 3.306000061E+02 + 5.360322051E+02, 3.396000061E+02 + 5.361155019E+02, 3.457500000E+02 + 5.361987973E+02, 3.444500122E+02 + 5.362820913E+02, 3.596499939E+02 + 5.363653838E+02, 3.925000000E+02 + 5.364486749E+02, 4.168500061E+02 + 5.365319647E+02, 4.447500000E+02 + 5.366152529E+02, 4.767999878E+02 + 5.366985398E+02, 4.987999878E+02 + 5.367818252E+02, 5.137500000E+02 + 5.368651093E+02, 5.271500244E+02 + 5.369483918E+02, 5.201500244E+02 + 5.370316730E+02, 5.162500000E+02 + 5.371149528E+02, 5.230999756E+02 + 5.371982311E+02, 5.315000000E+02 + 5.372815080E+02, 5.334000244E+02 + 5.373647834E+02, 5.249000244E+02 + 5.374480574E+02, 5.210499878E+02 + 5.375313300E+02, 5.236500244E+02 + 5.376146012E+02, 5.252000122E+02 + 5.376978710E+02, 5.294500122E+02 + 5.377811393E+02, 5.327000122E+02 + 5.378644061E+02, 5.377500000E+02 + 5.379476716E+02, 5.419000244E+02 + 5.380309356E+02, 5.483499756E+02 + 5.381141982E+02, 5.499500122E+02 + 5.381974593E+02, 5.567500000E+02 + 5.382807190E+02, 5.690000000E+02 + 5.383639773E+02, 5.797999878E+02 + 5.384472341E+02, 5.885000000E+02 + 5.385304895E+02, 6.032999878E+02 + 5.386137434E+02, 6.313499756E+02 + 5.386969960E+02, 6.657000122E+02 + 5.387802470E+02, 6.997999878E+02 + 5.388634967E+02, 7.320499878E+02 + 5.389467448E+02, 7.552999878E+02 + 5.390299916E+02, 7.800499878E+02 + 5.391132369E+02, 7.878499756E+02 + 5.391964808E+02, 7.860000000E+02 + 5.392797232E+02, 7.950499878E+02 + 5.393629641E+02, 7.972999878E+02 + 5.394462037E+02, 8.177999878E+02 + 5.395294417E+02, 8.445000000E+02 + 5.396126784E+02, 8.434000244E+02 + 5.396959135E+02, 8.478499756E+02 + 5.397791473E+02, 8.565999756E+02 + 5.398623795E+02, 8.771500244E+02 + 5.399456104E+02, 8.962000122E+02 + 5.400288397E+02, 9.195000000E+02 + 5.401120677E+02, 9.234500122E+02 + 5.401952941E+02, 9.287000122E+02 + 5.402785192E+02, 9.475000000E+02 + 5.403617427E+02, 9.733499756E+02 + 5.404449648E+02, 1.012599976E+03 + 5.405281855E+02, 1.046650024E+03 + 5.406114047E+02, 1.072099976E+03 + 5.406946224E+02, 1.118150024E+03 + 5.407778387E+02, 1.202800049E+03 + 5.408610535E+02, 1.268500000E+03 + 5.409442669E+02, 1.327500000E+03 + 5.410274788E+02, 1.355050049E+03 + 5.411106892E+02, 1.336000000E+03 + 5.411938982E+02, 1.264650024E+03 + 5.412771057E+02, 1.190000000E+03 + 5.413603118E+02, 1.130800049E+03 + 5.414435164E+02, 1.089199951E+03 + 5.415267195E+02, 1.057550049E+03 + 5.416099212E+02, 1.003150024E+03 + 5.416931214E+02, 9.575499878E+02 + 5.417763201E+02, 9.495000000E+02 + 5.418595173E+02, 9.660999756E+02 + 5.419427131E+02, 9.540499878E+02 + 5.420259075E+02, 9.380499878E+02 + 5.421091003E+02, 9.090000000E+02 + 5.421922917E+02, 8.767500000E+02 + 5.422754816E+02, 8.750000000E+02 + 5.423586701E+02, 8.545999756E+02 + 5.424418570E+02, 8.401500244E+02 + 5.425250425E+02, 8.340499878E+02 + 5.426082265E+02, 8.328499756E+02 + 5.426914091E+02, 8.247000122E+02 + 5.427745902E+02, 8.137000122E+02 + 5.428577698E+02, 8.169000244E+02 + 5.429409479E+02, 8.104500122E+02 + 5.430241245E+02, 7.997000122E+02 + 5.431072997E+02, 7.792500000E+02 + 5.431904734E+02, 7.682500000E+02 + 5.432736456E+02, 7.734500122E+02 + 5.433568163E+02, 7.602500000E+02 + 5.434399855E+02, 7.368499756E+02 + 5.435231533E+02, 7.210999756E+02 + 5.436063195E+02, 7.175499878E+02 + 5.436894843E+02, 7.150499878E+02 + 5.437726476E+02, 7.059000244E+02 + 5.438558095E+02, 7.045499878E+02 + 5.439389698E+02, 7.042500000E+02 + 5.440221287E+02, 7.048499756E+02 + 5.441052860E+02, 6.950000000E+02 + 5.441884419E+02, 6.799500122E+02 + 5.442715963E+02, 6.854500122E+02 + 5.443547492E+02, 6.965000000E+02 + 5.444379006E+02, 7.022500000E+02 + 5.445210505E+02, 7.069000244E+02 + 5.446041989E+02, 7.093499756E+02 + 5.446873459E+02, 7.129500122E+02 + 5.447704913E+02, 7.050999756E+02 + 5.448536352E+02, 7.005000000E+02 + 5.449367777E+02, 7.015999756E+02 + 5.450199187E+02, 6.827000122E+02 + 5.451030581E+02, 6.499000244E+02 + 5.451861961E+02, 6.052500000E+02 + 5.452693325E+02, 5.814000244E+02 + 5.453524675E+02, 5.620499878E+02 + 5.454356010E+02, 5.369000244E+02 + 5.455187329E+02, 5.061000061E+02 + 5.456018634E+02, 4.766499939E+02 + 5.456849924E+02, 4.692000122E+02 + 5.457681199E+02, 4.718500061E+02 + 5.458512458E+02, 4.980000000E+02 + 5.459343703E+02, 5.066000061E+02 + 5.460174932E+02, 5.192999878E+02 + 5.461006147E+02, 5.346500244E+02 + 5.461837346E+02, 5.530499878E+02 + 5.462668531E+02, 5.679500122E+02 + 5.463499700E+02, 5.937000122E+02 + 5.464330854E+02, 6.264500122E+02 + 5.465161993E+02, 6.693499756E+02 + 5.465993118E+02, 7.277000122E+02 + 5.466824227E+02, 7.943499756E+02 + 5.467655320E+02, 8.970499878E+02 + 5.468486399E+02, 1.080150024E+03 + 5.469317463E+02, 1.368199951E+03 + 5.470148511E+02, 1.876199951E+03 + 5.470979545E+02, 2.918550049E+03 + 5.471810563E+02, 5.445149902E+03 + 5.472641566E+02, 1.210854980E+04 + 5.473472554E+02, 2.485109961E+04 + 5.474303527E+02, 3.471844922E+04 + 5.475134485E+02, 3.281710156E+04 + 5.475965427E+02, 2.164944922E+04 + 5.476796354E+02, 1.089300000E+04 + 5.477627266E+02, 5.679000000E+03 + 5.478458163E+02, 3.482050049E+03 + 5.479289045E+02, 2.450100098E+03 + 5.480119911E+02, 1.904550049E+03 + 5.480950762E+02, 1.562699951E+03 + 5.481781598E+02, 1.338349976E+03 + 5.482612419E+02, 1.164750000E+03 + 5.483443225E+02, 1.047699951E+03 + 5.484274015E+02, 9.755499878E+02 + 5.485104790E+02, 9.149000244E+02 + 5.485935550E+02, 8.467999878E+02 + 5.486766294E+02, 7.968499756E+02 + 5.487597023E+02, 7.582999878E+02 + 5.488427737E+02, 7.257000122E+02 + 5.489258436E+02, 6.812999878E+02 + 5.490089119E+02, 6.612500000E+02 + 5.490919787E+02, 6.521500244E+02 + 5.491750440E+02, 6.335499878E+02 + 5.492581077E+02, 6.128499756E+02 + 5.493411699E+02, 6.115000000E+02 + 5.494242306E+02, 6.025999756E+02 + 5.495072897E+02, 5.902999878E+02 + 5.495903473E+02, 5.904000244E+02 + 5.496734034E+02, 5.905000000E+02 + 5.497564579E+02, 5.925999756E+02 + 5.498395109E+02, 5.949500122E+02 + 5.499225623E+02, 5.969500122E+02 + 5.500056123E+02, 6.099000244E+02 + 5.500886606E+02, 6.335499878E+02 + 5.501717075E+02, 6.464000244E+02 + 5.502547528E+02, 6.655499878E+02 + 5.503377965E+02, 6.816500244E+02 + 5.504208387E+02, 6.784000244E+02 + 5.505038794E+02, 6.649500122E+02 + 5.505869185E+02, 6.473499756E+02 + 5.506699561E+02, 6.340000000E+02 + 5.507529921E+02, 6.159500122E+02 + 5.508360266E+02, 6.072500000E+02 + 5.509190595E+02, 6.004500122E+02 + 5.510020909E+02, 5.985499878E+02 + 5.510851207E+02, 5.982500000E+02 + 5.511681490E+02, 5.876500244E+02 + 5.512511758E+02, 5.795000000E+02 + 5.513342010E+02, 5.867500000E+02 + 5.514172246E+02, 5.829500122E+02 + 5.515002467E+02, 5.840000000E+02 + 5.515832672E+02, 5.959500122E+02 + 5.516662862E+02, 6.057500000E+02 + 5.517493036E+02, 6.135999756E+02 + 5.518323195E+02, 6.095000000E+02 + 5.519153338E+02, 6.136500244E+02 + 5.519983466E+02, 6.111500244E+02 + 5.520813578E+02, 6.018499756E+02 + 5.521643674E+02, 5.959000244E+02 + 5.522473755E+02, 5.922500000E+02 + 5.523303821E+02, 5.776500244E+02 + 5.524133870E+02, 5.646500244E+02 + 5.524963904E+02, 5.505000000E+02 + 5.525793923E+02, 5.281500244E+02 + 5.526623926E+02, 5.199000244E+02 + 5.527453913E+02, 5.075000000E+02 + 5.528283885E+02, 5.058999939E+02 + 5.529113840E+02, 5.022999878E+02 + 5.529943781E+02, 4.914500122E+02 + 5.530773705E+02, 4.820000000E+02 + 5.531603614E+02, 4.752000122E+02 + 5.532433508E+02, 4.746000061E+02 + 5.533263385E+02, 4.705000000E+02 + 5.534093247E+02, 4.665000000E+02 + 5.534923093E+02, 4.672500000E+02 + 5.535752924E+02, 4.658999939E+02 + 5.536582739E+02, 4.667999878E+02 + 5.537412538E+02, 4.627999878E+02 + 5.538242321E+02, 4.633500061E+02 + 5.539072089E+02, 4.636000061E+02 + 5.539901841E+02, 4.710499878E+02 + 5.540731577E+02, 4.683999939E+02 + 5.541561298E+02, 4.647000122E+02 + 5.542391002E+02, 4.602500000E+02 + 5.543220691E+02, 4.621000061E+02 + 5.544050364E+02, 4.632000122E+02 + 5.544880022E+02, 4.669500122E+02 + 5.545709663E+02, 4.729500122E+02 + 5.546539289E+02, 4.749500122E+02 + 5.547368899E+02, 4.797500000E+02 + 5.548198493E+02, 4.766499939E+02 + 5.549028071E+02, 4.786499939E+02 + 5.549857634E+02, 4.867000122E+02 + 5.550687181E+02, 4.860000000E+02 + 5.551516711E+02, 4.880499878E+02 + 5.552346226E+02, 4.876499939E+02 + 5.553175726E+02, 4.903500061E+02 + 5.554005209E+02, 4.955499878E+02 + 5.554834676E+02, 4.998500061E+02 + 5.555664128E+02, 5.053999939E+02 + 5.556493563E+02, 5.118500061E+02 + 5.557322983E+02, 5.185999756E+02 + 5.558152387E+02, 5.169000244E+02 + 5.558981775E+02, 5.136500244E+02 + 5.559811147E+02, 5.180000000E+02 + 5.560640503E+02, 5.269000244E+02 + 5.561469843E+02, 5.420499878E+02 + 5.562299168E+02, 5.400499878E+02 + 5.563128476E+02, 5.472500000E+02 + 5.563957769E+02, 5.572500000E+02 + 5.564787045E+02, 5.519000244E+02 + 5.565616305E+02, 5.546500244E+02 + 5.566445550E+02, 5.558499756E+02 + 5.567274778E+02, 5.518499756E+02 + 5.568103991E+02, 5.585499878E+02 + 5.568933188E+02, 5.464000244E+02 + 5.569762368E+02, 5.423499756E+02 + 5.570591533E+02, 5.410999756E+02 + 5.571420681E+02, 5.270000000E+02 + 5.572249814E+02, 5.244500122E+02 + 5.573078930E+02, 5.184500122E+02 + 5.573908031E+02, 5.239500122E+02 + 5.574737115E+02, 5.201500244E+02 + 5.575566184E+02, 5.250999756E+02 + 5.576395236E+02, 5.309000244E+02 + 5.577224272E+02, 5.235499878E+02 + 5.578053292E+02, 5.175999756E+02 + 5.578882296E+02, 5.169000244E+02 + 5.579711284E+02, 5.220499878E+02 + 5.580540256E+02, 5.302500000E+02 + 5.581369212E+02, 5.271500244E+02 + 5.582198152E+02, 5.222999878E+02 + 5.583027076E+02, 5.141500244E+02 + 5.583855983E+02, 5.157000122E+02 + 5.584684874E+02, 5.214000244E+02 + 5.585513750E+02, 5.232000122E+02 + 5.586342609E+02, 5.272999878E+02 + 5.587171452E+02, 5.319500122E+02 + 5.588000278E+02, 5.298499756E+02 + 5.588829089E+02, 5.262000122E+02 + 5.589657884E+02, 5.257500000E+02 + 5.590486662E+02, 5.257500000E+02 + 5.591315424E+02, 5.314000244E+02 + 5.592144170E+02, 5.332000122E+02 + 5.592972899E+02, 5.310000000E+02 + 5.593801613E+02, 5.400000000E+02 + 5.594630310E+02, 5.442500000E+02 + 5.595458991E+02, 5.541500244E+02 + 5.596287656E+02, 5.714500122E+02 + 5.597116305E+02, 5.987999878E+02 + 5.597944937E+02, 6.353499756E+02 + 5.598773553E+02, 7.229500122E+02 + 5.599602153E+02, 8.413499756E+02 + 5.600430736E+02, 1.013650024E+03 + 5.601259304E+02, 1.202349976E+03 + 5.602087855E+02, 1.395849976E+03 + 5.602916389E+02, 1.576849976E+03 + 5.603744908E+02, 1.644800049E+03 + 5.604573410E+02, 1.647750000E+03 + 5.605401896E+02, 1.644550049E+03 + 5.606230365E+02, 1.649250000E+03 + 5.607058818E+02, 1.646150024E+03 + 5.607887255E+02, 1.637699951E+03 + 5.608715676E+02, 1.626050049E+03 + 5.609544080E+02, 1.625349976E+03 + 5.610372468E+02, 1.647449951E+03 + 5.611200839E+02, 1.662449951E+03 + 5.612029194E+02, 1.673000000E+03 + 5.612857533E+02, 1.668349976E+03 + 5.613685855E+02, 1.679449951E+03 + 5.614514161E+02, 1.697849976E+03 + 5.615342451E+02, 1.686000000E+03 + 5.616170724E+02, 1.647050049E+03 + 5.616998981E+02, 1.533900024E+03 + 5.617827221E+02, 1.450849976E+03 + 5.618655445E+02, 1.318550049E+03 + 5.619483652E+02, 1.144650024E+03 + 5.620311843E+02, 9.840000000E+02 + 5.621140018E+02, 8.715999756E+02 + 5.621968176E+02, 8.002999878E+02 + 5.622796318E+02, 7.612500000E+02 + 5.623624443E+02, 7.222500000E+02 + 5.624452552E+02, 6.889000244E+02 + 5.625280644E+02, 6.590999756E+02 + 5.626108720E+02, 6.174000244E+02 + 5.626936779E+02, 5.990499878E+02 + 5.627764822E+02, 5.799000244E+02 + 5.628592848E+02, 5.526500244E+02 + 5.629420858E+02, 5.300999756E+02 + 5.630248851E+02, 5.068999939E+02 + 5.631076827E+02, 4.824500122E+02 + 5.631904788E+02, 4.563999939E+02 + 5.632732731E+02, 4.379500122E+02 + 5.633560658E+02, 4.137999878E+02 + 5.634388569E+02, 3.924500122E+02 + 5.635216463E+02, 3.785000000E+02 + 5.636044340E+02, 3.711000061E+02 + 5.636872201E+02, 3.651000061E+02 + 5.637700045E+02, 3.610000000E+02 + 5.638527872E+02, 3.587999878E+02 + 5.639355683E+02, 3.561499939E+02 + 5.640183478E+02, 3.545000000E+02 + 5.641011255E+02, 3.522999878E+02 + 5.641839016E+02, 3.490000000E+02 + 5.642666761E+02, 3.460000000E+02 + 5.643494489E+02, 3.450499878E+02 + 5.644322200E+02, 3.452000122E+02 + 5.645149894E+02, 3.464500122E+02 + 5.645977572E+02, 3.491499939E+02 + 5.646805233E+02, 3.473999939E+02 + 5.647632878E+02, 3.474500122E+02 + 5.648460506E+02, 3.477500000E+02 + 5.649288117E+02, 3.453500061E+02 + 5.650115711E+02, 3.433999939E+02 + 5.650943289E+02, 3.443500061E+02 + 5.651770850E+02, 3.438500061E+02 + 5.652598394E+02, 3.446499939E+02 + 5.653425922E+02, 3.443999939E+02 + 5.654253433E+02, 3.452000122E+02 + 5.655080927E+02, 3.431499939E+02 + 5.655908404E+02, 3.415499878E+02 + 5.656735865E+02, 3.438500061E+02 + 5.657563308E+02, 3.432999878E+02 + 5.658390735E+02, 3.396000061E+02 + 5.659218146E+02, 3.396499939E+02 + 5.660045539E+02, 3.410499878E+02 + 5.660872916E+02, 3.420000000E+02 + 5.661700276E+02, 3.399500122E+02 + 5.662527619E+02, 3.410000000E+02 + 5.663354945E+02, 3.412500000E+02 + 5.664182255E+02, 3.401499939E+02 + 5.665009547E+02, 3.397999878E+02 + 5.665836823E+02, 3.346499939E+02 + 5.666664082E+02, 3.362000122E+02 + 5.667491324E+02, 3.338999939E+02 + 5.668318549E+02, 3.352500000E+02 + 5.669145758E+02, 3.320000000E+02 + 5.669972949E+02, 3.325499878E+02 + 5.670800124E+02, 3.350499878E+02 + 5.671627282E+02, 3.310499878E+02 + 5.672454423E+02, 3.304500122E+02 + 5.673281546E+02, 3.296000061E+02 + 5.674108654E+02, 3.336000061E+02 + 5.674935744E+02, 3.318500061E+02 + 5.675762817E+02, 3.263999939E+02 + 5.676589873E+02, 3.292000122E+02 + 5.677416913E+02, 3.317000122E+02 + 5.678243935E+02, 3.308999939E+02 + 5.679070940E+02, 3.313500061E+02 + 5.679897929E+02, 3.292999878E+02 + 5.680724900E+02, 3.296499939E+02 + 5.681551855E+02, 3.285000000E+02 + 5.682378793E+02, 3.285499878E+02 + 5.683205713E+02, 3.272999878E+02 + 5.684032617E+02, 3.328999939E+02 + 5.684859503E+02, 3.280499878E+02 + 5.685686373E+02, 3.267999878E+02 + 5.686513226E+02, 3.253999939E+02 + 5.687340061E+02, 3.268999939E+02 + 5.688166880E+02, 3.271499939E+02 + 5.688993681E+02, 3.272999878E+02 + 5.689820466E+02, 3.271499939E+02 + 5.690647233E+02, 3.275499878E+02 + 5.691473983E+02, 3.274500122E+02 + 5.692300717E+02, 3.277500000E+02 + 5.693127433E+02, 3.289500122E+02 + 5.693954132E+02, 3.282000122E+02 + 5.694780814E+02, 3.285499878E+02 + 5.695607479E+02, 3.302999878E+02 + 5.696434127E+02, 3.282999878E+02 + 5.697260758E+02, 3.292000122E+02 + 5.698087371E+02, 3.271499939E+02 + 5.698913968E+02, 3.300499878E+02 + 5.699740547E+02, 3.278500061E+02 + 5.700567109E+02, 3.290000000E+02 + 5.701393654E+02, 3.267500000E+02 + 5.702220182E+02, 3.312500000E+02 + 5.703046693E+02, 3.315499878E+02 + 5.703873187E+02, 3.300499878E+02 + 5.704699663E+02, 3.310499878E+02 + 5.705526123E+02, 3.317000122E+02 + 5.706352565E+02, 3.335000000E+02 + 5.707178990E+02, 3.318999939E+02 + 5.708005397E+02, 3.321000061E+02 + 5.708831788E+02, 3.320499878E+02 + 5.709658161E+02, 3.317000122E+02 + 5.710484517E+02, 3.327999878E+02 + 5.711310856E+02, 3.327000122E+02 + 5.712137177E+02, 3.330499878E+02 + 5.712963482E+02, 3.360499878E+02 + 5.713789769E+02, 3.365000000E+02 + 5.714616039E+02, 3.373999939E+02 + 5.715442291E+02, 3.333999939E+02 + 5.716268526E+02, 3.363500061E+02 + 5.717094744E+02, 3.341000061E+02 + 5.717920945E+02, 3.307500000E+02 + 5.718747129E+02, 3.347500000E+02 + 5.719573295E+02, 3.353999939E+02 + 5.720399443E+02, 3.366499939E+02 + 5.721225575E+02, 3.355499878E+02 + 5.722051689E+02, 3.358500061E+02 + 5.722877786E+02, 3.387000122E+02 + 5.723703865E+02, 3.363500061E+02 + 5.724529928E+02, 3.382500000E+02 + 5.725355972E+02, 3.359500122E+02 + 5.726182000E+02, 3.351000061E+02 + 5.727008010E+02, 3.366499939E+02 + 5.727834003E+02, 3.365499878E+02 + 5.728659978E+02, 3.344500122E+02 + 5.729485936E+02, 3.372000122E+02 + 5.730311876E+02, 3.375499878E+02 + 5.731137800E+02, 3.360000000E+02 + 5.731963705E+02, 3.360499878E+02 + 5.732789594E+02, 3.361499939E+02 + 5.733615465E+02, 3.365000000E+02 + 5.734441318E+02, 3.363999939E+02 + 5.735267154E+02, 3.350000000E+02 + 5.736092973E+02, 3.372000122E+02 + 5.736918774E+02, 3.358999939E+02 + 5.737744557E+02, 3.354500122E+02 + 5.738570324E+02, 3.328999939E+02 + 5.739396072E+02, 3.344500122E+02 + 5.740221804E+02, 3.350499878E+02 + 5.741047517E+02, 3.365499878E+02 + 5.741873214E+02, 3.328500061E+02 + 5.742698892E+02, 3.320000000E+02 + 5.743524554E+02, 3.318999939E+02 + 5.744350197E+02, 3.333999939E+02 + 5.745175824E+02, 3.322000122E+02 + 5.746001432E+02, 3.281000061E+02 + 5.746827023E+02, 3.302999878E+02 + 5.747652597E+02, 3.292500000E+02 + 5.748478153E+02, 3.289500122E+02 + 5.749303692E+02, 3.255000000E+02 + 5.750129213E+02, 3.286000061E+02 + 5.750954716E+02, 3.265000000E+02 + 5.751780202E+02, 3.298500061E+02 + 5.752605670E+02, 3.304500122E+02 + 5.753431120E+02, 3.278500061E+02 + 5.754256553E+02, 3.247000122E+02 + 5.755081969E+02, 3.255499878E+02 + 5.755907367E+02, 3.267500000E+02 + 5.756732747E+02, 3.276499939E+02 + 5.757558109E+02, 3.277999878E+02 + 5.758383454E+02, 3.250499878E+02 + 5.759208781E+02, 3.248500061E+02 + 5.760034091E+02, 3.231000061E+02 + 5.760859383E+02, 3.262999878E+02 + 5.761684657E+02, 3.248500061E+02 + 5.762509914E+02, 3.242500000E+02 + 5.763335152E+02, 3.242500000E+02 + 5.764160374E+02, 3.268500061E+02 + 5.764985577E+02, 3.290499878E+02 + 5.765810763E+02, 3.283500061E+02 + 5.766635931E+02, 3.242500000E+02 + 5.767461081E+02, 3.246000061E+02 + 5.768286214E+02, 3.228500061E+02 + 5.769111329E+02, 3.232999878E+02 + 5.769936426E+02, 3.235499878E+02 + 5.770761506E+02, 3.240499878E+02 + 5.771586567E+02, 3.224500122E+02 + 5.772411611E+02, 3.217000122E+02 + 5.773236637E+02, 3.200000000E+02 + 5.774061646E+02, 3.186000061E+02 + 5.774886636E+02, 3.192500000E+02 + 5.775711609E+02, 3.166000061E+02 + 5.776536564E+02, 3.166000061E+02 + 5.777361502E+02, 3.166499939E+02 + 5.778186421E+02, 3.162000122E+02 + 5.779011323E+02, 3.179500122E+02 + 5.779836206E+02, 3.178999939E+02 + 5.780661072E+02, 3.159500122E+02 + 5.781485920E+02, 3.136000061E+02 + 5.782310751E+02, 3.132000122E+02 + 5.783135563E+02, 3.132999878E+02 + 5.783960358E+02, 3.147000122E+02 + 5.784785134E+02, 3.136499939E+02 + 5.785609893E+02, 3.137000122E+02 + 5.786434634E+02, 3.120000000E+02 + 5.787259357E+02, 3.122500000E+02 + 5.788084062E+02, 3.126000061E+02 + 5.788908749E+02, 3.099500122E+02 + 5.789733419E+02, 3.110000000E+02 + 5.790558070E+02, 3.113999939E+02 + 5.791382704E+02, 3.113999939E+02 + 5.792207319E+02, 3.097500000E+02 + 5.793031917E+02, 3.093999939E+02 + 5.793856497E+02, 3.112000122E+02 + 5.794681058E+02, 3.132000122E+02 + 5.795505602E+02, 3.132000122E+02 + 5.796330128E+02, 3.128999939E+02 + 5.797154636E+02, 3.105499878E+02 + 5.797979126E+02, 3.116000061E+02 + 5.798803597E+02, 3.101499939E+02 + 5.799628051E+02, 3.103500061E+02 + 5.800452487E+02, 3.109500122E+02 + 5.801276905E+02, 3.141499939E+02 + 5.802101305E+02, 3.142999878E+02 + 5.802925687E+02, 3.135499878E+02 + 5.803750051E+02, 3.142999878E+02 + 5.804574396E+02, 3.131499939E+02 + 5.805398724E+02, 3.138999939E+02 + 5.806223034E+02, 3.143999939E+02 + 5.807047325E+02, 3.151000061E+02 + 5.807871599E+02, 3.142500000E+02 + 5.808695854E+02, 3.145000000E+02 + 5.809520092E+02, 3.159500122E+02 + 5.810344311E+02, 3.166499939E+02 + 5.811168512E+02, 3.163999939E+02 + 5.811992695E+02, 3.147500000E+02 + 5.812816860E+02, 3.157000122E+02 + 5.813641007E+02, 3.176000061E+02 + 5.814465136E+02, 3.167000122E+02 + 5.815289246E+02, 3.152000122E+02 + 5.816113339E+02, 3.172500000E+02 + 5.816937413E+02, 3.162999878E+02 + 5.817761469E+02, 3.158999939E+02 + 5.818585508E+02, 3.146499939E+02 + 5.819409527E+02, 3.152999878E+02 + 5.820233529E+02, 3.149500122E+02 + 5.821057513E+02, 3.141000061E+02 + 5.821881478E+02, 3.147000122E+02 + 5.822705425E+02, 3.141499939E+02 + 5.823529354E+02, 3.158999939E+02 + 5.824353265E+02, 3.143999939E+02 + 5.825177157E+02, 3.095000000E+02 + 5.826001031E+02, 3.091000061E+02 + 5.826824888E+02, 3.098999939E+02 + 5.827648725E+02, 3.078999939E+02 + 5.828472545E+02, 3.072500000E+02 + 5.829296346E+02, 3.053999939E+02 + 5.830120129E+02, 3.026499939E+02 + 5.830943894E+02, 3.031000061E+02 + 5.831767641E+02, 3.025000000E+02 + 5.832591369E+02, 3.017999878E+02 + 5.833415079E+02, 3.025000000E+02 + 5.834238771E+02, 3.009500122E+02 + 5.835062444E+02, 3.010499878E+02 + 5.835886099E+02, 2.996000061E+02 + 5.836709736E+02, 2.970000000E+02 + 5.837533354E+02, 2.976000061E+02 + 5.838356954E+02, 2.972999878E+02 + 5.839180536E+02, 2.993500061E+02 + 5.840004099E+02, 2.982500000E+02 + 5.840827645E+02, 2.967999878E+02 + 5.841651171E+02, 2.969500122E+02 + 5.842474680E+02, 2.952500000E+02 + 5.843298170E+02, 2.957500000E+02 + 5.844121641E+02, 2.957500000E+02 + 5.844945094E+02, 2.953500061E+02 + 5.845768529E+02, 2.970000000E+02 + 5.846591946E+02, 2.943500061E+02 + 5.847415344E+02, 2.940499878E+02 + 5.848238723E+02, 2.933500061E+02 + 5.849062084E+02, 2.927999878E+02 + 5.849885427E+02, 2.927500000E+02 + 5.850708751E+02, 2.958999939E+02 + 5.851532057E+02, 2.946000061E+02 + 5.852355345E+02, 2.930499878E+02 + 5.853178614E+02, 2.936000061E+02 + 5.854001864E+02, 2.924500122E+02 + 5.854825096E+02, 2.922500000E+02 + 5.855648310E+02, 2.921000061E+02 + 5.856471505E+02, 2.923999939E+02 + 5.857294681E+02, 2.914500122E+02 + 5.858117839E+02, 2.913999939E+02 + 5.858940979E+02, 2.916000061E+02 + 5.859764100E+02, 2.905000000E+02 + 5.860587203E+02, 2.908999939E+02 + 5.861410287E+02, 2.913999939E+02 + 5.862233352E+02, 2.922999878E+02 + 5.863056399E+02, 2.927500000E+02 + 5.863879427E+02, 2.906000061E+02 + 5.864702437E+02, 2.911000061E+02 + 5.865525429E+02, 2.917500000E+02 + 5.866348401E+02, 2.916499939E+02 + 5.867171355E+02, 2.906000061E+02 + 5.867994291E+02, 2.888999939E+02 + 5.868817208E+02, 2.897000122E+02 + 5.869640106E+02, 2.905499878E+02 + 5.870462986E+02, 2.910000000E+02 + 5.871285847E+02, 2.906000061E+02 + 5.872108690E+02, 2.905499878E+02 + 5.872931513E+02, 2.897000122E+02 + 5.873754319E+02, 2.886000061E+02 + 5.874577105E+02, 2.895499878E+02 + 5.875399873E+02, 2.880000000E+02 + 5.876222622E+02, 2.894500122E+02 + 5.877045353E+02, 2.902999878E+02 + 5.877868065E+02, 2.902999878E+02 + 5.878690758E+02, 2.888500061E+02 + 5.879513433E+02, 2.893999939E+02 + 5.880336089E+02, 2.885499878E+02 + 5.881158726E+02, 2.887999878E+02 + 5.881981345E+02, 2.893500061E+02 + 5.882803944E+02, 2.901499939E+02 + 5.883626526E+02, 2.876499939E+02 + 5.884449088E+02, 2.883999939E+02 + 5.885271632E+02, 2.877999878E+02 + 5.886094156E+02, 2.887000122E+02 + 5.886916663E+02, 2.881499939E+02 + 5.887739150E+02, 2.865000000E+02 + 5.888561619E+02, 2.891499939E+02 + 5.889384068E+02, 2.880000000E+02 + 5.890206499E+02, 2.888999939E+02 + 5.891028912E+02, 2.883500061E+02 + 5.891851305E+02, 2.888999939E+02 + 5.892673680E+02, 2.886000061E+02 + 5.893496036E+02, 2.873500061E+02 + 5.894318373E+02, 2.877000122E+02 + 5.895140691E+02, 2.876000061E+02 + 5.895962991E+02, 2.878500061E+02 + 5.896785271E+02, 2.868999939E+02 + 5.897607533E+02, 2.887500000E+02 + 5.898429776E+02, 2.877000122E+02 + 5.899252000E+02, 2.871000061E+02 + 5.900074205E+02, 2.873500061E+02 + 5.900896392E+02, 2.881000061E+02 + 5.901718559E+02, 2.872500000E+02 + 5.902540708E+02, 2.873999939E+02 + 5.903362838E+02, 2.863500061E+02 + 5.904184948E+02, 2.865499878E+02 + 5.905007040E+02, 2.871499939E+02 + 5.905829113E+02, 2.875499878E+02 + 5.906651167E+02, 2.860000000E+02 + 5.907473203E+02, 2.870000000E+02 + 5.908295219E+02, 2.860000000E+02 + 5.909117216E+02, 2.867999878E+02 + 5.909939194E+02, 2.867000122E+02 + 5.910761154E+02, 2.858999939E+02 + 5.911583094E+02, 2.856499939E+02 + 5.912405016E+02, 2.857000122E+02 + 5.913226918E+02, 2.866499939E+02 + 5.914048802E+02, 2.867999878E+02 + 5.914870666E+02, 2.862000122E+02 + 5.915692512E+02, 2.860000000E+02 + 5.916514338E+02, 2.855499878E+02 + 5.917336146E+02, 2.860000000E+02 + 5.918157934E+02, 2.863999939E+02 + 5.918979704E+02, 2.862000122E+02 + 5.919801454E+02, 2.866499939E+02 + 5.920623186E+02, 2.857999878E+02 + 5.921444898E+02, 2.862999878E+02 + 5.922266592E+02, 2.866499939E+02 + 5.923088266E+02, 2.872500000E+02 + 5.923909921E+02, 2.863999939E+02 + 5.924731557E+02, 2.868500061E+02 + 5.925553174E+02, 2.856000061E+02 + 5.926374772E+02, 2.859500122E+02 + 5.927196351E+02, 2.852999878E+02 + 5.928017911E+02, 2.857500000E+02 + 5.928839451E+02, 2.850000000E+02 + 5.929660973E+02, 2.863999939E+02 + 5.930482475E+02, 2.853999939E+02 + 5.931303959E+02, 2.861499939E+02 + 5.932125423E+02, 2.848500061E+02 + 5.932946868E+02, 2.857500000E+02 + 5.933768294E+02, 2.852000122E+02 + 5.934589701E+02, 2.855000000E+02 + 5.935411088E+02, 2.858500061E+02 + 5.936232457E+02, 2.841000061E+02 + 5.937053806E+02, 2.842500000E+02 + 5.937875136E+02, 2.847500000E+02 + 5.938696447E+02, 2.848500061E+02 + 5.939517738E+02, 2.856499939E+02 + 5.940339011E+02, 2.854500122E+02 + 5.941160264E+02, 2.850000000E+02 + 5.941981498E+02, 2.853500061E+02 + 5.942802713E+02, 2.846000061E+02 + 5.943623908E+02, 2.855000000E+02 + 5.944445085E+02, 2.847500000E+02 + 5.945266242E+02, 2.845000000E+02 + 5.946087379E+02, 2.843999939E+02 + 5.946908498E+02, 2.842999878E+02 + 5.947729597E+02, 2.852500000E+02 + 5.948550677E+02, 2.858500061E+02 + 5.949371738E+02, 2.846499939E+02 + 5.950192779E+02, 2.834500122E+02 + 5.951013801E+02, 2.842999878E+02 + 5.951834804E+02, 2.843500061E+02 + 5.952655788E+02, 2.845499878E+02 + 5.953476752E+02, 2.838500061E+02 + 5.954297697E+02, 2.831000061E+02 + 5.955118622E+02, 2.848500061E+02 + 5.955939528E+02, 2.836499939E+02 + 5.956760415E+02, 2.837000122E+02 + 5.957581283E+02, 2.838999939E+02 + 5.958402131E+02, 2.841499939E+02 + 5.959222960E+02, 2.831499939E+02 + 5.960043769E+02, 2.827500000E+02 + 5.960864559E+02, 2.830000000E+02 + 5.961685330E+02, 2.846000061E+02 + 5.962506081E+02, 2.838500061E+02 + 5.963326813E+02, 2.831000061E+02 + 5.964147525E+02, 2.837999878E+02 + 5.964968218E+02, 2.841000061E+02 + 5.965788892E+02, 2.833500061E+02 + 5.966609546E+02, 2.825000000E+02 + 5.967430180E+02, 2.832999878E+02 + 5.968250796E+02, 2.835499878E+02 + 5.969071391E+02, 2.832500000E+02 + 5.969891968E+02, 2.840000000E+02 + 5.970712525E+02, 2.827000122E+02 + 5.971533062E+02, 2.830499878E+02 + 5.972353580E+02, 2.839500122E+02 + 5.973174078E+02, 2.828500061E+02 + 5.973994557E+02, 2.826499939E+02 + 5.974815017E+02, 2.827500000E+02 + 5.975635457E+02, 2.832500000E+02 + 5.976455877E+02, 2.838999939E+02 + 5.977276278E+02, 2.843999939E+02 + 5.978096659E+02, 2.833500061E+02 + 5.978917021E+02, 2.838500061E+02 + 5.979737363E+02, 2.832000122E+02 + 5.980557686E+02, 2.837000122E+02 + 5.981377989E+02, 2.820499878E+02 + 5.982198273E+02, 2.840000000E+02 + 5.983018537E+02, 2.836000061E+02 + 5.983838781E+02, 2.828999939E+02 + 5.984659006E+02, 2.841000061E+02 + 5.985479212E+02, 2.831499939E+02 + 5.986299397E+02, 2.822999878E+02 + 5.987119563E+02, 2.817500000E+02 + 5.987939710E+02, 2.819500122E+02 + 5.988759837E+02, 2.826499939E+02 + 5.989579944E+02, 2.817000122E+02 + 5.990400032E+02, 2.828500061E+02 + 5.991220099E+02, 2.817999878E+02 + 5.992040148E+02, 2.828999939E+02 + 5.992860176E+02, 2.830000000E+02 + 5.993680185E+02, 2.823500061E+02 + 5.994500175E+02, 2.824500122E+02 + 5.995320144E+02, 2.820499878E+02 + 5.996140094E+02, 2.822000122E+02 + 5.996960025E+02, 2.819500122E+02 + 5.997779935E+02, 2.827000122E+02 + 5.998599826E+02, 2.823500061E+02 + 5.999419697E+02, 2.827999878E+02 + 6.000239548E+02, 2.822500000E+02 + 6.001059380E+02, 2.825000000E+02 + 6.001879192E+02, 2.827999878E+02 + 6.002698984E+02, 2.816000061E+02 + 6.003518757E+02, 2.811000061E+02 + 6.004338510E+02, 2.820499878E+02 + 6.005158243E+02, 2.825499878E+02 + 6.005977956E+02, 2.833999939E+02 + 6.006797649E+02, 2.824500122E+02 + 6.007617323E+02, 2.818500061E+02 + 6.008436977E+02, 2.808500061E+02 + 6.009256611E+02, 2.819500122E+02 + 6.010076225E+02, 2.820000000E+02 + 6.010895819E+02, 2.817500000E+02 + 6.011715394E+02, 2.812000122E+02 + 6.012534949E+02, 2.823999939E+02 + 6.013354484E+02, 2.822999878E+02 + 6.014173999E+02, 2.826499939E+02 + 6.014993494E+02, 2.820499878E+02 + 6.015812970E+02, 2.817500000E+02 + 6.016632425E+02, 2.822500000E+02 + 6.017451861E+02, 2.816499939E+02 + 6.018271277E+02, 2.811000061E+02 + 6.019090673E+02, 2.811000061E+02 + 6.019910049E+02, 2.817000122E+02 + 6.020729405E+02, 2.820499878E+02 + 6.021548741E+02, 2.820499878E+02 + 6.022368058E+02, 2.826000061E+02 + 6.023187354E+02, 2.822000122E+02 + 6.024006631E+02, 2.812999878E+02 + 6.024825887E+02, 2.823500061E+02 + 6.025645124E+02, 2.816000061E+02 + 6.026464341E+02, 2.813500061E+02 + 6.027283538E+02, 2.810000000E+02 + 6.028102714E+02, 2.815000000E+02 + 6.028921871E+02, 2.817000122E+02 + 6.029741008E+02, 2.810499878E+02 + 6.030560125E+02, 2.810499878E+02 + 6.031379222E+02, 2.816000061E+02 + 6.032198299E+02, 2.811000061E+02 + 6.033017356E+02, 2.810000000E+02 + 6.033836393E+02, 2.813999939E+02 + 6.034655410E+02, 2.817500000E+02 + 6.035474407E+02, 2.813999939E+02 + 6.036293384E+02, 2.803999939E+02 + 6.037112341E+02, 2.803999939E+02 + 6.037931277E+02, 2.815499878E+02 + 6.038750194E+02, 2.811000061E+02 + 6.039569091E+02, 2.805000000E+02 + 6.040387968E+02, 2.808500061E+02 + 6.041206824E+02, 2.805499878E+02 + 6.042025661E+02, 2.817500000E+02 + 6.042844477E+02, 2.808999939E+02 + 6.043663273E+02, 2.811000061E+02 + 6.044482050E+02, 2.804500122E+02 + 6.045300806E+02, 2.803500061E+02 + 6.046119542E+02, 2.807000122E+02 + 6.046938258E+02, 2.804500122E+02 + 6.047756954E+02, 2.797500000E+02 + 6.048575629E+02, 2.799500122E+02 + 6.049394285E+02, 2.802000122E+02 + 6.050212920E+02, 2.811499939E+02 + 6.051031535E+02, 2.812000122E+02 + 6.051850130E+02, 2.810499878E+02 + 6.052668705E+02, 2.812500000E+02 + 6.053487260E+02, 2.799500122E+02 + 6.054305795E+02, 2.806499939E+02 + 6.055124309E+02, 2.797999878E+02 + 6.055942803E+02, 2.802999878E+02 + 6.056761277E+02, 2.798500061E+02 + 6.057579731E+02, 2.800000000E+02 + 6.058398164E+02, 2.803500061E+02 + 6.059216578E+02, 2.801000061E+02 + 6.060034971E+02, 2.815000000E+02 + 6.060853344E+02, 2.803500061E+02 + 6.061671696E+02, 2.810499878E+02 + 6.062490029E+02, 2.797000122E+02 + 6.063308341E+02, 2.800000000E+02 + 6.064126633E+02, 2.794500122E+02 + 6.064944904E+02, 2.801000061E+02 + 6.065763156E+02, 2.807999878E+02 + 6.066581387E+02, 2.798999939E+02 + 6.067399597E+02, 2.802999878E+02 + 6.068217788E+02, 2.802000122E+02 + 6.069035958E+02, 2.802000122E+02 + 6.069854108E+02, 2.813999939E+02 + 6.070672237E+02, 2.795499878E+02 + 6.071490346E+02, 2.804500122E+02 + 6.072308435E+02, 2.800499878E+02 + 6.073126504E+02, 2.807500000E+02 + 6.073944552E+02, 2.816499939E+02 + 6.074762580E+02, 2.844500122E+02 + 6.075580587E+02, 2.846000061E+02 + 6.076398574E+02, 2.851499939E+02 + 6.077216541E+02, 2.823999939E+02 + 6.078034487E+02, 2.813999939E+02 + 6.078852413E+02, 2.807999878E+02 + 6.079670319E+02, 2.805499878E+02 + 6.080488204E+02, 2.806499939E+02 + 6.081306069E+02, 2.797999878E+02 + 6.082123913E+02, 2.800000000E+02 + 6.082941737E+02, 2.800000000E+02 + 6.083759540E+02, 2.791499939E+02 + 6.084577323E+02, 2.807000122E+02 + 6.085395086E+02, 2.801499939E+02 + 6.086212828E+02, 2.802000122E+02 + 6.087030550E+02, 2.793999939E+02 + 6.087848251E+02, 2.792500000E+02 + 6.088665931E+02, 2.797500000E+02 + 6.089483592E+02, 2.805499878E+02 + 6.090301232E+02, 2.792000122E+02 + 6.091118851E+02, 2.797000122E+02 + 6.091936450E+02, 2.791499939E+02 + 6.092754028E+02, 2.791499939E+02 + 6.093571586E+02, 2.795000000E+02 + 6.094389123E+02, 2.791000061E+02 + 6.095206640E+02, 2.799500122E+02 + 6.096024136E+02, 2.792500000E+02 + 6.096841611E+02, 2.802000122E+02 + 6.097659066E+02, 2.792999878E+02 + 6.098476501E+02, 2.785000000E+02 + 6.099293915E+02, 2.795499878E+02 + 6.100111308E+02, 2.801000061E+02 + 6.100928681E+02, 2.785000000E+02 + 6.101746033E+02, 2.792999878E+02 + 6.102563365E+02, 2.795000000E+02 + 6.103380676E+02, 2.792999878E+02 + 6.104197967E+02, 2.798999939E+02 + 6.105015236E+02, 2.799500122E+02 + 6.105832486E+02, 2.800499878E+02 + 6.106649714E+02, 2.788999939E+02 + 6.107466922E+02, 2.788999939E+02 + 6.108284109E+02, 2.797500000E+02 + 6.109101276E+02, 2.800499878E+02 + 6.109918422E+02, 2.793999939E+02 + 6.110735548E+02, 2.793500061E+02 + 6.111552652E+02, 2.789500122E+02 + 6.112369736E+02, 2.795499878E+02 + 6.113186800E+02, 2.797500000E+02 + 6.114003842E+02, 2.800499878E+02 + 6.114820864E+02, 2.790000000E+02 + 6.115637866E+02, 2.795000000E+02 + 6.116454846E+02, 2.798500061E+02 + 6.117271806E+02, 2.796499939E+02 + 6.118088745E+02, 2.800000000E+02 + 6.118905664E+02, 2.794500122E+02 + 6.119722561E+02, 2.803500061E+02 + 6.120539438E+02, 2.785000000E+02 + 6.121356294E+02, 2.791499939E+02 + 6.122173130E+02, 2.788500061E+02 + 6.122989944E+02, 2.791000061E+02 + 6.123806738E+02, 2.787999878E+02 + 6.124623511E+02, 2.806499939E+02 + 6.125440264E+02, 2.795000000E+02 + 6.126256995E+02, 2.797999878E+02 + 6.127073706E+02, 2.796499939E+02 + 6.127890396E+02, 2.792999878E+02 + 6.128707065E+02, 2.785499878E+02 + 6.129523713E+02, 2.777500000E+02 + 6.130340341E+02, 2.787999878E+02 + 6.131156948E+02, 2.789500122E+02 + 6.131973533E+02, 2.790499878E+02 + 6.132790098E+02, 2.788999939E+02 + 6.133606642E+02, 2.787000122E+02 + 6.134423166E+02, 2.785499878E+02 + 6.135239668E+02, 2.788500061E+02 + 6.136056150E+02, 2.792999878E+02 + 6.136872610E+02, 2.793999939E+02 + 6.137689050E+02, 2.788500061E+02 + 6.138505469E+02, 2.787000122E+02 + 6.139321867E+02, 2.790499878E+02 + 6.140138244E+02, 2.792500000E+02 + 6.140954600E+02, 2.792500000E+02 + 6.141770935E+02, 2.794500122E+02 + 6.142587249E+02, 2.792000122E+02 + 6.143403543E+02, 2.801499939E+02 + 6.144219815E+02, 2.797500000E+02 + 6.145036067E+02, 2.787500000E+02 + 6.145852297E+02, 2.786499939E+02 + 6.146668507E+02, 2.790499878E+02 + 6.147484695E+02, 2.786000061E+02 + 6.148300863E+02, 2.794500122E+02 + 6.149117009E+02, 2.800499878E+02 + 6.149933135E+02, 2.790499878E+02 + 6.150749240E+02, 2.788999939E+02 + 6.151565323E+02, 2.787000122E+02 + 6.152381386E+02, 2.784500122E+02 + 6.153197427E+02, 2.787000122E+02 + 6.154013448E+02, 2.793500061E+02 + 6.154829447E+02, 2.793500061E+02 + 6.155645426E+02, 2.791499939E+02 + 6.156461383E+02, 2.782999878E+02 + 6.157277320E+02, 2.791000061E+02 + 6.158093235E+02, 2.786000061E+02 + 6.158909129E+02, 2.782000122E+02 + 6.159725003E+02, 2.782000122E+02 + 6.160540855E+02, 2.791499939E+02 + 6.161356686E+02, 2.784500122E+02 + 6.162172496E+02, 2.795499878E+02 + 6.162988284E+02, 2.785499878E+02 + 6.163804052E+02, 2.786499939E+02 + 6.164619799E+02, 2.792999878E+02 + 6.165435524E+02, 2.783999939E+02 + 6.166251229E+02, 2.790000000E+02 + 6.167066912E+02, 2.781000061E+02 + 6.167882574E+02, 2.781000061E+02 + 6.168698215E+02, 2.783999939E+02 + 6.169513834E+02, 2.786000061E+02 + 6.170329433E+02, 2.786499939E+02 + 6.171145011E+02, 2.777500000E+02 + 6.171960567E+02, 2.785000000E+02 + 6.172776102E+02, 2.791499939E+02 + 6.173591616E+02, 2.792500000E+02 + 6.174407108E+02, 2.792999878E+02 + 6.175222580E+02, 2.795499878E+02 + 6.176038030E+02, 2.792500000E+02 + 6.176853459E+02, 2.787500000E+02 + 6.177668867E+02, 2.788999939E+02 + 6.178484254E+02, 2.786499939E+02 + 6.179299619E+02, 2.791000061E+02 + 6.180114963E+02, 2.785499878E+02 + 6.180930286E+02, 2.786000061E+02 + 6.181745587E+02, 2.797999878E+02 + 6.182560868E+02, 2.787500000E+02 + 6.183376127E+02, 2.786000061E+02 + 6.184191365E+02, 2.784500122E+02 + 6.185006581E+02, 2.788500061E+02 + 6.185821776E+02, 2.783999939E+02 + 6.186636950E+02, 2.798999939E+02 + 6.187452103E+02, 2.779500122E+02 + 6.188267234E+02, 2.784500122E+02 + 6.189082344E+02, 2.783999939E+02 + 6.189897433E+02, 2.786000061E+02 + 6.190712500E+02, 2.787999878E+02 + 6.191527546E+02, 2.787500000E+02 + 6.192342570E+02, 2.783999939E+02 + 6.193157574E+02, 2.785000000E+02 + 6.193972556E+02, 2.784500122E+02 + 6.194787516E+02, 2.797000122E+02 + 6.195602455E+02, 2.781499939E+02 + 6.196417373E+02, 2.792000122E+02 + 6.197232269E+02, 2.788500061E+02 + 6.198047144E+02, 2.773500061E+02 + 6.198861998E+02, 2.779500122E+02 + 6.199676830E+02, 2.774500122E+02 + 6.200491641E+02, 2.775499878E+02 + 6.201306430E+02, 2.770499878E+02 + 6.202121198E+02, 2.782999878E+02 + 6.202935944E+02, 2.776000061E+02 + 6.203750669E+02, 2.782500000E+02 + 6.204565373E+02, 2.776499939E+02 + 6.205380055E+02, 2.774500122E+02 + 6.206194715E+02, 2.772999878E+02 + 6.207009355E+02, 2.777000122E+02 + 6.207823972E+02, 2.781499939E+02 + 6.208638568E+02, 2.772999878E+02 + 6.209453143E+02, 2.777000122E+02 + 6.210267696E+02, 2.780000000E+02 + 6.211082228E+02, 2.774500122E+02 + 6.211896738E+02, 2.767000122E+02 + 6.212711227E+02, 2.768999939E+02 + 6.213525694E+02, 2.759500122E+02 + 6.214340139E+02, 2.763999939E+02 + 6.215154563E+02, 2.772500000E+02 + 6.215968966E+02, 2.774500122E+02 + 6.216783347E+02, 2.775499878E+02 + 6.217597706E+02, 2.763500061E+02 + 6.218412044E+02, 2.772999878E+02 + 6.219226360E+02, 2.773500061E+02 + 6.220040655E+02, 2.771000061E+02 + 6.220854928E+02, 2.768999939E+02 + 6.221669179E+02, 2.774500122E+02 + 6.222483409E+02, 2.771000061E+02 + 6.223297618E+02, 2.763999939E+02 + 6.224111804E+02, 2.772500000E+02 + 6.224925969E+02, 2.765000000E+02 + 6.225740113E+02, 2.776000061E+02 + 6.226554234E+02, 2.774500122E+02 + 6.227368334E+02, 2.763999939E+02 + 6.228182413E+02, 2.767000122E+02 + 6.228996470E+02, 2.766000061E+02 + 6.229810505E+02, 2.773999939E+02 + 6.230624518E+02, 2.762000122E+02 + 6.231438510E+02, 2.771000061E+02 + 6.232252480E+02, 2.765000000E+02 + 6.233066429E+02, 2.777500000E+02 + 6.233880355E+02, 2.761499939E+02 + 6.234694260E+02, 2.770499878E+02 + 6.235508143E+02, 2.770499878E+02 + 6.236322005E+02, 2.770499878E+02 + 6.237135845E+02, 2.768999939E+02 + 6.237949663E+02, 2.772000122E+02 + 6.238763459E+02, 2.777000122E+02 + 6.239577234E+02, 2.769500122E+02 + 6.240390987E+02, 2.775000000E+02 + 6.241204718E+02, 2.771000061E+02 + 6.242018427E+02, 2.772500000E+02 + 6.242832115E+02, 2.755499878E+02 + 6.243645781E+02, 2.768999939E+02 + 6.244459425E+02, 2.772000122E+02 + 6.245273047E+02, 2.783500061E+02 + 6.246086647E+02, 2.766000061E+02 + 6.246900226E+02, 2.777500000E+02 + 6.247713783E+02, 2.766000061E+02 + 6.248527318E+02, 2.771499939E+02 + 6.249340831E+02, 2.754500122E+02 + 6.250154322E+02, 2.773999939E+02 + 6.250967791E+02, 2.771000061E+02 + 6.251781239E+02, 2.767999878E+02 + 6.252594665E+02, 2.772999878E+02 + 6.253408069E+02, 2.768999939E+02 + 6.254221451E+02, 2.767000122E+02 + 6.255034811E+02, 2.762999878E+02 + 6.255848149E+02, 2.768999939E+02 + 6.256661466E+02, 2.772000122E+02 + 6.257474760E+02, 2.770000000E+02 + 6.258288033E+02, 2.772500000E+02 + 6.259101283E+02, 2.767500000E+02 + 6.259914512E+02, 2.761000061E+02 + 6.260727719E+02, 2.764500122E+02 + 6.261540904E+02, 2.774500122E+02 + 6.262354067E+02, 2.773999939E+02 + 6.263167208E+02, 2.768500061E+02 + 6.263980327E+02, 2.760000000E+02 + 6.264793424E+02, 2.770499878E+02 + 6.265606499E+02, 2.778500061E+02 + 6.266419552E+02, 2.774500122E+02 + 6.267232583E+02, 2.776499939E+02 + 6.268045592E+02, 2.763500061E+02 + 6.268858580E+02, 2.773500061E+02 + 6.269671545E+02, 2.766000061E+02 + 6.270484488E+02, 2.775000000E+02 + 6.271297409E+02, 2.766000061E+02 + 6.272110308E+02, 2.767999878E+02 + 6.272923186E+02, 2.765000000E+02 + 6.273736041E+02, 2.767999878E+02 + 6.274548874E+02, 2.773999939E+02 + 6.275361685E+02, 2.773999939E+02 + 6.276174474E+02, 2.768500061E+02 + 6.276987241E+02, 2.762999878E+02 + 6.277799985E+02, 2.762500000E+02 + 6.278612708E+02, 2.757500000E+02 + 6.279425409E+02, 2.767500000E+02 + 6.280238088E+02, 2.767999878E+02 + 6.281050744E+02, 2.763999939E+02 + 6.281863378E+02, 2.763500061E+02 + 6.282675991E+02, 2.771499939E+02 + 6.283488581E+02, 2.761499939E+02 + 6.284301149E+02, 2.761499939E+02 + 6.285113695E+02, 2.766499939E+02 + 6.285926219E+02, 2.767500000E+02 + 6.286738720E+02, 2.769500122E+02 + 6.287551200E+02, 2.761000061E+02 + 6.288363657E+02, 2.763500061E+02 + 6.289176092E+02, 2.772999878E+02 + 6.289988505E+02, 2.763999939E+02 + 6.290800896E+02, 2.773999939E+02 + 6.291613265E+02, 2.763500061E+02 + 6.292425611E+02, 2.768500061E+02 + 6.293237936E+02, 2.767999878E+02 + 6.294050238E+02, 2.770499878E+02 + 6.294862518E+02, 2.767999878E+02 + 6.295674775E+02, 2.762999878E+02 + 6.296487011E+02, 2.762500000E+02 + 6.297299224E+02, 2.767000122E+02 + 6.298111415E+02, 2.776499939E+02 + 6.298923584E+02, 2.763500061E+02 + 6.299735730E+02, 2.775000000E+02 + 6.300547854E+02, 2.772000122E+02 + 6.301359956E+02, 2.763999939E+02 + 6.302172036E+02, 2.765000000E+02 + 6.302984093E+02, 2.776000061E+02 + 6.303796128E+02, 2.767500000E+02 + 6.304608141E+02, 2.775000000E+02 + 6.305420132E+02, 2.775000000E+02 + 6.306232100E+02, 2.766499939E+02 + 6.307044046E+02, 2.775000000E+02 + 6.307855969E+02, 2.768999939E+02 + 6.308667871E+02, 2.760499878E+02 + 6.309479750E+02, 2.767999878E+02 + 6.310291606E+02, 2.762999878E+02 + 6.311103440E+02, 2.757500000E+02 + 6.311915252E+02, 2.770000000E+02 + 6.312727042E+02, 2.768999939E+02 + 6.313538809E+02, 2.770499878E+02 + 6.314350554E+02, 2.763500061E+02 + 6.315162276E+02, 2.771499939E+02 + 6.315973976E+02, 2.755000000E+02 + 6.316785654E+02, 2.757500000E+02 + 6.317597309E+02, 2.767500000E+02 + 6.318408942E+02, 2.768999939E+02 + 6.319220552E+02, 2.760000000E+02 + 6.320032140E+02, 2.771000061E+02 + 6.320843706E+02, 2.766000061E+02 + 6.321655249E+02, 2.765000000E+02 + 6.322466770E+02, 2.756000061E+02 + 6.323278268E+02, 2.762500000E+02 + 6.324089744E+02, 2.760499878E+02 + 6.324901197E+02, 2.761499939E+02 + 6.325712628E+02, 2.757000122E+02 + 6.326524036E+02, 2.762000122E+02 + 6.327335422E+02, 2.754500122E+02 + 6.328146786E+02, 2.757999878E+02 + 6.328958127E+02, 2.765000000E+02 + 6.329769445E+02, 2.767000122E+02 + 6.330580741E+02, 2.760000000E+02 + 6.331392015E+02, 2.755000000E+02 + 6.332203265E+02, 2.758999939E+02 + 6.333014494E+02, 2.754500122E+02 + 6.333825700E+02, 2.761000061E+02 + 6.334636883E+02, 2.760000000E+02 + 6.335448044E+02, 2.767500000E+02 + 6.336259182E+02, 2.752999878E+02 + 6.337070297E+02, 2.766000061E+02 + 6.337881390E+02, 2.763999939E+02 + 6.338692461E+02, 2.765499878E+02 + 6.339503509E+02, 2.748999939E+02 + 6.340314534E+02, 2.767000122E+02 + 6.341125537E+02, 2.760499878E+02 + 6.341936517E+02, 2.770499878E+02 + 6.342747474E+02, 2.761000061E+02 + 6.343558409E+02, 2.761000061E+02 + 6.344369322E+02, 2.747999878E+02 + 6.345180211E+02, 2.765499878E+02 + 6.345991078E+02, 2.760499878E+02 + 6.346801922E+02, 2.766499939E+02 + 6.347612744E+02, 2.760000000E+02 + 6.348423543E+02, 2.760000000E+02 + 6.349234320E+02, 2.756499939E+02 + 6.350045073E+02, 2.757999878E+02 + 6.350855804E+02, 2.756000061E+02 + 6.351666513E+02, 2.765000000E+02 + 6.352477198E+02, 2.771499939E+02 + 6.353287861E+02, 2.752999878E+02 + 6.354098501E+02, 2.760000000E+02 + 6.354909119E+02, 2.752000122E+02 + 6.355719714E+02, 2.764500122E+02 + 6.356530286E+02, 2.766499939E+02 + 6.357340835E+02, 2.763999939E+02 + 6.358151362E+02, 2.761000061E+02 + 6.358961866E+02, 2.766499939E+02 + 6.359772347E+02, 2.757000122E+02 + 6.360582805E+02, 2.758500061E+02 + 6.361393241E+02, 2.757999878E+02 + 6.362203654E+02, 2.754500122E+02 + 6.363014044E+02, 2.762500000E+02 + 6.363824411E+02, 2.755499878E+02 + 6.364634756E+02, 2.763999939E+02 + 6.365445077E+02, 2.761499939E+02 + 6.366255376E+02, 2.755000000E+02 + 6.367065652E+02, 2.765499878E+02 + 6.367875905E+02, 2.759500122E+02 + 6.368686136E+02, 2.761499939E+02 + 6.369496344E+02, 2.758999939E+02 + 6.370306528E+02, 2.747999878E+02 + 6.371116690E+02, 2.758500061E+02 + 6.371926829E+02, 2.752999878E+02 + 6.372736945E+02, 2.760499878E+02 + 6.373547039E+02, 2.765499878E+02 + 6.374357109E+02, 2.756000061E+02 + 6.375167157E+02, 2.761000061E+02 + 6.375977182E+02, 2.757000122E+02 + 6.376787183E+02, 2.757000122E+02 + 6.377597162E+02, 2.757000122E+02 + 6.378407118E+02, 2.767500000E+02 + 6.379217051E+02, 2.755000000E+02 + 6.380026961E+02, 2.765499878E+02 + 6.380836849E+02, 2.756000061E+02 + 6.381646713E+02, 2.756000061E+02 + 6.382456554E+02, 2.758999939E+02 + 6.383266373E+02, 2.750499878E+02 + 6.384076168E+02, 2.752000122E+02 + 6.384885941E+02, 2.755000000E+02 + 6.385695690E+02, 2.755000000E+02 + 6.386505417E+02, 2.766499939E+02 + 6.387315120E+02, 2.757500000E+02 + 6.388124801E+02, 2.755000000E+02 + 6.388934459E+02, 2.758999939E+02 + 6.389744093E+02, 2.762000122E+02 + 6.390553705E+02, 2.752500000E+02 + 6.391363294E+02, 2.748999939E+02 + 6.392172859E+02, 2.755499878E+02 + 6.392982402E+02, 2.765000000E+02 + 6.393791921E+02, 2.746499939E+02 + 6.394601418E+02, 2.752999878E+02 + 6.395410891E+02, 2.753999939E+02 + 6.396220341E+02, 2.752999878E+02 + 6.397029769E+02, 2.755499878E+02 + 6.397839173E+02, 2.755499878E+02 + 6.398648554E+02, 2.763500061E+02 + 6.399457912E+02, 2.761000061E+02 + 6.400267247E+02, 2.757000122E+02 + 6.401076559E+02, 2.753999939E+02 + 6.401885848E+02, 2.760499878E+02 + 6.402695114E+02, 2.758500061E+02 + 6.403504356E+02, 2.755000000E+02 + 6.404313576E+02, 2.759500122E+02 + 6.405122772E+02, 2.751000061E+02 + 6.405931945E+02, 2.765000000E+02 + 6.406741095E+02, 2.762999878E+02 + 6.407550222E+02, 2.754500122E+02 + 6.408359326E+02, 2.769500122E+02 + 6.409168406E+02, 2.757500000E+02 + 6.409977464E+02, 2.761499939E+02 + 6.410786498E+02, 2.755499878E+02 + 6.411595509E+02, 2.761000061E+02 + 6.412404497E+02, 2.758999939E+02 + 6.413213462E+02, 2.762500000E+02 + 6.414022403E+02, 2.757000122E+02 + 6.414831322E+02, 2.757999878E+02 + 6.415640217E+02, 2.760000000E+02 + 6.416449088E+02, 2.762500000E+02 + 6.417257937E+02, 2.752999878E+02 + 6.418066762E+02, 2.754500122E+02 + 6.418875565E+02, 2.752000122E+02 + 6.419684343E+02, 2.757999878E+02 + 6.420493099E+02, 2.758500061E+02 + 6.421301831E+02, 2.753999939E+02 + 6.422110541E+02, 2.747999878E+02 + 6.422919226E+02, 2.751000061E+02 + 6.423727889E+02, 2.757500000E+02 + 6.424536528E+02, 2.757000122E+02 + 6.425345144E+02, 2.757999878E+02 + 6.426153737E+02, 2.758999939E+02 + 6.426962306E+02, 2.762999878E+02 + 6.427770852E+02, 2.750000000E+02 + 6.428579375E+02, 2.757999878E+02 + 6.429387874E+02, 2.757999878E+02 + 6.430196350E+02, 2.762500000E+02 + 6.431004803E+02, 2.751499939E+02 + 6.431813232E+02, 2.760499878E+02 + 6.432621639E+02, 2.766499939E+02 + 6.433430021E+02, 2.747999878E+02 + 6.434238380E+02, 2.760000000E+02 + 6.435046716E+02, 2.755000000E+02 + 6.435855029E+02, 2.747999878E+02 + 6.436663318E+02, 2.750000000E+02 + 6.437471584E+02, 2.753999939E+02 + 6.438279826E+02, 2.754500122E+02 + 6.439088045E+02, 2.750000000E+02 + 6.439896241E+02, 2.752999878E+02 + 6.440704413E+02, 2.757000122E+02 + 6.441512561E+02, 2.751499939E+02 + 6.442320686E+02, 2.751499939E+02 + 6.443128788E+02, 2.759500122E+02 + 6.443936867E+02, 2.752999878E+02 + 6.444744922E+02, 2.752500000E+02 + 6.445552953E+02, 2.754500122E+02 + 6.446360961E+02, 2.756000061E+02 + 6.447168945E+02, 2.749500122E+02 + 6.447976906E+02, 2.758500061E+02 + 6.448784844E+02, 2.752500000E+02 + 6.449592758E+02, 2.752500000E+02 + 6.450400648E+02, 2.748999939E+02 + 6.451208515E+02, 2.761499939E+02 + 6.452016359E+02, 2.761499939E+02 + 6.452824179E+02, 2.751499939E+02 + 6.453631975E+02, 2.750499878E+02 + 6.454439748E+02, 2.754500122E+02 + 6.455247498E+02, 2.751499939E+02 + 6.456055223E+02, 2.754500122E+02 + 6.456862926E+02, 2.750000000E+02 + 6.457670604E+02, 2.746000061E+02 + 6.458478259E+02, 2.752500000E+02 + 6.459285891E+02, 2.752999878E+02 + 6.460093499E+02, 2.753500061E+02 + 6.460901083E+02, 2.757000122E+02 + 6.461708644E+02, 2.753999939E+02 + 6.462516181E+02, 2.757999878E+02 + 6.463323695E+02, 2.750000000E+02 + 6.464131185E+02, 2.748500061E+02 + 6.464938651E+02, 2.752500000E+02 + 6.465746094E+02, 2.751000061E+02 + 6.466553513E+02, 2.765000000E+02 + 6.467360908E+02, 2.750000000E+02 + 6.468168280E+02, 2.755000000E+02 + 6.468975628E+02, 2.754500122E+02 + 6.469782953E+02, 2.750499878E+02 + 6.470590253E+02, 2.756499939E+02 + 6.471397531E+02, 2.754500122E+02 + 6.472204784E+02, 2.757000122E+02 + 6.473012014E+02, 2.753999939E+02 + 6.473819220E+02, 2.750000000E+02 + 6.474626402E+02, 2.742999878E+02 + 6.475433561E+02, 2.752999878E+02 + 6.476240696E+02, 2.753500061E+02 + 6.477047807E+02, 2.757999878E+02 + 6.477854894E+02, 2.752000122E+02 + 6.478661958E+02, 2.748999939E+02 + 6.479468998E+02, 2.755000000E+02 + 6.480276014E+02, 2.761000061E+02 + 6.481083007E+02, 2.742999878E+02 + 6.481889976E+02, 2.752500000E+02 + 6.482696921E+02, 2.747999878E+02 + 6.483503842E+02, 2.755499878E+02 + 6.484310739E+02, 2.752500000E+02 + 6.485117613E+02, 2.751000061E+02 + 6.485924463E+02, 2.749500122E+02 + 6.486731289E+02, 2.755499878E+02 + 6.487538091E+02, 2.752999878E+02 + 6.488344869E+02, 2.763500061E+02 + 6.489151624E+02, 2.765499878E+02 + 6.489958355E+02, 2.757500000E+02 + 6.490765062E+02, 2.750000000E+02 + 6.491571745E+02, 2.744500122E+02 + 6.492378404E+02, 2.750499878E+02 + 6.493185039E+02, 2.748500061E+02 + 6.493991651E+02, 2.749500122E+02 + 6.494798239E+02, 2.747000122E+02 + 6.495604802E+02, 2.761499939E+02 + 6.496411342E+02, 2.742500000E+02 + 6.497217858E+02, 2.748999939E+02 + 6.498024350E+02, 2.757999878E+02 + 6.498830819E+02, 2.747500000E+02 + 6.499637263E+02, 2.751000061E+02 + 6.500443683E+02, 2.751499939E+02 + 6.501250080E+02, 2.752999878E+02 + 6.502056452E+02, 2.748999939E+02 + 6.502862801E+02, 2.751499939E+02 + 6.503669126E+02, 2.759500122E+02 + 6.504475426E+02, 2.743999939E+02 + 6.505281703E+02, 2.753500061E+02 + 6.506087956E+02, 2.756000061E+02 + 6.506894185E+02, 2.754500122E+02 + 6.507700390E+02, 2.753999939E+02 + 6.508506571E+02, 2.746000061E+02 + 6.509312727E+02, 2.756499939E+02 + 6.510118860E+02, 2.757500000E+02 + 6.510924969E+02, 2.753500061E+02 + 6.511731054E+02, 2.752999878E+02 + 6.512537115E+02, 2.758500061E+02 + 6.513343152E+02, 2.749500122E+02 + 6.514149165E+02, 2.754500122E+02 + 6.514955154E+02, 2.752999878E+02 + 6.515761118E+02, 2.750000000E+02 + 6.516567059E+02, 2.753500061E+02 + 6.517372976E+02, 2.753500061E+02 + 6.518178868E+02, 2.747500000E+02 + 6.518984737E+02, 2.747500000E+02 + 6.519790581E+02, 2.749500122E+02 + 6.520596402E+02, 2.753999939E+02 + 6.521402198E+02, 2.755000000E+02 + 6.522207970E+02, 2.747500000E+02 + 6.523013719E+02, 2.746499939E+02 + 6.523819443E+02, 2.745499878E+02 + 6.524625142E+02, 2.756499939E+02 + 6.525430818E+02, 2.747000122E+02 + 6.526236470E+02, 2.751499939E+02 + 6.527042097E+02, 2.749500122E+02 + 6.527847701E+02, 2.750499878E+02 + 6.528653280E+02, 2.755499878E+02 + 6.529458835E+02, 2.742500000E+02 + 6.530264366E+02, 2.743500061E+02 + 6.531069873E+02, 2.748500061E+02 + 6.531875355E+02, 2.757500000E+02 + 6.532680814E+02, 2.756499939E+02 + 6.533486248E+02, 2.750000000E+02 + 6.534291658E+02, 2.747000122E+02 + 6.535097044E+02, 2.753999939E+02 + 6.535902406E+02, 2.760499878E+02 + 6.536707743E+02, 2.755499878E+02 + 6.537513056E+02, 2.747999878E+02 + 6.538318345E+02, 2.755000000E+02 + 6.539123610E+02, 2.753999939E+02 + 6.539928851E+02, 2.747500000E+02 + 6.540734067E+02, 2.750000000E+02 + 6.541539259E+02, 2.749500122E+02 + 6.542344427E+02, 2.754500122E+02 + 6.543149570E+02, 2.746000061E+02 + 6.543954689E+02, 2.750000000E+02 + 6.544759784E+02, 2.747000122E+02 + 6.545564855E+02, 2.755000000E+02 + 6.546369901E+02, 2.752500000E+02 + 6.547174923E+02, 2.750499878E+02 + 6.547979921E+02, 2.742000122E+02 + 6.548784895E+02, 2.751499939E+02 + 6.549589844E+02, 2.757999878E+02 + 6.550394769E+02, 2.752500000E+02 + 6.551199669E+02, 2.753500061E+02 + 6.552004545E+02, 2.751000061E+02 + 6.552809397E+02, 2.753500061E+02 + 6.553614225E+02, 2.747500000E+02 + 6.554419028E+02, 2.749500122E+02 + 6.555223806E+02, 2.749500122E+02 + 6.556028561E+02, 2.749500122E+02 + 6.556833291E+02, 2.747999878E+02 + 6.557637996E+02, 2.754500122E+02 + 6.558442678E+02, 2.749500122E+02 + 6.559247335E+02, 2.761499939E+02 + 6.560051967E+02, 2.740000000E+02 + 6.560856575E+02, 2.750499878E+02 + 6.561661159E+02, 2.757500000E+02 + 6.562465718E+02, 2.748500061E+02 + 6.563270253E+02, 2.748999939E+02 + 6.564074763E+02, 2.747999878E+02 + 6.564879249E+02, 2.752500000E+02 + 6.565683710E+02, 2.741499939E+02 + 6.566488147E+02, 2.752000122E+02 + 6.567292560E+02, 2.750000000E+02 + 6.568096948E+02, 2.746499939E+02 + 6.568901311E+02, 2.738500061E+02 + 6.569705651E+02, 2.750000000E+02 + 6.570509965E+02, 2.747000122E+02 + 6.571314255E+02, 2.755499878E+02 + 6.572118521E+02, 2.746000061E+02 + 6.572922762E+02, 2.743500061E+02 + 6.573726979E+02, 2.745000000E+02 + 6.574531171E+02, 2.753999939E+02 + 6.575335338E+02, 2.751499939E+02 + 6.576139481E+02, 2.750499878E+02 + 6.576943600E+02, 2.753999939E+02 + 6.577747694E+02, 2.748999939E+02 + 6.578551763E+02, 2.747500000E+02 + 6.579355808E+02, 2.752000122E+02 + 6.580159828E+02, 2.750000000E+02 + 6.580963824E+02, 2.747500000E+02 + 6.581767795E+02, 2.745000000E+02 + 6.582571741E+02, 2.752000122E+02 + 6.583375663E+02, 2.739500122E+02 + 6.584179561E+02, 2.745499878E+02 + 6.584983433E+02, 2.748999939E+02 + 6.585787281E+02, 2.753999939E+02 + 6.586591105E+02, 2.757000122E+02 + 6.587394904E+02, 2.750000000E+02 + 6.588198678E+02, 2.742999878E+02 + 6.589002428E+02, 2.747000122E+02 + 6.589806153E+02, 2.747999878E+02 + 6.590609853E+02, 2.752500000E+02 + 6.591413529E+02, 2.751000061E+02 + 6.592217180E+02, 2.759500122E+02 + 6.593020806E+02, 2.745499878E+02 + 6.593824407E+02, 2.753500061E+02 + 6.594627984E+02, 2.741499939E+02 + 6.595431537E+02, 2.753500061E+02 + 6.596235064E+02, 2.751499939E+02 + 6.597038567E+02, 2.748500061E+02 + 6.597842045E+02, 2.751000061E+02 + 6.598645499E+02, 2.747999878E+02 + 6.599448927E+02, 2.747999878E+02 + 6.600252331E+02, 2.749500122E+02 + 6.601055711E+02, 2.747500000E+02 + 6.601859065E+02, 2.753999939E+02 + 6.602662395E+02, 2.757999878E+02 + 6.603465700E+02, 2.747000122E+02 + 6.604268980E+02, 2.754500122E+02 + 6.605072236E+02, 2.753999939E+02 + 6.605875466E+02, 2.746000061E+02 + 6.606678672E+02, 2.752999878E+02 + 6.607481853E+02, 2.751000061E+02 + 6.608285010E+02, 2.743500061E+02 + 6.609088141E+02, 2.756000061E+02 + 6.609891248E+02, 2.749500122E+02 + 6.610694330E+02, 2.747500000E+02 + 6.611497387E+02, 2.742500000E+02 + 6.612300419E+02, 2.745499878E+02 + 6.613103426E+02, 2.749500122E+02 + 6.613906409E+02, 2.752000122E+02 + 6.614709367E+02, 2.751499939E+02 + 6.615512300E+02, 2.746499939E+02 + 6.616315208E+02, 2.751499939E+02 + 6.617118091E+02, 2.748999939E+02 + 6.617920949E+02, 2.752500000E+02 + 6.618723782E+02, 2.746499939E+02 From 0ed9dc663ee33d880f25c0463094b78b92bd2d99 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 16:00:12 +0100 Subject: [PATCH 08/13] change git ignore and add json hadnler back --- .gitignore | 1 + src/pynxtools_raman_multiformat/reader.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e2042c2..5d9c667 100644 --- a/.gitignore +++ b/.gitignore @@ -199,6 +199,7 @@ cython_debug/ .pyenv *.pyc *.txt +!tests/data-multi/.txt machen !requirements.txt !dev-requirements.txt build/ diff --git a/src/pynxtools_raman_multiformat/reader.py b/src/pynxtools_raman_multiformat/reader.py index f395796..eb62820 100644 --- a/src/pynxtools_raman_multiformat/reader.py +++ b/src/pynxtools_raman_multiformat/reader.py @@ -41,7 +41,8 @@ def __init__(self, *args, **kwargs): self.extensions = { ".yml": self.handle_eln_file, ".yaml": self.handle_eln_file, - ".txt": self.handle_txt_file} + ".txt": self.handle_txt_file, + ".json": self.set_config_file} self.txt_line_skips = None From 31f193c8320379984e221325a08b1c5198f30002 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 16:20:18 +0100 Subject: [PATCH 09/13] fix pytest --- src/pynxtools_raman_multiformat/eln_data.yaml | 1 + tests/data_multi/config_file.json | 1 + tests/data_multi/eln_data.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/src/pynxtools_raman_multiformat/eln_data.yaml b/src/pynxtools_raman_multiformat/eln_data.yaml index 1a108c8..cd6befb 100644 --- a/src/pynxtools_raman_multiformat/eln_data.yaml +++ b/src/pynxtools_raman_multiformat/eln_data.yaml @@ -116,6 +116,7 @@ raman_experiment_type: non-resonant Raman spectroscopy title: Si-Wafer start_time: '2024-06-21T14:04:54+02:00' definition: NXraman +definition/@url: https://github.com/FAIRmat-NFDI/nexus_definitions/blob/fairmat/contributed_definitions/NXraman.nxdl.xml # can be removed later, if the NeXus as submodule in pynxtools is updated, just in to let CICD pass. measurement_file_meta_data: delimiter: "," skip_lines: 17 diff --git a/tests/data_multi/config_file.json b/tests/data_multi/config_file.json index 72d87c8..2187491 100644 --- a/tests/data_multi/config_file.json +++ b/tests/data_multi/config_file.json @@ -47,6 +47,7 @@ "/ENTRY[entry]/title": "@eln", "/ENTRY[entry]/start_time": "@eln", "/ENTRY[entry]/definition": "@eln", + "/ENTRY[entry]/definition/@url": "@eln", "/ENTRY[entry]/@default": "data", "/ENTRY[entry]/DATA[data]/@signal": "y_values", "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", diff --git a/tests/data_multi/eln_data.yaml b/tests/data_multi/eln_data.yaml index 1a108c8..cd6befb 100644 --- a/tests/data_multi/eln_data.yaml +++ b/tests/data_multi/eln_data.yaml @@ -116,6 +116,7 @@ raman_experiment_type: non-resonant Raman spectroscopy title: Si-Wafer start_time: '2024-06-21T14:04:54+02:00' definition: NXraman +definition/@url: https://github.com/FAIRmat-NFDI/nexus_definitions/blob/fairmat/contributed_definitions/NXraman.nxdl.xml # can be removed later, if the NeXus as submodule in pynxtools is updated, just in to let CICD pass. measurement_file_meta_data: delimiter: "," skip_lines: 17 From 7c47dd1c977238fe26eded12896ef82e77821106 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Tue, 19 Nov 2024 16:20:50 +0100 Subject: [PATCH 10/13] fix pytest 2 --- .../config_file.json | 1 + tests/data_multi/example.nxs | Bin 77304 -> 77408 bytes 2 files changed, 1 insertion(+) diff --git a/src/pynxtools_raman_multiformat/config_file.json b/src/pynxtools_raman_multiformat/config_file.json index 72d87c8..2187491 100644 --- a/src/pynxtools_raman_multiformat/config_file.json +++ b/src/pynxtools_raman_multiformat/config_file.json @@ -47,6 +47,7 @@ "/ENTRY[entry]/title": "@eln", "/ENTRY[entry]/start_time": "@eln", "/ENTRY[entry]/definition": "@eln", + "/ENTRY[entry]/definition/@url": "@eln", "/ENTRY[entry]/@default": "data", "/ENTRY[entry]/DATA[data]/@signal": "y_values", "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", diff --git a/tests/data_multi/example.nxs b/tests/data_multi/example.nxs index 1262e8fed7787162bfd81b240459a77eda18c247..d2e013dccc53c7a7e2b43971d1052fad5e076181 100644 GIT binary patch delta 230 zcmexyo8`eBmI)e633?l~nD|7^tPCx!j12TlOf8JeOtlRRtqcqdCkygP^P$RY&f+s; zVoaYLC}3xlmY7+Tn^>ZsoS#=xl$lgolA02qlA4y8msygTpI5B!7g3a$o0zAUSCNvV zSCN~;;5PXnuRa$86dYjNxbZvV#se?Fc;bQgO%mHA7=t(&xh7}tla&@=5CALuq00!S yGhq4{7^ZhCGPZNFFo-a4Fq9VMOpaz(WlZ1hsKmIPd-8(=3e!217+qN0fa(EVSU;-( delta 113 zcmaEGhvmm@mI)e6KXf;0G4Y9-S{WKxnV9Gq8CaSaS!x>?S{WD^P8Q^o=0la)oW*Cx zG+9E>fXRY=$L7a^2le71QPhX|Tm@!>RkI`zoj}qe=ZUBGb BB7Fb= From dc3ee2e8bdcb07f0e734ede96833fb2e1b883287 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Thu, 21 Nov 2024 09:56:47 +0100 Subject: [PATCH 11/13] change attrs to be in line with convention, used eln instead --- .../config_file.json | 10 +++---- src/pynxtools_raman_multiformat/reader.py | 27 ++++++++++++++---- tests/data_multi/config_file.json | 10 +++---- tests/data_multi/example.nxs | Bin 77408 -> 77408 bytes 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/pynxtools_raman_multiformat/config_file.json b/src/pynxtools_raman_multiformat/config_file.json index 2187491..7e06aa4 100644 --- a/src/pynxtools_raman_multiformat/config_file.json +++ b/src/pynxtools_raman_multiformat/config_file.json @@ -52,12 +52,12 @@ "/ENTRY[entry]/DATA[data]/@signal": "y_values", "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", "/ENTRY[entry]/DATA[data]/x_values": "@data:x_values", - "/ENTRY[entry]/DATA[data]/y_values/@units": "@attrs:/ENTRY[entry]/data/unit_y", - "/ENTRY[entry]/DATA[data]/x_values/@units": "@attrs:/ENTRY[entry]/data/unit_x", - "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_y", - "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_x", + "/ENTRY[entry]/DATA[data]/y_values/@units": "@eln:/ENTRY[entry]/data/unit_y", + "/ENTRY[entry]/DATA[data]/x_values/@units": "@eln:/ENTRY[entry]/data/unit_x", + "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@eln:/ENTRY[entry]/data/longname_y", + "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@eln:/ENTRY[entry]/data/longname_x", "/ENTRY[entry]/DATA[data]/@axes":"x_values_raman", - "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@attrs:/ENTRY[entry]/data/longname_x_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@eln:/ENTRY[entry]/data/longname_x_raman", "/ENTRY[entry]/DATA[data]/x_values_raman": "@data:x_values_raman", "/ENTRY[entry]/DATA[data]/x_values_raman/@units": "1/cm" } diff --git a/src/pynxtools_raman_multiformat/reader.py b/src/pynxtools_raman_multiformat/reader.py index eb62820..cf205cd 100644 --- a/src/pynxtools_raman_multiformat/reader.py +++ b/src/pynxtools_raman_multiformat/reader.py @@ -70,12 +70,12 @@ def handle_txt_file(self, filepath) -> Dict[str, Any]: def get_attr(self, key: str, path: str) -> Any: """ - Get the metadata that was stored in the main file. + Get the metadata that was stored in the main(=data) file. """ - # This uses the path given from the config file (path = the part after "@attrs:") - # to get the corresponting value stored at in the eln_data.yaml file, at the - # path value. - return self.eln_data.get(path) + + if self.txt_data is None: + return None + return self.txt_data.get(path) def read_txt_file(self, filepath): """ @@ -143,9 +143,24 @@ def read_txt_file(self, filepath): def get_eln_data(self, key: str, path: str) -> Any: - """Returns data from the given eln path.""" + """ + Returns data from the eln file. This is done via the file: "config_file.json". + There are two suations: + 1. The .json file has only a key assigned + 2. The .json file has a key AND a value assigned. + The assigned value should be a "path", which reflects another entry in the eln file. + This acts as eln_path redirection, which is used for example to assign flexible + parameters from the eln_file (units, axisnames, etc.) + """ if self.eln_data is None: return None + + # Use the path to get the eln_data (this refers to the 2. case) + if len(path) > 0: + return self.eln_data.get(path) + + # If no path is assigned, use directly the given key to extract + # the eln data/value (this refers to the 1. case) # Filtering list, for NeXus concepts which use mixed notation of # upper and lowercase to ensure correct NXclass labeling. diff --git a/tests/data_multi/config_file.json b/tests/data_multi/config_file.json index 2187491..7e06aa4 100644 --- a/tests/data_multi/config_file.json +++ b/tests/data_multi/config_file.json @@ -52,12 +52,12 @@ "/ENTRY[entry]/DATA[data]/@signal": "y_values", "/ENTRY[entry]/DATA[data]/y_values": "@data:y_values", "/ENTRY[entry]/DATA[data]/x_values": "@data:x_values", - "/ENTRY[entry]/DATA[data]/y_values/@units": "@attrs:/ENTRY[entry]/data/unit_y", - "/ENTRY[entry]/DATA[data]/x_values/@units": "@attrs:/ENTRY[entry]/data/unit_x", - "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_y", - "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@attrs:/ENTRY[entry]/data/longname_x", + "/ENTRY[entry]/DATA[data]/y_values/@units": "@eln:/ENTRY[entry]/data/unit_y", + "/ENTRY[entry]/DATA[data]/x_values/@units": "@eln:/ENTRY[entry]/data/unit_x", + "/ENTRY[entry]/DATA[data]/y_values/@long_name": "@eln:/ENTRY[entry]/data/longname_y", + "/ENTRY[entry]/DATA[data]/x_values/@long_name": "@eln:/ENTRY[entry]/data/longname_x", "/ENTRY[entry]/DATA[data]/@axes":"x_values_raman", - "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@attrs:/ENTRY[entry]/data/longname_x_raman", + "/ENTRY[entry]/DATA[data]/x_values_raman/@long_name": "@eln:/ENTRY[entry]/data/longname_x_raman", "/ENTRY[entry]/DATA[data]/x_values_raman": "@data:x_values_raman", "/ENTRY[entry]/DATA[data]/x_values_raman/@units": "1/cm" } diff --git a/tests/data_multi/example.nxs b/tests/data_multi/example.nxs index d2e013dccc53c7a7e2b43971d1052fad5e076181..907e843e3958b3b0b0c35c32d1ea496ab93a63ab 100644 GIT binary patch delta 67 zcmaEGhvmT?mJJ$wl17FK29{Q)Mpj0adgjJvhQ?;v28LD!28NRb`NV}VWt+43wrBA% Hev=0PYx@x< delta 67 zcmaEGhvmT?mJJ$wl7^NFhGtfVmR3dvdM2h8MrNkk28LD!28NRb`NV}VWt+43wrBA% Hev=0PZ2J)` From b9f5128fd68e7876bc82012a7cb4d20aee1b9f96 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Thu, 21 Nov 2024 10:15:42 +0100 Subject: [PATCH 12/13] move data to examples --- .gitignore | 3 ++- examples/witec/txt/README.md | 12 ++++++++++++ .../witec/txt}/Si-wafer-Raman-Spectrum-1.txt | 0 .../witec/txt}/config_file.json | 0 .../witec/txt}/eln_data.yaml | 0 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 examples/witec/txt/README.md rename {src/pynxtools_raman_multiformat => examples/witec/txt}/Si-wafer-Raman-Spectrum-1.txt (100%) rename {src/pynxtools_raman_multiformat => examples/witec/txt}/config_file.json (100%) rename {src/pynxtools_raman_multiformat => examples/witec/txt}/eln_data.yaml (100%) diff --git a/.gitignore b/.gitignore index 5d9c667..5d24723 100644 --- a/.gitignore +++ b/.gitignore @@ -199,7 +199,8 @@ cython_debug/ .pyenv *.pyc *.txt -!tests/data-multi/.txt machen +!tests/data-multi/.txt +!examples/witec/txt/*.txt !requirements.txt !dev-requirements.txt build/ diff --git a/examples/witec/txt/README.md b/examples/witec/txt/README.md new file mode 100644 index 0000000..e791602 --- /dev/null +++ b/examples/witec/txt/README.md @@ -0,0 +1,12 @@ +## WITEC example Raman Multiformat Reader +This is an example dataset to convert a .txt file +(exported ASCII file, Si-wafer-Raman-Spectrum-1.txt) with the addition of a ELN +data file (eln_data.yaml) to a NeXus file. + +## How to use +- 1. Go into the root folder of this repository (default "pynxtools-raman") +- 2. Copy and paste: + ``` + dataconverter examples/witec/txt/eln_data.yaml examples/witec/txt/Si-wafer-Raman-Spectrum-1.txt examples/witec/txt/config_file.json --reader raman_multi --nxdl NXraman --output examples/witec/txt/new_output.nxs + ``` +- 3. A new file should be created at "examples/witec/txt/new_output.nxs". \ No newline at end of file diff --git a/src/pynxtools_raman_multiformat/Si-wafer-Raman-Spectrum-1.txt b/examples/witec/txt/Si-wafer-Raman-Spectrum-1.txt similarity index 100% rename from src/pynxtools_raman_multiformat/Si-wafer-Raman-Spectrum-1.txt rename to examples/witec/txt/Si-wafer-Raman-Spectrum-1.txt diff --git a/src/pynxtools_raman_multiformat/config_file.json b/examples/witec/txt/config_file.json similarity index 100% rename from src/pynxtools_raman_multiformat/config_file.json rename to examples/witec/txt/config_file.json diff --git a/src/pynxtools_raman_multiformat/eln_data.yaml b/examples/witec/txt/eln_data.yaml similarity index 100% rename from src/pynxtools_raman_multiformat/eln_data.yaml rename to examples/witec/txt/eln_data.yaml From 2effc99f4b9292e0ebe0c607569a2f739fa0d9b1 Mon Sep 17 00:00:00 2001 From: Ron Hildebrandt Date: Thu, 21 Nov 2024 10:19:56 +0100 Subject: [PATCH 13/13] add readme.md notes --- src/pynxtools_raman_multiformat/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pynxtools_raman_multiformat/README.md b/src/pynxtools_raman_multiformat/README.md index 5f8ebc7..ae39aaf 100644 --- a/src/pynxtools_raman_multiformat/README.md +++ b/src/pynxtools_raman_multiformat/README.md @@ -2,4 +2,8 @@ This is example data for writing a new data reader based on the [`MultiFormatReader`](https://github.com/FAIRmat-NFDI/pynxtools/blob/master/src/pynxtools/dataconverter/readers/multi/reader.py) from scratch. A how-to guide to implement this reader is available [here](https://fairmat-nfdi.github.io/pynxtools/how-tos/use-multi-format-reader.html) ## This file types are currently supported: -- Witec Alpha Raman microscope - via ELN file (.yaml) \ No newline at end of file +- Witec Alpha Raman microscope - via ELN file (.yaml) and .txt data file + + +## Examples +Examples can be found in the example folder in the root of this repository. \ No newline at end of file