diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 00000000..dd6bea0d --- /dev/null +++ b/.coveragerc @@ -0,0 +1,5 @@ +[run] +relative_files = True +omit = + config.py + config-3.py diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index d14d1965..1ea56a36 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -43,14 +43,15 @@ Describe the steps to reproduce the behavior: - [ ] Select **scientist(s)** or **no scientist** required ### Labels ### +- [ ] Review default **alert** labels - [ ] Select **component(s)** - [ ] Select **priority** - [ ] Select **requestor(s)** -### Projects and Milestone ### -- [ ] Select **Organization** level **Project** for support of the current coordinated release -- [ ] Select **Repository** level **Project** for development toward the next official release or add **alert: NEED CYCLE ASSIGNMENT** label +### Milestone and Projects ### - [ ] Select **Milestone** as the next bugfix version +- [ ] Select **Coordinated METplus-X.Y Support** project for support of the current coordinated release +- [ ] Select **METcalcpy-X.Y.Z Development** project for development toward the next official release ## Define Related Issue(s) ## Consider the impact to the other METplus components. @@ -65,20 +66,20 @@ Branch name: `bugfix__main__` - [ ] Add/update log messages for easier debugging. - [ ] Add/update unit tests. - [ ] Add/update documentation. -- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/overview.html#metplus-components-python-requirements) table. +- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/appendixA.html#metplus-components-python-packages) table. - [ ] Push local changes to GitHub. - [ ] Submit a pull request to merge into **main_\**. Pull request: `bugfix main_ ` - [ ] Define the pull request metadata, as permissions allow. -Select: **Reviewer(s)** and **Development** issues -Select: **Organization** level software support **Project** for the current coordinated release +Select: **Reviewer(s)** and **Development** issue Select: **Milestone** as the next bugfix version +Select: Coordinated METplus-X.Y Support project for support of the current coordinated release - [ ] Iterate until the reviewer(s) accept and merge your changes. - [ ] Delete your fork or branch. - [ ] Complete the steps above to fix the bug on the **develop** branch. Branch name: `bugfix__develop_` Pull request: `bugfix develop ` -Select: **Reviewer(s)** and **Development** issues -Select: **Repository** level development cycle **Project** for the next official release +Select: **Reviewer(s)** and **Development** issue Select: **Milestone** as the next official version +Select: **METcalcpy-X.Y.Z Development** project for development toward the next official release - [ ] Close this issue. diff --git a/.github/ISSUE_TEMPLATE/enhancement_request.md b/.github/ISSUE_TEMPLATE/enhancement_request.md index 1b21d582..3e4fa2ba 100644 --- a/.github/ISSUE_TEMPLATE/enhancement_request.md +++ b/.github/ISSUE_TEMPLATE/enhancement_request.md @@ -33,13 +33,14 @@ Consider breaking the enhancement down into sub-issues. - [ ] Select **scientist(s)** or **no scientist** required ### Labels ### +- [ ] Review default **alert** labels - [ ] Select **component(s)** - [ ] Select **priority** - [ ] Select **requestor(s)** -### Projects and Milestone ### -- [ ] Select **Repository** and/or **Organization** level **Project(s)** or add **alert: NEED CYCLE ASSIGNMENT** label -- [ ] Select **Milestone** as the next official version or **Future Versions** +### Milestone and Projects ### +- [ ] Select **Milestone** as a **METcalcpy-X.Y.Z** version, **Consider for Next Release**, or **Backlog of Development Ideas** +- [ ] For a **METcalcpy-X.Y.Z** version, select the **METcalcpy-X.Y.Z Development** project ## Define Related Issue(s) ## Consider the impact to the other METplus components. @@ -54,14 +55,14 @@ Branch name: `feature__` - [ ] Add/update log messages for easier debugging. - [ ] Add/update unit tests. - [ ] Add/update documentation. -- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/overview.html#metplus-components-python-requirements) table. +- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/appendixA.html#metplus-components-python-packages) table. - [ ] Push local changes to GitHub. - [ ] Submit a pull request to merge into **develop**. Pull request: `feature ` - [ ] Define the pull request metadata, as permissions allow. -Select: **Reviewer(s)** and **Development** issues -Select: **Repository** level development cycle **Project** for the next official release +Select: **Reviewer(s)** and **Development** issue Select: **Milestone** as the next official version +Select: **METcalcpy-X.Y.Z Development** project for development toward the next official release - [ ] Iterate until the reviewer(s) accept and merge your changes. - [ ] Delete your fork or branch. - [ ] Close this issue. diff --git a/.github/ISSUE_TEMPLATE/new_feature_request.md b/.github/ISSUE_TEMPLATE/new_feature_request.md index de7fe132..c658f423 100644 --- a/.github/ISSUE_TEMPLATE/new_feature_request.md +++ b/.github/ISSUE_TEMPLATE/new_feature_request.md @@ -37,13 +37,14 @@ Consider breaking the new feature down into sub-issues. - [ ] Select **scientist(s)** or **no scientist** required ### Labels ### +- [ ] Review default **alert** labels - [ ] Select **component(s)** - [ ] Select **priority** - [ ] Select **requestor(s)** -### Projects and Milestone ### -- [ ] Select **Repository** and/or **Organization** level **Project(s)** or add **alert: NEED CYCLE ASSIGNMENT** label -- [ ] Select **Milestone** as the next official version or **Future Versions** +### Milestone and Projects ### +- [ ] Select **Milestone** as a **METcalcpy-X.Y.Z** version, **Consider for Next Release**, or **Backlog of Development Ideas** +- [ ] For a **METcalcpy-X.Y.Z** version, select the **METcalcpy-X.Y.Z Development** project ## Define Related Issue(s) ## Consider the impact to the other METplus components. @@ -58,14 +59,14 @@ Branch name: `feature__` - [ ] Add/update log messages for easier debugging. - [ ] Add/update unit tests. - [ ] Add/update documentation. -- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/overview.html#metplus-components-python-requirements) table. +- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/appendixA.html#metplus-components-python-packages) table. - [ ] Push local changes to GitHub. - [ ] Submit a pull request to merge into **develop**. Pull request: `feature ` - [ ] Define the pull request metadata, as permissions allow. -Select: **Reviewer(s)** and **Development** issues -Select: **Repository** level development cycle **Project** for the next official release +Select: **Reviewer(s)** and **Development** issue Select: **Milestone** as the next official version +Select: **METcalcpy-X.Y.Z Development** project for development toward the next official release - [ ] Iterate until the reviewer(s) accept and merge your changes. - [ ] Delete your fork or branch. - [ ] Close this issue. diff --git a/.github/ISSUE_TEMPLATE/sub-issue.md b/.github/ISSUE_TEMPLATE/sub-issue.md index 855e27d8..8769bfa9 100644 --- a/.github/ISSUE_TEMPLATE/sub-issue.md +++ b/.github/ISSUE_TEMPLATE/sub-issue.md @@ -23,10 +23,13 @@ This is a sub-issue of #*List the parent issue number here*. - [ ] Select **scientist(s)** or **no scientist** required ### Labels ### +- [ ] Review default **alert** labels - [ ] Select **component(s)** - [ ] Select **priority** - [ ] Select **requestor(s)** -### Projects and Milestone ### -- [ ] Select **Repository** and/or **Organization** level **Project(s)** or add **alert: NEED CYCLE ASSIGNMENT** label -- [ ] Select **Milestone** as the next official version or **Future Versions** +### Milestone and Projects ### +- [ ] Select **Milestone** as a **METcalcpy-X.Y.Z** version, **Consider for Next Release**, or **Backlog of Development Ideas** +- [ ] For a **METcalcpy-X.Y.Z** version, select the **METcalcpy-X.Y.Z Development** project + + diff --git a/.github/ISSUE_TEMPLATE/task.md b/.github/ISSUE_TEMPLATE/task.md index 2c43db7e..276f0847 100644 --- a/.github/ISSUE_TEMPLATE/task.md +++ b/.github/ISSUE_TEMPLATE/task.md @@ -33,13 +33,14 @@ Consider breaking the task down into sub-issues. - [ ] Select **scientist(s)** or **no scientist** required ### Labels ### +- [ ] Review default **alert** labels - [ ] Select **component(s)** - [ ] Select **priority** - [ ] Select **requestor(s)** -### Projects and Milestone ### -- [ ] Select **Repository** and/or **Organization** level **Project(s)** or add **alert: NEED CYCLE ASSIGNMENT** label -- [ ] Select **Milestone** as the next official version or **Future Versions** +### Milestone and Projects ### +- [ ] Select **Milestone** as a **METcalcpy-X.Y.Z** version, **Consider for Next Release**, or **Backlog of Development Ideas** +- [ ] For a **METcalcpy-X.Y.Z** version, select the **METcalcpy-X.Y.Z Development** project ## Define Related Issue(s) ## Consider the impact to the other METplus components. @@ -54,14 +55,14 @@ Branch name: `feature__` - [ ] Add/update log messages for easier debugging. - [ ] Add/update unit tests. - [ ] Add/update documentation. -- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/overview.html#metplus-components-python-requirements) table. +- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/appendixA.html#metplus-components-python-packages) table. - [ ] Push local changes to GitHub. - [ ] Submit a pull request to merge into **develop**. Pull request: `feature ` - [ ] Define the pull request metadata, as permissions allow. -Select: **Reviewer(s)** and **Development** issues -Select: **Repository** level development cycle **Project** for the next official release +Select: **Reviewer(s)** and **Development** issue Select: **Milestone** as the next official version +Select: **METcalcpy-X.Y.Z Development** project for development toward the next official release - [ ] Iterate until the reviewer(s) accept and merge your changes. - [ ] Delete your fork or branch. - [ ] Close this issue. diff --git a/.github/jobs/configure_sonarqube.sh b/.github/jobs/configure_sonarqube.sh index aedcb9ae..c377cbaa 100755 --- a/.github/jobs/configure_sonarqube.sh +++ b/.github/jobs/configure_sonarqube.sh @@ -47,9 +47,7 @@ fi # Configure the sonar-project.properties [ -e $SONAR_PROPERTIES ] && rm $SONAR_PROPERTIES -sed -e "s|SONAR_PROJECT_KEY|METcalcpy-GHA|" \ - -e "s|SONAR_PROJECT_NAME|METcalcpy GHA|" \ - -e "s|SONAR_PROJECT_VERSION|$SONAR_PROJECT_VERSION|" \ +sed -e "s|SONAR_PROJECT_VERSION|$SONAR_PROJECT_VERSION|" \ -e "s|SONAR_HOST_URL|$SONAR_HOST_URL|" \ -e "s|SONAR_TOKEN|$SONAR_TOKEN|" \ -e "s|SONAR_BRANCH_NAME|$SOURCE_BRANCH|" \ diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 342abeb9..89dcb848 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -18,14 +18,14 @@ If **yes**, please describe: ## Pull Request Checklist ## See the [METplus Workflow](https://metplus.readthedocs.io/en/latest/Contributors_Guide/github_workflow.html) for details. -- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/overview.html#metplus-components-python-requirements) table. +- [ ] Add any new Python packages to the [METplus Components Python Requirements](https://metplus.readthedocs.io/en/develop/Users_Guide/appendixA.html#metplus-components-python-packages) table. - [ ] Review the source issue metadata (required labels, projects, and milestone). - [ ] Complete the PR definition above. - [ ] Ensure the PR title matches the feature or bugfix branch name. - [ ] Define the PR metadata, as permissions allow. -Select: **Reviewer(s)** -Select: **Organization** level software support **Project** or **Repository** level development cycle **Project** +Select: **Reviewer(s)** and **Development** issue Select: **Milestone** as the version that will include these changes +Select: **Coordinated METplus-X.Y Support** project for bugfix releases or **METcalcpy-X.Y.Z Development** project for official releases - [ ] After submitting the PR, select the :gear: icon in the **Development** section of the right hand sidebar. Search for the issue that this PR will close and select it, if it is not already selected. - [ ] After the PR is approved, merge your changes. If permissions do not allow this, request that the reviewer do the merge. - [ ] Close the linked issue and delete your feature or bugfix branch from GitHub. diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yaml similarity index 91% rename from .github/workflows/documentation.yml rename to .github/workflows/documentation.yaml index 3d2eb265..3840f8b7 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yaml @@ -20,11 +20,11 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade python-dateutil requests sphinx \ - sphinx-gallery Pillow sphinx_rtd_theme + sphinx-gallery Pillow sphinx_rtd_theme pandas xarray python -m pip install -r docs/requirements.txt - name: Build docs run: ./.github/jobs/build_documentation.sh diff --git a/.github/workflows/release-checksum.yml b/.github/workflows/release-checksum.yaml similarity index 100% rename from .github/workflows/release-checksum.yml rename to .github/workflows/release-checksum.yaml diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yaml similarity index 71% rename from .github/workflows/sonarqube.yml rename to .github/workflows/sonarqube.yaml index d48e1237..aded32d2 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yaml @@ -48,6 +48,25 @@ jobs: # Disable shallow clones for better analysis fetch-depth: 0 + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: "3.10" + - name: Install dependencies + run: | + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + # try installing scikit-image explicitly. Using requirements.txt versions doesn't seem to build correctly + python -m pip install -U scikit-image + # install the coverage.py code coverage tool + python3 -m pip install pytest-cov + - name: Test with pytest + # these are tests that don't have external dependencies (i.e. need to run on Linux test hosts where large datasets reside or require exact machine type for + # image comparisons to work, etc.) + run: | + coverage run -m pytest + coverage report -m + coverage xml + - name: Get branch name id: get_branch_name run: echo branch_name=${GITHUB_REF#refs/heads/} >> $GITHUB_OUTPUT diff --git a/.github/workflows/trigger_metplus.yml b/.github/workflows/trigger_metplus.yaml similarity index 100% rename from .github/workflows/trigger_metplus.yml rename to .github/workflows/trigger_metplus.yaml diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yaml similarity index 58% rename from .github/workflows/unit_tests.yml rename to .github/workflows/unit_tests.yaml index 4310450e..fd0e9c01 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yaml @@ -41,37 +41,21 @@ jobs: - name: Install dependencies run: | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - # try installing scikit-image explicitly. Using requirements.txt versions doesn't seem to build correctly + # try installing scikit-image explicitly. Using requirements.txt versions doesn't seem to build correctly python -m pip install -U scikit-image # install the coverage.py code coverage tool - python3 -m pip install coverage + python3 -m pip install pytest-cov - name: Test with pytest # these are tests that don't have external dependencies (i.e. need to run on Linux test hosts where large datasets reside or require exact machine type for # image comparisons to work, etc.) run: | - cd test - pytest test_agg_eclv.py - pytest test_agg_stats_and_boot.py - pytest test_agg_stats_with_groups.py - pytest test_calc_difficulty_index.py - pytest test_convert_lon_indices.py - pytest test_ctc_statistics.py - pytest test_event_equalize.py - pytest test_event_equalize_against_values.py - pytest test_lon_360_to_180.py - pytest test_statistics.py - pytest test_tost_paired.py - pytest test_utils.py - pytest test_validate_mv_python.py - pytest test_future_warnings.py - pytest test_sl1l2.py - pytest test_reformatted_for_agg.py - coverage run -m pytest test_agg_eclv.py test_agg_stats_and_boot.py test_agg_stats_with_groups.py test_calc_difficulty_index.py test_convert_lon_indices.py test_event_equalize.py test_event_equalize_against_values.py test_lon_360_to_180.py test_statistics.py test_tost_paired.py test_utils.py test_future_warnings.py test_reformatted_for_agg.py + coverage run -m pytest + coverage report -m coverage html - + - name: Archive code coverage results uses: actions/upload-artifact@v4 with: name: code-coverage-report - path: test/htmlcov/index.html + path: htmlcov/index.html diff --git a/.gitignore b/.gitignore index 09435396..5584dc88 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,15 @@ # temp files surrounded by # *#*# +__pycache__/ + # sphinx output docs/_build - +docs/diag_ref/generated +docs/sg_execution_times.rst docs/auto_examples +/metcalcpy.egg-info/ +.coverage +coverage.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..c225a11b --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,9 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +/sonarlint* \ No newline at end of file diff --git a/.idea/METcalcpy.iml b/.idea/METcalcpy.iml new file mode 100644 index 00000000..3ed51aed --- /dev/null +++ b/.idea/METcalcpy.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..cdb6aaba --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,19 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..105ce2da --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..68f2d8a5 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 0b538bf5..39a78b05 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -25,3 +25,4 @@ python: sphinx: builder: html configuration: docs/conf.py + fail_on_warning: true diff --git a/docs/Contributors_Guide/index.rst b/docs/Contributors_Guide/index.rst index 1940b4f5..de7f3d2c 100644 --- a/docs/Contributors_Guide/index.rst +++ b/docs/Contributors_Guide/index.rst @@ -9,39 +9,14 @@ other scripts. Python Requirements =================== -* Python 3.10.4 - -* imutils 0.5.4 - -* imageio 2.25.0 - -* metpy 1.4.0 - -* netcdf4 1.6.2 - -* numpy 1.24.1 - -* opencv-python 4.7.0.68 - -* pandas 1.4.2 - -* pytest 7.1.2 - -* pyyaml 6.0 - -* scikit-image 0.19.3 - -* scipy 1.10.0 - -* xarray 2023.1.0 - +For information about the Python Requirements for METcalcpy, please see the User’s Guide `Python Requirements `_ section in the `Installation Guide `_. Coding Standards ================ -METplus has adopted some coding standards for its Python code. Detailed information can be found here: https://metplus.readthedocs.io/en/main_v4.0/Users_Guide/ +METplus has adopted some coding standards for its Python code. Detailed information can be found in the `METplus Coding Standards `_ documentation. -Comment the Python code using Python docstrings: https://peps.python.org/pep-0257/ +Comment the Python code using `Python docstring conventions `_. Organization of Code in the Github Repository ============================================= @@ -203,9 +178,9 @@ Create User Documentation * from the command line, run the following commands:: - build clean + make clean - build_html + make html * Verify that there aren’t any warnings or error messages in the output diff --git a/docs/Users_Guide/index.rst b/docs/Users_Guide/index.rst index 66a60f65..545d6b37 100644 --- a/docs/Users_Guide/index.rst +++ b/docs/Users_Guide/index.rst @@ -68,6 +68,7 @@ National Center for Atmospheric Research (NCAR) is sponsored by NSF. aggregation write_mpr release-notes + ../diag_ref/index **Indices and tables** diff --git a/docs/Users_Guide/release-notes.rst b/docs/Users_Guide/release-notes.rst index ae362a7e..3d765b1e 100644 --- a/docs/Users_Guide/release-notes.rst +++ b/docs/Users_Guide/release-notes.rst @@ -9,6 +9,54 @@ METcalcpy Release Notes ======================= +METcalcpy Velsion 3.0.0-beta5 release notes (20230628) +------------------------------------------------------ + + + .. dropdown:: New Functionality + + * **Add updates to MPR writer and fix bugs for stratosphere** (`#385 `_) + + .. dropdown:: Enhancements + + * **Enhance METcalcpy to use the TOTAL_DIR column when aggregate statistics wind direction statistics in the VL1L2, VAL1L2, and VCNT columns** (`#384 `_) + + .. dropdown:: Internal + + * Update GitHub issue and pull request templates to reflect the current development workflow details (`#326 `_) + * Consider using only .yml or only .yaml extensions (`#349 `_) + * Code coverage statistics (`#54 `_) + + + .. dropdown:: Bugfixes + + +METcalcpy Velsion 3.0.0-beta4 release notes (20230417) +------------------------------------------------------ + + + .. dropdown:: New Functionality + + + .. dropdown:: Enhancements + + * Add calculation for Terrestrial Coupling Index (`#364 `_) + * Enhance aggregate statistics for ECNT,VL1L2,VAL1L2 and VCNT (`#361 `_) + + + .. dropdown:: Internal + + * Develop sonarqube capabilities (`#367 `_) + * Add github action for sonarqube (`#366 `_) + * Updated pythoh requirements.txt (`#355 `_) + * Modified python requirements section of Users Guide (`#352 `_) + + + .. dropdown:: Bugfixes + + + * Address negative values returned by calculate_bcmse() and calculate_bcrmse() in sl1l2_statistics module (`#329 `_) + METcalcpy Velsion 3.0.0-beta3 release notes (20230207) ------------------------------------------------------ diff --git a/docs/Users_Guide/write_mpr.rst b/docs/Users_Guide/write_mpr.rst index e6c52bcc..e5e6c704 100644 --- a/docs/Users_Guide/write_mpr.rst +++ b/docs/Users_Guide/write_mpr.rst @@ -16,9 +16,10 @@ Example Examples for how to use this script can be found in the driver scripts of the use cases listed below. -* `Stratosphere Polar `_ * `Blocking `_ * `Weather Regime `_ +* `Stratosphere Polar `_ +* `Stratosphere QBO `_ Information about Input Data ============================ @@ -52,7 +53,7 @@ INTERP_PNTS = 1, and OBTYPE = ADPUPA. observation valid time mod_name: string output model name (the MODEL column in MET) - desc: string + desc: 1D array string output description (the DESC column in MET) fcst_var: 1D array string forecast variable name diff --git a/docs/_templates/autosummary/module.rst b/docs/_templates/autosummary/module.rst new file mode 100644 index 00000000..1bfebbde --- /dev/null +++ b/docs/_templates/autosummary/module.rst @@ -0,0 +1,61 @@ +{{ fullname | escape | underline}} + +.. automodule:: {{ fullname }} + + {% block attributes %} + {% if attributes %} + .. rubric:: {{ _('Module Attributes') }} + + .. autosummary:: + {% for item in attributes %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block functions %} + {% if functions %} + .. rubric:: {{ _('Functions') }} + + .. autosummary:: + :toctree: + {% for item in functions %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block classes %} + {% if classes %} + .. rubric:: {{ _('Classes') }} + + .. autosummary:: + {% for item in classes %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block exceptions %} + {% if exceptions %} + .. rubric:: {{ _('Exceptions') }} + + .. autosummary:: + {% for item in exceptions %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + +{% block modules %} +{% if modules %} +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: +{% for item in modules %} + {{ item }} +{%- endfor %} +{% endif %} +{% endblock %} diff --git a/docs/conf.py b/docs/conf.py index 040227cf..c6879204 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,21 +12,21 @@ # import os import sys -sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('..')) print(sys.path) # -- Project information ----------------------------------------------------- project = 'METcalcpy' -copyright = '2023, NCAR' +copyright = '2024, NCAR' author = 'UCAR/NCAR, NOAA, CSU/CIRA, and CU/CIRES' -author_list = 'Fisher, H., C. Kalb, D. Adriaansen, D. Fillmore, M. Win-Gildenmeister, T. Burek, and T. Jensen' +author_list = 'Fisher, H., C. Kalb, D. Adriaansen, D. Fillmore, M. Win-Gildenmeister, T. Burek, M. Smith, and T. Jensen' version = 'release' verinfo = version release = f'{version}' -release_year = '2023' -release_date = f'{release_year}-07-28' +release_year = '2024' +release_date = f'{release_year}-06-28' copyright = f'{release_year}, {author}' # if set, adds "Last updated on " followed by @@ -39,10 +39,15 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ['sphinx.ext.autodoc', + 'sphinx.ext.autosummary', 'sphinx.ext.intersphinx', 'sphinx_gallery.gen_gallery', 'sphinx_design', - 'sphinx_rtd_theme',] + 'sphinx_rtd_theme', + 'sphinx.ext.napoleon',] + +# Turn on sphinx.ext.autosummary +autosummary_generate = True # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/diag_ref/index.rst b/docs/diag_ref/index.rst new file mode 100644 index 00000000..63c69f56 --- /dev/null +++ b/docs/diag_ref/index.rst @@ -0,0 +1,18 @@ +.. _api-index: + +******************************** +Diagnostic Calculation Reference +******************************** + +This reference contains technical documentation for various diagnostic calculations in METcalcpy. + +.. currentmodule:: metcalcpy.diagnostics + +.. autosummary:: + :toctree: generated/ + :recursive: + + land_surface + +* :ref:`modindex` +* :ref:`genindex` diff --git a/docs/index.rst b/docs/index.rst index ab455bf2..b27ff749 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -121,9 +121,6 @@ To cite this documentation in publications, please refer to the METcalcpy User's Users_Guide/index Contributors_Guide/index - - - Indices ======= diff --git a/docs/requirements.txt b/docs/requirements.txt index acd19d3d..95a6da1f 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,3 +4,5 @@ sphinxcontrib-bibtex==2.6.1 sphinx==5.3.0 sphinx-design==0.3.0 sphinx_rtd_theme==1.3.0 +pandas==2.2.1 +xarray==2024.3.0 diff --git a/docs/version b/docs/version index be6293e4..c2d90939 100644 --- a/docs/version +++ b/docs/version @@ -1 +1 @@ -__version__="3.0.0-beta4-dev" +__version__="3.0.0-beta6-dev" diff --git a/internal/scripts/installation/modulefiles/2.1.0_cheyenne b/internal/scripts/installation/modulefiles/2.1.0_cheyenne deleted file mode 100644 index 61037565..00000000 --- a/internal/scripts/installation/modulefiles/2.1.0_cheyenne +++ /dev/null @@ -1,15 +0,0 @@ -#%Module###################################################################### -## -## METcalcpy -## -proc ModulesHelp { } { - puts stderr "Sets up the paths and environment variables to use the METcalcpy-2.1.0 - *** For help see the official MET webpage at -#http://www.dtcenter.org/met/users ***" -} - -module load ncarenv/1.3 -module load intel/2021.2 - -prepend-path PATH /glade/p/ral/jntp/MET/METplus/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin -prepend-path PYTHONPATH /glade/p/ral/jntp/MET/METcalcpy/METcalcpy-2.1.0 diff --git a/internal/scripts/installation/modulefiles/3.0.0_casper b/internal/scripts/installation/modulefiles/3.0.0_casper new file mode 100644 index 00000000..f999651a --- /dev/null +++ b/internal/scripts/installation/modulefiles/3.0.0_casper @@ -0,0 +1,14 @@ +#%Module###################################################################### +## +## METcalcpy +## +proc ModulesHelp { } { + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0 + *** For help see the official MET webpage at http://www.dtcenter.org/met/users ***" +} + +module load ncarenv/23.10 +module load intel-classic/2023.2.1 + +prepend-path PATH /glade/work/dtcrt/METplus/casper/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin +prepend-path PYTHONPATH /glade/work/dtcrt/METplus/casper/components/METcalcpy/installations/METcalcpy-3.0.0 diff --git a/internal/scripts/installation/modulefiles/3.0.0_derecho b/internal/scripts/installation/modulefiles/3.0.0_derecho new file mode 100644 index 00000000..c895e317 --- /dev/null +++ b/internal/scripts/installation/modulefiles/3.0.0_derecho @@ -0,0 +1,15 @@ +#%Module###################################################################### +## +## METcalcpy +## +proc ModulesHelp { } { + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0 + *** For help see the official MET webpage at +#http://www.dtcenter.org/met/users ***" +} + +module load ncarenv/23.09 +module load intel/2023.2.1 + +prepend-path PATH /glade/work/dtcrt/METplus/derecho/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin +prepend-path PYTHONPATH /glade/work/dtcrt/METplus/derecho/components/METcalcpy/installations/METcalcpy-3.0.0 \ No newline at end of file diff --git a/internal/scripts/installation/modulefiles/3.0.0_gaea b/internal/scripts/installation/modulefiles/3.0.0_gaea new file mode 100644 index 00000000..b00ba640 --- /dev/null +++ b/internal/scripts/installation/modulefiles/3.0.0_gaea @@ -0,0 +1,13 @@ +#%Module###################################################################### +## +## METcalcpy +## +proc ModulesHelp { } { + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0. + *** For help see the official MET webpage at http://www.dtcenter.org/met/users ***" +} + +module load intel-oneapi/2022.0.2 + +prepend-path PATH /gpfs/f5/esrl/proj-shared/Julie.Prestopnik/projects/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin +prepend-path PYTHONPATH /usw/met/METcalcpy/METcalcpy-3.0.0-beta3 diff --git a/internal/scripts/installation/modulefiles/2.1.0_hera b/internal/scripts/installation/modulefiles/3.0.0_hera similarity index 82% rename from internal/scripts/installation/modulefiles/2.1.0_hera rename to internal/scripts/installation/modulefiles/3.0.0_hera index f0863ba0..9109620e 100644 --- a/internal/scripts/installation/modulefiles/2.1.0_hera +++ b/internal/scripts/installation/modulefiles/3.0.0_hera @@ -3,11 +3,11 @@ ## METcalcpy ## proc ModulesHelp { } { - puts stderr "Sets up the paths and environment variables to use the METcalcpy-2.1.0. + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0. *** For help see the official MET webpage at http://www.dtcenter.org/met/users ***" } prereq intel prepend-path PATH /scratch1/BMC/dtc/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin -prepend-path PYTHONPATH /contrib/METcalcpy/METcalcpy-2.1.0 +prepend-path PYTHONPATH /contrib/METcalcpy/METcalcpy-3.0.0 diff --git a/internal/scripts/installation/modulefiles/3.0.0_hercules b/internal/scripts/installation/modulefiles/3.0.0_hercules new file mode 100644 index 00000000..2901e739 --- /dev/null +++ b/internal/scripts/installation/modulefiles/3.0.0_hercules @@ -0,0 +1,14 @@ +#%Module###################################################################### +## +## METcalcpy +## +proc ModulesHelp { } { + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0. + *** For help see the official MET webpage at http://www.dtcenter.org/met/users ***" +} + +module load contrib +module load intel-oneapi-compilers/2022.2.1 + +prepend-path PATH /work/noaa/ovp/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin +prepend-path PYTHONPATH /apps/contrib/MET/METcalcpy/METcalcpy-3.0.0 diff --git a/internal/scripts/installation/modulefiles/2.1.0_jet b/internal/scripts/installation/modulefiles/3.0.0_jet similarity index 82% rename from internal/scripts/installation/modulefiles/2.1.0_jet rename to internal/scripts/installation/modulefiles/3.0.0_jet index 8a530855..53f05ed8 100644 --- a/internal/scripts/installation/modulefiles/2.1.0_jet +++ b/internal/scripts/installation/modulefiles/3.0.0_jet @@ -3,11 +3,11 @@ ## METcalcpy ## proc ModulesHelp { } { - puts stderr "Sets up the paths and environment variables to use the METcalcpy-2.1.0. + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0. *** For help see the official MET webpage at http://www.dtcenter.org/met/users ***" } prereq intel prepend-path PATH /lfs1/HFIP/dtc-hurr/METplus/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin -prepend-path PYTHONPATH /contrib/met/METcalcpy/METcalcpy-2.1.0 +prepend-path PYTHONPATH /contrib/met/METcalcpy/METcalcpy-3.0.0 diff --git a/internal/scripts/installation/modulefiles/2.1.0_orion b/internal/scripts/installation/modulefiles/3.0.0_orion similarity index 81% rename from internal/scripts/installation/modulefiles/2.1.0_orion rename to internal/scripts/installation/modulefiles/3.0.0_orion index 46617e15..4fc130e7 100644 --- a/internal/scripts/installation/modulefiles/2.1.0_orion +++ b/internal/scripts/installation/modulefiles/3.0.0_orion @@ -3,7 +3,7 @@ ## METcalcpy ## proc ModulesHelp { } { - puts stderr "Sets up the paths and environment variables to use the METcalcpy-2.1.0. + puts stderr "Sets up the paths and environment variables to use the METcalcpy-3.0.0. *** For help see the official MET webpage at http://www.dtcenter.org/met/users ***" } @@ -11,4 +11,4 @@ module load contrib module load intel/2020.2 prepend-path PATH /work/noaa/ovp/miniconda/miniconda3/envs/metplus_v5.1_py3.10/bin -prepend-path PYTHONPATH /apps/contrib/MET/METcalcpy/METcalcpy-2.1.0 +prepend-path PYTHONPATH /apps/contrib/MET/METcalcpy/METcalcpy-3.0.0 diff --git a/internal/scripts/sonarqube/run_sonarqube.sh b/internal/scripts/sonarqube/run_sonarqube.sh index d43df3ec..10faaf98 100755 --- a/internal/scripts/sonarqube/run_sonarqube.sh +++ b/internal/scripts/sonarqube/run_sonarqube.sh @@ -118,9 +118,7 @@ SONAR_PROPERTIES=sonar-project.properties # Configure the sonar-project.properties [ -e $SONAR_PROPERTIES ] && rm $SONAR_PROPERTIES -sed -e "s|SONAR_PROJECT_KEY|METcalcpy_NB|" \ - -e "s|SONAR_PROJECT_NAME|METcalcpy Nightly Build|" \ - -e "s|SONAR_PROJECT_VERSION|$SONAR_PROJECT_VERSION|" \ +sed -e "s|SONAR_PROJECT_VERSION|$SONAR_PROJECT_VERSION|" \ -e "s|SONAR_HOST_URL|$SONAR_HOST_URL|" \ -e "s|SONAR_TOKEN|$SONAR_TOKEN|" \ -e "s|SONAR_BRANCH_NAME|${1}|" \ diff --git a/internal/scripts/sonarqube/sonar-project.properties b/internal/scripts/sonarqube/sonar-project.properties index c3534080..88f8ac41 100644 --- a/internal/scripts/sonarqube/sonar-project.properties +++ b/internal/scripts/sonarqube/sonar-project.properties @@ -1,10 +1,11 @@ # Project and source code settings -sonar.projectKey=SONAR_PROJECT_KEY -sonar.projectName=SONAR_PROJECT_NAME +sonar.projectKey=METcalcpy +sonar.projectName=METcalcpy sonar.projectVersion=SONAR_PROJECT_VERSION sonar.branch.name=SONAR_BRANCH_NAME sonar.sources=metcalcpy,scratch,test sonar.coverage.exclusions=test/** +sonar.python.coverage.reportPaths=coverage.xml sonar.sourceEncoding=UTF-8 # SonarQube server diff --git a/metcalcpy/agg_stat.py b/metcalcpy/agg_stat.py index 0a4e0921..c7d70ef4 100644 --- a/metcalcpy/agg_stat.py +++ b/metcalcpy/agg_stat.py @@ -38,6 +38,7 @@ import yaml import pandas + from metcalcpy import GROUP_SEPARATOR, DATE_TIME_REGEX from metcalcpy.bootstrap import bootstrap_and_value, BootstrapResults from metcalcpy.util.ctc_statistics import * @@ -54,6 +55,7 @@ from metcalcpy.util.pstd_statistics import * from metcalcpy.util.rps_statistics import * from metcalcpy.util.mcts_statistics import * +from metcalcpy.util.utils import get_met_version from metcalcpy.util.utils import is_string_integer, get_derived_curve_name, \ calc_derived_curve_value, intersection, is_derived_point, parse_bool, \ @@ -95,7 +97,13 @@ def __init__(self, in_params): header=[0], sep='\t' ) - self.column_names = self.input_data.columns.values + + cols = self.input_data.columns.to_list() + # Convert all col headers to lower case + lc_cols = [lc_cols.lower() for lc_cols in cols] + self.column_names = np.array(lc_cols) + self.input_data.columns = lc_cols + except pandas.errors.EmptyDataError: raise except KeyError as er: @@ -175,6 +183,10 @@ def __init__(self, in_params): 'vcnt_dir_abser': ['ufbar', 'vfbar', 'uobar', 'vobar'], 'vcnt_anom_corr': ['uvffabar', 'uvfoabar', 'uvooabar', 'fa_speed_bar', 'oa_speed_bar'], 'vcnt_anom_corr_uncntr': ['uvffabar', 'uvfoabar', 'uvooabar'], + 'vcnt_dir_me': ['dir_me'], + 'vcnt_dir_mae': ['dir_mae'], + 'vcnt_dir_mse': ['dir_mse'], + 'vcnt_dir_rmse': ['dir_mse'], 'vl1l2_bias': ['uvffbar', 'uvoobar'], 'vl1l2_fvar': ['uvffbar', 'f_speed_bar'], @@ -182,9 +194,16 @@ def __init__(self, in_params): 'vl1l2_speed_err': ['ufbar', 'vfbar', 'uobar', 'vobar'], 'vl1l2_rmsve': ['uvffbar', 'uvfobar', 'uvoobar'], 'vl1l2_msve': ['uvffbar', 'uvfobar', 'uvoobar'], + 'vl1l2_dir_me': ['dir_me'], + 'vl1l2_dir_mae': ['dir_mae'], + 'vl1l2_dir_mse': ['dir_mse'], + 'val1l2_anom_corr': ['ufabar', 'vfabar', 'uoabar', 'voabar', 'uvfoabar', 'uvffabar', 'uvooabar'], + 'val1l2_dira_me': ['dira_me'], + 'val1l2_dira_mae': ['dira_mae'], + 'val1l2_dira_mse': ['dira_mse'], 'ssvar_fbar': ['fbar'], 'ssvar_fstdev': ['fbar', 'ffbar'], @@ -224,7 +243,9 @@ def __init__(self, in_params): 'ecnt_me_ge_obs': ['me_ge_obs'], 'ecnt_n_lt_obs': [], 'ecnt_me_lt_obs': ['me_lt_obs'], - 'ecnt_bias_ratio': ['me_ge_obs','me_lt_obs'], + 'ecnt_bias_ratio': ['me_ge_obs', 'me_lt_obs'], + 'ecnt_ign_conv_oerr': ['ign_conv_oerr'], + 'ecnt_ign_corr_oerr': ['ign_corr_oerr'], 'nbr_fbs': ['fbs'], 'nbr_fss': ['fss'], @@ -441,39 +462,67 @@ def _prepare_grad_data(self, data_for_prepare): def _prepare_vl1l2_data(self, data_for_prepare): """Prepares vl1l2 data. - Multiplies needed for the statistic calculation columns to the 'total'value + Multiplies needed for the statistic calculation columns to the 'total' value + or 'total_dir' value for MET version 12.0 and above. Args: data_for_prepare: a 2d numpy array of values we want to calculate the statistic on """ + # Determine the MET version for this data. If MET v12.0 or above, use the 'total_dir' column rather than + # the 'total' column. + met_version = get_met_version(data_for_prepare) + major = int(met_version.major) + if self.statistic in self.STATISTIC_TO_FIELDS.keys(): for column in self.STATISTIC_TO_FIELDS[self.statistic]: - data_for_prepare[column] \ - = data_for_prepare[column].values * data_for_prepare['total'].values + if major >= int(12): + data_for_prepare[column] \ + = data_for_prepare[column].values * data_for_prepare['total_dir'].values + else: + data_for_prepare[column] \ + = data_for_prepare[column].values * data_for_prepare['total'].values def _prepare_val1l2_data(self, data_for_prepare): """Prepares val1l2 data. - Multiplies needed for the statistic calculation columns to the 'total' value + Multiplies needed for the statistic calculation columns to the 'total_dir' value + (MET 12.0) or 'total' MET<12.0 Args: data_for_prepare: a 2d numpy array of values we want to calculate the statistic on """ + # Determine the MET version for this data. If MET v12.0 or above, use the 'total_dir' column rather than + # the 'total' column. + met_version = get_met_version(data_for_prepare) + major = int(met_version.major) + if self.statistic in self.STATISTIC_TO_FIELDS.keys(): for column in self.STATISTIC_TO_FIELDS[self.statistic]: - data_for_prepare[column] \ - = data_for_prepare[column].values * data_for_prepare['total'].values - + if major >= int(12): + data_for_prepare[column] \ + = data_for_prepare[column].values * data_for_prepare['total_dir'].values + else: + data_for_prepare[column] \ + = data_for_prepare[column].values * data_for_prepare['total'].values def _prepare_vcnt_data(self, data_for_prepare): """Prepares vcnt data. - Multiplies needed for the statistic calculation columns to the 'total' value + Multiplies needed for the statistic calculation columns to the 'total_dir' value Args: data_for_prepare: a 2d numpy array of values we want to calculate the statistic on """ + # Determine the MET version for this data. If MET v12.0 or above, use the 'total_dir' column rather than + # the 'total' column. + met_version = get_met_version(data_for_prepare) + major = int(met_version.major) + if self.statistic in self.STATISTIC_TO_FIELDS.keys(): for column in self.STATISTIC_TO_FIELDS[self.statistic]: - data_for_prepare[column] \ - = data_for_prepare[column].values * data_for_prepare['total'].values + if major >= int(12): + data_for_prepare[column] \ + = data_for_prepare[column].values * data_for_prepare['total_dir'].values + else: + data_for_prepare[column] \ + = data_for_prepare[column].values * data_for_prepare['total'].values def _prepare_ecnt_data(self, data_for_prepare): """Prepares ecnt data. diff --git a/metcalcpy/diagnostics/__init__.py b/metcalcpy/diagnostics/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/metcalcpy/diagnostics/land_surface.py b/metcalcpy/diagnostics/land_surface.py new file mode 100644 index 00000000..c453ec4c --- /dev/null +++ b/metcalcpy/diagnostics/land_surface.py @@ -0,0 +1,52 @@ +"""Diagnostics relevant to Land/Surface applications""" + +from xarray.core.dataarray import DataArray +from pandas.core.series import Series + +def calc_tci(soil_data,sfc_flux_data,skipna=True): + """ Function for computing the Terrestrial Coupling Index + + Args: + soil_data (Xarray DataArray or Pandas Series): The moisture variable to use for computing TCI. + sfc_flux_data (Xarray DataArray or Pandas Series): The latent heat flux variable to use for computing TCI. + skipna (bool): Skip NA values. Passed to Pandas or Xarray. + + Returns: + Xarray DataArray or float32: If Xarray DataArray's are passed, then an Xarray DataArray + containing the gridded TCI is returned. If a Pandas Series is passed, then a single TCI + value is returned. + + Raises: + TypeError: If an unrecognized object type is passed, or the object types do not match. + + Reference: + Dirmeyer, P. A., 2011: The terrestrial segment of soil moisture-climate coupling. *Geophys. Res. Lett.*, **38**, L16702, doi: 10.1029/2011GL048268. + + """ + + # For Xarray objects, compute the mean + if isinstance(soil_data,DataArray) and isinstance(sfc_flux_data,DataArray): + soil_mean = soil_data.mean(dim='time',skipna=skipna) + soil_count = soil_data.count(dim='time') + sfc_flux_mean = sfc_flux_data.mean(dim='time',skipna=skipna) + soil_std = soil_data.std(dim='time',skipna=skipna) + numer = ((soil_data-soil_mean) * (sfc_flux_data-sfc_flux_mean)).sum(dim='time',skipna=skipna) + + # For Pandas objects, compute the mean + elif isinstance(soil_data,Series) and isinstance(sfc_flux_data,Series): + soil_mean = soil_data.mean(skipna=skipna) + soil_count = soil_data.count() + sfc_flux_mean = sfc_flux_data.mean(skipna=skipna) + soil_std = soil_data.std(skipna=skipna) + numer = ((soil_data-soil_mean) * (sfc_flux_data-sfc_flux_mean)).sum(skipna=skipna) + + # No other object types are supported + else: + raise TypeError("Only Xarray DataArray or Pandas DataFrame Objects are supported. Input objects must be of the same type. Got "+str(type(soil_data))+" for soil_data and "+str(type(sfc_flux_data))+" for sfc_flux_data") + + # Compute the covariance term + covarTerm = numer / soil_count + + # Return the Terrestrial Coupling Index (TCI) + return covarTerm/soil_std + diff --git a/metcalcpy/pre_processing/directional_means.py b/metcalcpy/pre_processing/directional_means.py index 1db3c883..579e03e2 100644 --- a/metcalcpy/pre_processing/directional_means.py +++ b/metcalcpy/pre_processing/directional_means.py @@ -57,6 +57,6 @@ def meridional_mean(dat, lat1, lat2, dimvar='latitude'): elif lat1 == lat2: raise ValueError('lat1 is equal to lat2, but it must be less than lat2') - wgts = np.cos(np.deg2rad(dat[dimvar].where((dat[dimvar] >= 60) & (dat[dimvar] <= 90),drop=True))) + wgts = np.cos(np.deg2rad(dat[dimvar].where((dat[dimvar] >= lat1) & (dat[dimvar] <= lat2),drop=True))) - return dat.where((dat[dimvar] >= 60) & (dat[dimvar] <= 90),drop=True).weighted(wgts).mean(dimvar) + return dat.where((dat[dimvar] >= lat1) & (dat[dimvar] <= lat2),drop=True).weighted(wgts).mean(dimvar) diff --git a/metcalcpy/util/ecnt_statistics.py b/metcalcpy/util/ecnt_statistics.py index 56b3e1f5..10e9e7bc 100644 --- a/metcalcpy/util/ecnt_statistics.py +++ b/metcalcpy/util/ecnt_statistics.py @@ -560,3 +560,42 @@ def calculate_ecnt_total(input_data, columns_names): """ total = sum_column_data_by_name(input_data, columns_names, 'total') return round_half_up(total, PRECISION) + +def calculate_ecnt_ign_conv_oerr(input_data, columns_names, aggregation=False): + """Performs calculation of IGN_CONV_OERR - The error-convolved logarithmic scoring + rule (ignorance score) + + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + aggregation: if the aggregation on fields was performed + + Returns: + calculated IGN_CONV_OERR as float + or None if some data values are missing or invalid + """ + + return weighted_average(input_data, np.array(columns_names), 'ign_conv_oerr', aggregation) + + +def calculate_ecnt_ign_corr_oerr(input_data, columns_names, aggregation=False): + """Performs calculation of IGN_CORR_OERR - The error-corrected logarithmic scoring + rule (ignorance score) + + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + aggregation: if the aggregation on fields was performed + + Returns: + calculated IGN_CORR_OERR as float + or None if some data values are missing or invalid + """ + + return weighted_average(input_data, np.array(columns_names), 'ign_corr_oerr', aggregation) + + diff --git a/metcalcpy/util/read_env_vars_in_config.py b/metcalcpy/util/read_env_vars_in_config.py index dd458a59..c25c0f2c 100644 --- a/metcalcpy/util/read_env_vars_in_config.py +++ b/metcalcpy/util/read_env_vars_in_config.py @@ -32,7 +32,7 @@ def parse_config(path=None, data=None, tag='!ENV'): :param str tag: the tag to look for """ # pattern for global vars: look for ${word} - pattern = re.compile('.*?\${(\w+)}.*?') + pattern = re.compile(r'.*?\${(\w+)}.*?') loader = yaml.SafeLoader # the tag will be used to mark where to start searching for the pattern diff --git a/metcalcpy/util/utils.py b/metcalcpy/util/utils.py index 5fb9b7c1..c0791c0c 100644 --- a/metcalcpy/util/utils.py +++ b/metcalcpy/util/utils.py @@ -23,6 +23,8 @@ import pandas as pd from pandas import DataFrame import warnings +from dataclasses import make_dataclass +import re from scipy import stats from scipy.stats import t, nct @@ -454,6 +456,31 @@ def get_total_values(input_data, columns_names, aggregation): total = sum_column_data_by_name(input_data, columns_names, 'total') return total +def get_total_dir_values(input_data, columns_names, aggregation): + """ Returns the total value from the TOTAL_DIR column, rather than the TOTAL column + for the VL1L2, VAL1L2, and VCNT linetypes (MET v12.0 and beyond). This is invoked + by the calculate__me|mse|mae in the _statistics.py module, where + = vl1l2, val1l2, or vcnt. + + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + aggregation: if the aggregation on fields was performed + + Returns: + 1 - if the aggregation was not preformed on the array + sum of all values from 'total_dir' columns + - if the aggregation was preformed on the array + + + """ + + total = 1 + if aggregation: + total = sum_column_data_by_name(input_data, columns_names, 'total_dir') + return total def aggregate_field_values(series_var_val, input_data_frame, line_type): """Finds and aggregates statistics for fields with values containing ';'. @@ -1390,3 +1417,59 @@ def autocor_coef(data: list) -> Union[None, float]: n = len(data_valid) return sx * sy / (sx - (n - 1) * sxx) + sxy / (sxx - sx * sx / (n - 1)) + + +def get_met_version(input_data:Union[pd.DataFrame, np.array], column_names:list=None) -> str: + """ + Determines the version of MET for this data + Args: + @param input_data: The numpy array or pandas dataframe representation of the MET .stat or .text file of data + (e.g. point-stat, grid-stat, stat-analysis, etc.) + @param column_names: An optional list of the column names corresponding to the input_data when the input + data is a numpy array. + + Returns: + version: a dataclass containing the major, minor, and bugfix values of the version + """ + + if isinstance(input_data, np.ndarray): + if column_names is None: + raise ValueError("numpy array input requires a list of column names.") + else: + lc_column_names = [cur_col.lower() for cur_col in column_names] + df = pd.DataFrame(input_data, index=None, columns=lc_column_names) + elif isinstance(input_data, pd.DataFrame): + df = input_data + # Convert the column names to lower case + cols = df.columns.to_list() + lc_cols = [cur_col.lower() for cur_col in cols] + df.columns = lc_cols + else: + raise ValueError("input data must be either a numpy array or pandas dataframe") + + # Get the version from the data (the first row) + versions = df['version'].to_list() + full_version = versions[0] + + # Use an immutable (frozen=True) dataclass to hold the major, + # minor, and bugfix values that make up the version number. + Version = make_dataclass("Version",["major", "minor", "bugfix"], frozen=True) + + # Parse out the major, minor, and bugfix portions of the version + match = re.match(r'V(\d+).?(\d*).?(\d*)', full_version) + if match: + major = match.group(1) + if match.group(2): + minor = match.group(2) + else: + minor = 0 + if match.group(3): + bugfix = match.group(3) + else: + bugfix = 0 + + version = Version(major, minor, bugfix) + + return version + + diff --git a/metcalcpy/util/val1l2_statistics.py b/metcalcpy/util/val1l2_statistics.py index b0b11485..ce1dcbaf 100644 --- a/metcalcpy/util/val1l2_statistics.py +++ b/metcalcpy/util/val1l2_statistics.py @@ -14,7 +14,8 @@ import warnings import numpy as np -from metcalcpy.util.utils import round_half_up, sum_column_data_by_name, PRECISION, get_total_values +from metcalcpy.util.utils import round_half_up, sum_column_data_by_name, PRECISION, get_total_values, get_met_version, \ + get_total_dir_values __author__ = 'Tatiana Burek' __version__ = '0.1.0' @@ -90,3 +91,86 @@ def calculate_val1l2_total(input_data, columns_names): """ total = sum_column_data_by_name(input_data, columns_names, 'total') return round_half_up(total, PRECISION) + +def calculate_val1l2_total_dir(input_data, columns_names): + """Performs calculation of Total number of matched pairs for + well-defined forecast and observation wind directions (TOTAL_DIR column) + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + + Returns: + calculated Total number of matched pairs as float + or None if some of the data values are missing or invalid + """ + total = sum_column_data_by_name(input_data, columns_names, 'total_dir') + return round_half_up(total, PRECISION) + + + +def calculate_val1l2_dira_me(input_data, columns_names, aggregation=False): + """Performs calculation of DIRA_ME + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + Returns: + dira_me + """ + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dira_me') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + + +def calculate_val1l2_dira_mae(input_data, columns_names, aggregation=False): + """Performs calculation of DIRA_MAE + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + Returns: + dira_mae statistic + """ + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dira_mae') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + +def calculate_val1l2_dira_mse(input_data, columns_names, aggregation=False): + """Performs calculation of DIRA_MSE + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + Returns: + dira_mse statistic + """ + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dira_mse') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + diff --git a/metcalcpy/util/vcnt_statistics.py b/metcalcpy/util/vcnt_statistics.py index c24cc022..2b2cdc21 100644 --- a/metcalcpy/util/vcnt_statistics.py +++ b/metcalcpy/util/vcnt_statistics.py @@ -14,7 +14,8 @@ import numpy as np from metcalcpy.util.met_stats import calc_direction, calc_speed -from metcalcpy.util.utils import round_half_up, sum_column_data_by_name, PRECISION, get_total_values +from metcalcpy.util.utils import round_half_up, sum_column_data_by_name, PRECISION, get_total_values, \ + get_total_dir_values __author__ = 'Tatiana Burek' __version__ = '0.1.0' @@ -63,7 +64,7 @@ def calculate_vcnt_obar(input_data, columns_names, aggregation=False): """ warnings.filterwarnings('error') try: - total = get_total_values(input_data, columns_names, aggregation) + total = get_total_dir_values(input_data, columns_names, aggregation) result = sum_column_data_by_name(input_data, columns_names, 'o_speed_bar') / total result = round_half_up(result, PRECISION) except (TypeError, ZeroDivisionError, Warning, ValueError): @@ -538,7 +539,7 @@ def calculate_vcnt_anom_corr(input_data, columns_names, aggregation=False): return result -def calculate_vcnt_anom_corr_uncntr(input_data, columns_names, aggregation=False): +def calculate_vcnt_anom_corr_uncntr(input_data, columns_names): warnings.filterwarnings('error') try: uvffabar = sum_column_data_by_name(input_data, columns_names, 'uvffabar') # ff @@ -558,3 +559,57 @@ def calculate_vcnt_anom_corr_uncntr(input_data, columns_names, aggregation=False result = None warnings.filterwarnings('ignore') return result + + +def calculate_vcnt_dir_me(input_data, columns_names, aggregation=False): + warnings.filterwarnings('error') + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data,np.array(columns_names), 'dir_me') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + +def calculate_vcnt_dir_mae(input_data, columns_names, aggregation=False): + warnings.filterwarnings('error') + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dir_mae') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + + +def calculate_vcnt_dir_mse(input_data, columns_names, aggregation=False): + warnings.filterwarnings('error') + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dir_mse') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + + +def calculate_vcnt_dir_rmse(input_data, columns_names, aggregation=False): + warnings.filterwarnings('error') + try: + result = np.sqrt(calculate_vcnt_dir_mse(input_data, np.array(columns_names), aggregation)) + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result diff --git a/metcalcpy/util/vl1l2_statistics.py b/metcalcpy/util/vl1l2_statistics.py index a542195f..1cac77ba 100644 --- a/metcalcpy/util/vl1l2_statistics.py +++ b/metcalcpy/util/vl1l2_statistics.py @@ -1,13 +1,12 @@ # ============================* - # ** Copyright UCAR (c) 2020 - # ** University Corporation for Atmospheric Research (UCAR) - # ** National Center for Atmospheric Research (NCAR) - # ** Research Applications Lab (RAL) - # ** P.O.Box 3000, Boulder, Colorado, 80307-3000, USA - # ============================* - - - +# ** Copyright UCAR (c) 2020 +# ** University Corporation for Atmospheric Research (UCAR) +# ** National Center for Atmospheric Research (NCAR) +# ** Research Applications Lab (RAL) +# ** P.O.Box 3000, Boulder, Colorado, 80307-3000, USA +# ============================* + + """ Program Name: vl1l2_statistics.py """ @@ -15,7 +14,8 @@ import numpy as np from metcalcpy.util.met_stats import calc_speed -from metcalcpy.util.utils import round_half_up, sum_column_data_by_name, PRECISION, get_total_values +from metcalcpy.util.utils import round_half_up, sum_column_data_by_name, PRECISION, get_total_values, \ + get_total_dir_values __author__ = 'Tatiana Burek' __version__ = '0.1.0' @@ -249,3 +249,70 @@ def calculate_vl1l2_total(input_data, columns_names): """ total = sum_column_data_by_name(input_data, columns_names, 'total') return round_half_up(total, PRECISION) + + +def calculate_vl1l2_dir_me(input_data, columns_names, aggregation=False): + """Performs calculation of DIR_ME, which was added in MET v12.0 + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + Returns: + dir_me + """ + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dir_me') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + + +def calculate_vl1l2_dir_mae(input_data, columns_names, aggregation=False): + """Performs calculation of DIR_MAE + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + Returns: + dir_mae statistic + """ + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dir_mae') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + + +def calculate_vl1l2_dir_mse(input_data, columns_names, aggregation=False): + """Performs calculation of DIR_MSE + Args: + input_data: 2-dimensional numpy array with data for the calculation + 1st dimension - the row of data frame + 2nd dimension - the column of data frame + columns_names: names of the columns for the 2nd dimension as Numpy array + Returns: + dir_mse statistic + """ + try: + total = get_total_dir_values(input_data, np.array(columns_names), aggregation) + result = sum_column_data_by_name(input_data, np.array(columns_names), 'dir_mse') / total + + result = round_half_up(result, PRECISION) + + except (TypeError, ZeroDivisionError, Warning, ValueError): + result = None + warnings.filterwarnings('ignore') + return result + diff --git a/metcalcpy/util/write_mpr.py b/metcalcpy/util/write_mpr.py index a515c40d..f9df9dc4 100644 --- a/metcalcpy/util/write_mpr.py +++ b/metcalcpy/util/write_mpr.py @@ -33,7 +33,7 @@ def write_mpr_file(data_fcst,data_obs,lats_in,lons_in,fcst_lead,fcst_valid,obs_l observation valid time mod_name: string output model name (the MODEL column in MET) - desc: string + desc: 1D array string output description (the DESC column in MET) fcst_var: 1D array string forecast variable name @@ -69,7 +69,7 @@ def write_mpr_file(data_fcst,data_obs,lats_in,lons_in,fcst_lead,fcst_valid,obs_l Get the length of the model, FCST_VAR, FCST_LEV, OBS_VAR, OBS_LEV, VX_MASK, etc for formatting """ mname_len = str(max([5,len(mod_name)])+3) - desc_len = str(max([4,len(desc)])+3) + desc_len = str(max([4,max([len(l) for l in desc])])+3) mask_len = str(max([7,len(maskname)])+3) fvar_len = str(max([8,max([len(l) for l in fcst_var])])+3) funit_len = str(max([8,max([len(l) for l in fcst_unit])])+3) @@ -114,7 +114,7 @@ def write_mpr_file(data_fcst,data_obs,lats_in,lons_in,fcst_lead,fcst_valid,obs_l 'OBS_THRESH', 'COV_THRESH', 'ALPHA', 'LINE_TYPE')) for dpt in range(dlength): # Write the data - mf.write(format_string2 % ('V9.1',mod_name,desc,fcst_lead[dpt],fcst_valid[dpt],fcst_valid[dpt], + mf.write(format_string2 % ('V9.1',mod_name,desc[dpt],fcst_lead[dpt],fcst_valid[dpt],fcst_valid[dpt], obs_lead[dpt],obs_valid[dpt],obs_valid[dpt],fcst_var[dpt],fcst_unit[dpt],fcst_lev[dpt], obs_var[dpt],obs_unit[dpt],obs_lev[dpt],'ADPUPA',maskname,'NEAREST','1','NA','NA','NA','NA','MPR', str(dlength),str(index_num[dpt]),'NA',lats_in[dpt],lons_in[dpt],obsslev[dpt],'NA',data_fcst[dpt], diff --git a/test/data/.gitignore b/test/data/.gitignore new file mode 100644 index 00000000..25cff195 --- /dev/null +++ b/test/data/.gitignore @@ -0,0 +1,5 @@ +agg_eclv_data_output.data +agg_ratio_data_output.data +ee_av_output_py.data +pstd.data +scorecard_output.data diff --git a/test/data/calc_tci_jja_pandas_input.csv b/test/data/calc_tci_jja_pandas_input.csv new file mode 100644 index 00000000..2512f826 --- /dev/null +++ b/test/data/calc_tci_jja_pandas_input.csv @@ -0,0 +1,2178 @@ +level_0,index,TIMESTAMP,SWC_F_MDS_1,SWC_F_MDS_1_QC,LE_F_MDS,LE_F_MDS_QC,datetime,month,season,station_id +148,152,20000601,43.153,1.0,59.5202,1.0,2000-06-01,06,JJA,DE-Hai +149,153,20000602,42.543,1.0,88.215,0.979167,2000-06-02,06,JJA,DE-Hai +150,154,20000603,42.864,1.0,73.9229,1.0,2000-06-03,06,JJA,DE-Hai +151,155,20000604,45.186,1.0,67.2576,0.9375,2000-06-04,06,JJA,DE-Hai +152,156,20000605,46.062,1.0,47.1207,0.979167,2000-06-05,06,JJA,DE-Hai +153,157,20000606,45.737,1.0,22.5715,1.0,2000-06-06,06,JJA,DE-Hai +154,158,20000607,45.546,1.0,62.795,0.9375,2000-06-07,06,JJA,DE-Hai +155,159,20000608,45.508,1.0,76.0157,0.979167,2000-06-08,06,JJA,DE-Hai +156,160,20000609,44.895,1.0,100.65,1.0,2000-06-09,06,JJA,DE-Hai +157,161,20000610,44.648,1.0,79.0017,1.0,2000-06-10,06,JJA,DE-Hai +158,162,20000611,45.504,1.0,42.5801,1.0,2000-06-11,06,JJA,DE-Hai +159,163,20000612,44.882,1.0,104.221,1.0,2000-06-12,06,JJA,DE-Hai +160,164,20000613,44.162,1.0,113.03,1.0,2000-06-13,06,JJA,DE-Hai +161,165,20000614,43.62,1.0,85.8148,1.0,2000-06-14,06,JJA,DE-Hai +162,166,20000615,43.892,1.0,62.6245,0.979167,2000-06-15,06,JJA,DE-Hai +163,167,20000616,44.16,1.0,70.7141,1.0,2000-06-16,06,JJA,DE-Hai +164,168,20000617,43.675,1.0,72.391,1.0,2000-06-17,06,JJA,DE-Hai +165,169,20000618,43.378,1.0,107.114,1.0,2000-06-18,06,JJA,DE-Hai +166,170,20000619,42.457,1.0,104.635,1.0,2000-06-19,06,JJA,DE-Hai +167,171,20000620,41.176,1.0,107.468,1.0,2000-06-20,06,JJA,DE-Hai +168,172,20000621,39.632,1.0,102.452,1.0,2000-06-21,06,JJA,DE-Hai +169,173,20000622,38.269,1.0,75.2003,1.0,2000-06-22,06,JJA,DE-Hai +170,174,20000623,37.41,1.0,72.0653,1.0,2000-06-23,06,JJA,DE-Hai +171,175,20000624,37.413,1.0,70.4302,1.0,2000-06-24,06,JJA,DE-Hai +172,176,20000625,37.678,1.0,71.0046,1.0,2000-06-25,06,JJA,DE-Hai +173,177,20000626,37.438,1.0,56.2161,1.0,2000-06-26,06,JJA,DE-Hai +174,178,20000627,37.038,1.0,62.6557,1.0,2000-06-27,06,JJA,DE-Hai +175,179,20000628,36.473,1.0,64.9563,1.0,2000-06-28,06,JJA,DE-Hai +176,180,20000629,35.88,1.0,40.7685,1.0,2000-06-29,06,JJA,DE-Hai +177,181,20000630,35.253,1.0,76.7924,1.0,2000-06-30,06,JJA,DE-Hai +178,182,20000701,34.577,1.0,51.376,1.0,2000-07-01,07,JJA,DE-Hai +179,183,20000702,35.105,1.0,53.5519,1.0,2000-07-02,07,JJA,DE-Hai +180,184,20000703,40.346,1.0,62.5512,1.0,2000-07-03,07,JJA,DE-Hai +181,185,20000704,42.313,1.0,54.5259,1.0,2000-07-04,07,JJA,DE-Hai +182,186,20000705,43.624,1.0,48.5712,1.0,2000-07-05,07,JJA,DE-Hai +183,187,20000706,43.098,1.0,65.4351,1.0,2000-07-06,07,JJA,DE-Hai +184,188,20000707,42.671,1.0,11.7089,1.0,2000-07-07,07,JJA,DE-Hai +185,189,20000708,45.692,1.0,29.6981,0.979167,2000-07-08,07,JJA,DE-Hai +186,190,20000709,44.373,1.0,49.1282,0.979167,2000-07-09,07,JJA,DE-Hai +187,191,20000710,45.38,1.0,61.9936,1.0,2000-07-10,07,JJA,DE-Hai +188,192,20000711,44.594,1.0,45.6559,1.0,2000-07-11,07,JJA,DE-Hai +189,193,20000712,45.467,1.0,53.1126,1.0,2000-07-12,07,JJA,DE-Hai +190,194,20000713,44.5,1.0,39.7506,1.0,2000-07-13,07,JJA,DE-Hai +191,195,20000714,45.818,1.0,29.2564,1.0,2000-07-14,07,JJA,DE-Hai +192,196,20000715,45.816,1.0,68.4868,1.0,2000-07-15,07,JJA,DE-Hai +193,197,20000716,44.988,1.0,76.8767,1.0,2000-07-16,07,JJA,DE-Hai +194,198,20000717,44.145,1.0,50.9897,1.0,2000-07-17,07,JJA,DE-Hai +195,199,20000718,43.728,1.0,29.6897,1.0,2000-07-18,07,JJA,DE-Hai +196,200,20000719,43.322,1.0,29.1385,1.0,2000-07-19,07,JJA,DE-Hai +197,201,20000720,42.65,1.0,78.4763,1.0,2000-07-20,07,JJA,DE-Hai +198,202,20000721,41.963,1.0,35.9746,1.0,2000-07-21,07,JJA,DE-Hai +199,203,20000722,41.544,1.0,26.0903,1.0,2000-07-22,07,JJA,DE-Hai +200,204,20000723,41.145,1.0,100.401,0.958333,2000-07-23,07,JJA,DE-Hai +201,205,20000724,40.23,1.0,25.3022,1.0,2000-07-24,07,JJA,DE-Hai +202,206,20000725,39.817,1.0,17.0799,1.0,2000-07-25,07,JJA,DE-Hai +203,207,20000726,39.262,1.0,60.3164,0.979167,2000-07-26,07,JJA,DE-Hai +204,208,20000727,38.426,1.0,78.7995,0.979167,2000-07-27,07,JJA,DE-Hai +205,209,20000728,38.64,1.0,56.1032,1.0,2000-07-28,07,JJA,DE-Hai +206,210,20000729,38.479,1.0,57.7846,1.0,2000-07-29,07,JJA,DE-Hai +207,211,20000730,37.926,1.0,69.3822,1.0,2000-07-30,07,JJA,DE-Hai +208,212,20000731,37.191,1.0,86.4654,1.0,2000-07-31,07,JJA,DE-Hai +209,213,20000801,36.097,1.0,93.3197,0.979167,2000-08-01,08,JJA,DE-Hai +210,214,20000802,37.14,1.0,64.2099,0.979167,2000-08-02,08,JJA,DE-Hai +211,215,20000803,37.434,1.0,78.5403,1.0,2000-08-03,08,JJA,DE-Hai +212,216,20000804,36.458,1.0,62.8604,1.0,2000-08-04,08,JJA,DE-Hai +213,217,20000805,35.569,1.0,82.6854,1.0,2000-08-05,08,JJA,DE-Hai +214,218,20000806,34.647,1.0,78.6412,1.0,2000-08-06,08,JJA,DE-Hai +215,219,20000807,33.962,1.0,62.0998,1.0,2000-08-07,08,JJA,DE-Hai +216,220,20000808,33.635,1.0,42.7429,1.0,2000-08-08,08,JJA,DE-Hai +217,221,20000809,33.384,1.0,79.7289,1.0,2000-08-09,08,JJA,DE-Hai +218,222,20000810,32.785,1.0,62.7021,1.0,2000-08-10,08,JJA,DE-Hai +219,223,20000811,32.291,1.0,67.9201,1.0,2000-08-11,08,JJA,DE-Hai +220,224,20000812,31.571,1.0,85.5873,0.979167,2000-08-12,08,JJA,DE-Hai +221,225,20000813,30.138,1.0,86.2581,1.0,2000-08-13,08,JJA,DE-Hai +222,226,20000814,29.363,1.0,59.463,1.0,2000-08-14,08,JJA,DE-Hai +223,227,20000815,28.839,1.0,75.8434,1.0,2000-08-15,08,JJA,DE-Hai +224,228,20000816,28.465,1.0,88.7753,0.979167,2000-08-16,08,JJA,DE-Hai +225,229,20000817,27.955,1.0,80.7031,1.0,2000-08-17,08,JJA,DE-Hai +226,230,20000818,27.368,1.0,62.2052,1.0,2000-08-18,08,JJA,DE-Hai +227,231,20000819,27.068,1.0,62.6648,1.0,2000-08-19,08,JJA,DE-Hai +228,232,20000820,31.652,1.0,70.938,1.0,2000-08-20,08,JJA,DE-Hai +229,233,20000821,34.594,1.0,62.7215,1.0,2000-08-21,08,JJA,DE-Hai +230,234,20000822,35.038,1.0,76.9514,1.0,2000-08-22,08,JJA,DE-Hai +231,235,20000823,34.003,1.0,59.7061,1.0,2000-08-23,08,JJA,DE-Hai +232,236,20000824,32.758,1.0,91.5825,1.0,2000-08-24,08,JJA,DE-Hai +233,237,20000825,31.846,1.0,53.0871,1.0,2000-08-25,08,JJA,DE-Hai +234,238,20000826,31.059,1.0,81.0093,1.0,2000-08-26,08,JJA,DE-Hai +235,239,20000827,30.22,1.0,64.5194,1.0,2000-08-27,08,JJA,DE-Hai +236,240,20000828,29.671,1.0,56.4476,1.0,2000-08-28,08,JJA,DE-Hai +237,241,20000829,28.994,1.0,66.7636,1.0,2000-08-29,08,JJA,DE-Hai +238,242,20000830,28.311,1.0,52.0712,1.0,2000-08-30,08,JJA,DE-Hai +239,243,20000831,27.612,1.0,54.9034,1.0,2000-08-31,08,JJA,DE-Hai +503,517,20010601,39.98,1.0,68.2348,1.0,2001-06-01,06,JJA,DE-Hai +504,518,20010602,43.743,1.0,16.5745,1.0,2001-06-02,06,JJA,DE-Hai +505,519,20010603,46.361,1.0,61.9416,0.979167,2001-06-03,06,JJA,DE-Hai +506,520,20010604,46.208,1.0,32.7785,1.0,2001-06-04,06,JJA,DE-Hai +507,521,20010605,45.134,1.0,43.3579,1.0,2001-06-05,06,JJA,DE-Hai +508,522,20010606,44.091,1.0,56.9044,1.0,2001-06-06,06,JJA,DE-Hai +509,523,20010607,43.225,1.0,60.7876,1.0,2001-06-07,06,JJA,DE-Hai +510,524,20010608,45.888,1.0,47.0111,1.0,2001-06-08,06,JJA,DE-Hai +511,525,20010609,45.332,1.0,54.4677,1.0,2001-06-09,06,JJA,DE-Hai +512,526,20010610,45.779,1.0,30.7668,1.0,2001-06-10,06,JJA,DE-Hai +513,527,20010611,46.215,1.0,50.02,1.0,2001-06-11,06,JJA,DE-Hai +514,528,20010612,45.2,1.0,57.2677,1.0,2001-06-12,06,JJA,DE-Hai +515,529,20010613,44.115,1.0,74.5409,1.0,2001-06-13,06,JJA,DE-Hai +516,530,20010614,43.05,1.0,64.0341,1.0,2001-06-14,06,JJA,DE-Hai +517,531,20010615,42.25,1.0,83.1615,1.0,2001-06-15,06,JJA,DE-Hai +518,532,20010616,44.612,1.0,60.0458,1.0,2001-06-16,06,JJA,DE-Hai +519,533,20010617,45.021,1.0,66.1415,1.0,2001-06-17,06,JJA,DE-Hai +520,534,20010618,46.757,1.0,11.3286,1.0,2001-06-18,06,JJA,DE-Hai +521,535,20010619,46.217,1.0,32.4506,1.0,2001-06-19,06,JJA,DE-Hai +522,536,20010620,45.16,1.0,81.9066,1.0,2001-06-20,06,JJA,DE-Hai +523,537,20010621,43.998,1.0,71.3205,1.0,2001-06-21,06,JJA,DE-Hai +524,538,20010622,43.274,1.0,42.4817,1.0,2001-06-22,06,JJA,DE-Hai +525,539,20010623,43.186,1.0,49.0069,1.0,2001-06-23,06,JJA,DE-Hai +526,540,20010624,42.432,1.0,83.4264,1.0,2001-06-24,06,JJA,DE-Hai +527,541,20010625,41.434,1.0,95.6667,1.0,2001-06-25,06,JJA,DE-Hai +528,542,20010626,40.39,1.0,86.1425,1.0,2001-06-26,06,JJA,DE-Hai +529,543,20010627,39.128,1.0,97.1815,0.833333,2001-06-27,06,JJA,DE-Hai +530,544,20010628,38.258,1.0,71.7882,1.0,2001-06-28,06,JJA,DE-Hai +531,545,20010629,38.109,1.0,72.4694,1.0,2001-06-29,06,JJA,DE-Hai +532,546,20010630,37.493,1.0,105.281,1.0,2001-06-30,06,JJA,DE-Hai +533,547,20010701,38.729,1.0,91.9954,1.0,2001-07-01,07,JJA,DE-Hai +534,548,20010702,37.667,1.0,84.9659,1.0,2001-07-02,07,JJA,DE-Hai +535,549,20010703,36.596,1.0,105.194,1.0,2001-07-03,07,JJA,DE-Hai +536,550,20010704,35.698,1.0,114.509,1.0,2001-07-04,07,JJA,DE-Hai +537,551,20010705,34.662,1.0,118.975,0.979167,2001-07-05,07,JJA,DE-Hai +538,552,20010706,33.028,1.0,118.539,1.0,2001-07-06,07,JJA,DE-Hai +539,553,20010707,31.858,1.0,115.838,1.0,2001-07-07,07,JJA,DE-Hai +540,554,20010708,40.181,1.0,35.2874,1.0,2001-07-08,07,JJA,DE-Hai +541,555,20010709,44.629,1.0,12.9839,1.0,2001-07-09,07,JJA,DE-Hai +542,556,20010710,42.791,1.0,108.948,1.0,2001-07-10,07,JJA,DE-Hai +543,557,20010711,41.531,1.0,115.492,1.0,2001-07-11,07,JJA,DE-Hai +544,558,20010712,39.857,1.0,107.9,1.0,2001-07-12,07,JJA,DE-Hai +545,559,20010713,38.347,1.0,97.7884,1.0,2001-07-13,07,JJA,DE-Hai +546,560,20010714,44.464,1.0,64.3672,1.0,2001-07-14,07,JJA,DE-Hai +547,561,20010715,45.644,1.0,35.1881,1.0,2001-07-15,07,JJA,DE-Hai +548,562,20010716,46.851,1.0,34.8597,1.0,2001-07-16,07,JJA,DE-Hai +549,563,20010717,44.766,1.0,88.5136,1.0,2001-07-17,07,JJA,DE-Hai +550,564,20010718,43.357,1.0,81.2042,1.0,2001-07-18,07,JJA,DE-Hai +551,565,20010719,43.995,1.0,92.3045,1.0,2001-07-19,07,JJA,DE-Hai +552,566,20010720,44.494,1.0,93.5816,1.0,2001-07-20,07,JJA,DE-Hai +553,567,20010721,42.714,1.0,100.186,1.0,2001-07-21,07,JJA,DE-Hai +554,568,20010722,40.971,1.0,98.7004,1.0,2001-07-22,07,JJA,DE-Hai +555,569,20010723,39.226,1.0,104.854,1.0,2001-07-23,07,JJA,DE-Hai +556,570,20010724,37.355,1.0,95.0793,1.0,2001-07-24,07,JJA,DE-Hai +557,571,20010725,35.634,1.0,107.108,1.0,2001-07-25,07,JJA,DE-Hai +558,572,20010726,33.846,1.0,110.84,1.0,2001-07-26,07,JJA,DE-Hai +559,573,20010727,32.138,1.0,118.684,1.0,2001-07-27,07,JJA,DE-Hai +560,574,20010728,30.52,1.0,103.946,1.0,2001-07-28,07,JJA,DE-Hai +561,575,20010729,29.238,1.0,103.533,1.0,2001-07-29,07,JJA,DE-Hai +562,576,20010730,28.085,1.0,117.002,1.0,2001-07-30,07,JJA,DE-Hai +563,577,20010731,27.042,1.0,110.547,1.0,2001-07-31,07,JJA,DE-Hai +564,578,20010801,26.191,1.0,100.282,1.0,2001-08-01,08,JJA,DE-Hai +565,579,20010802,25.552,1.0,95.6035,1.0,2001-08-02,08,JJA,DE-Hai +566,580,20010803,25.154,1.0,81.4179,1.0,2001-08-03,08,JJA,DE-Hai +567,581,20010804,26.967,1.0,37.5614,1.0,2001-08-04,08,JJA,DE-Hai +568,582,20010805,27.326,1.0,77.5305,1.0,2001-08-05,08,JJA,DE-Hai +569,583,20010806,26.054,1.0,28.6904,1.0,2001-08-06,08,JJA,DE-Hai +570,584,20010807,26.076,1.0,62.0453,0.979167,2001-08-07,08,JJA,DE-Hai +571,585,20010808,25.517,1.0,79.0612,1.0,2001-08-08,08,JJA,DE-Hai +572,586,20010809,26.374,1.0,63.2628,1.0,2001-08-09,08,JJA,DE-Hai +573,587,20010810,26.19,1.0,59.3669,1.0,2001-08-10,08,JJA,DE-Hai +574,588,20010811,25.475,1.0,75.858,1.0,2001-08-11,08,JJA,DE-Hai +575,589,20010812,24.941,1.0,92.8564,1.0,2001-08-12,08,JJA,DE-Hai +576,590,20010813,24.515,1.0,96.4732,0.979167,2001-08-13,08,JJA,DE-Hai +577,591,20010814,24.065,1.0,101.038,0.9375,2001-08-14,08,JJA,DE-Hai +578,592,20010815,23.441,1.0,104.88,0.916667,2001-08-15,08,JJA,DE-Hai +579,593,20010816,22.794,1.0,100.71,0.979167,2001-08-16,08,JJA,DE-Hai +580,594,20010817,22.285,1.0,80.0094,1.0,2001-08-17,08,JJA,DE-Hai +581,595,20010818,22.334,1.0,32.4338,1.0,2001-08-18,08,JJA,DE-Hai +582,596,20010819,22.094,1.0,83.1772,0.979167,2001-08-19,08,JJA,DE-Hai +583,597,20010820,24.47,1.0,21.5239,1.0,2001-08-20,08,JJA,DE-Hai +584,598,20010821,23.618,1.0,78.4668,1.0,2001-08-21,08,JJA,DE-Hai +585,599,20010822,22.378,1.0,90.6033,1.0,2001-08-22,08,JJA,DE-Hai +586,600,20010823,21.914,1.0,81.4514,1.0,2001-08-23,08,JJA,DE-Hai +587,601,20010824,21.583,1.0,84.3458,0.979167,2001-08-24,08,JJA,DE-Hai +588,602,20010825,21.194,1.0,86.5699,0.979167,2001-08-25,08,JJA,DE-Hai +589,603,20010826,20.823,1.0,76.5565,0.979167,2001-08-26,08,JJA,DE-Hai +590,604,20010827,20.595,1.0,44.7003,1.0,2001-08-27,08,JJA,DE-Hai +591,605,20010828,20.262,1.0,67.7875,0.9375,2001-08-28,08,JJA,DE-Hai +592,606,20010829,20.041,1.0,63.4735,1.0,2001-08-29,08,JJA,DE-Hai +593,607,20010830,19.871,1.0,70.6599,0.895833,2001-08-30,08,JJA,DE-Hai +594,608,20010831,20.526,1.0,53.2445,1.0,2001-08-31,08,JJA,DE-Hai +853,882,20020601,43.686,1.0,64.7904,1.0,2002-06-01,06,JJA,DE-Hai +854,883,20020602,42.834,1.0,74.2724,1.0,2002-06-02,06,JJA,DE-Hai +855,884,20020603,41.784,1.0,93.6609,1.0,2002-06-03,06,JJA,DE-Hai +856,885,20020604,40.503,1.0,81.3135,1.0,2002-06-04,06,JJA,DE-Hai +857,886,20020605,39.367,1.0,84.9511,0.979167,2002-06-05,06,JJA,DE-Hai +858,887,20020606,43.882,1.0,60.4779,1.0,2002-06-06,06,JJA,DE-Hai +859,888,20020607,47.512,1.0,12.7059,1.0,2002-06-07,06,JJA,DE-Hai +860,889,20020608,47.267,1.0,41.6481,1.0,2002-06-08,06,JJA,DE-Hai +861,890,20020609,45.787,1.0,61.6947,1.0,2002-06-09,06,JJA,DE-Hai +862,891,20020610,46.675,1.0,41.6026,1.0,2002-06-10,06,JJA,DE-Hai +863,892,20020611,46.704,1.0,55.0276,0.979167,2002-06-11,06,JJA,DE-Hai +864,893,20020612,46.098,1.0,44.2609,1.0,2002-06-12,06,JJA,DE-Hai +865,894,20020613,45.589,1.0,9.84213,1.0,2002-06-13,06,JJA,DE-Hai +866,895,20020614,45.362,1.0,65.2566,1.0,2002-06-14,06,JJA,DE-Hai +867,896,20020615,45.572,1.0,96.179,1.0,2002-06-15,06,JJA,DE-Hai +868,897,20020616,44.524,1.0,75.7874,1.0,2002-06-16,06,JJA,DE-Hai +869,898,20020617,43.137,1.0,120.721,1.0,2002-06-17,06,JJA,DE-Hai +870,899,20020618,41.256,1.0,127.565,0.979167,2002-06-18,06,JJA,DE-Hai +871,900,20020619,39.962,1.0,37.5707,1.0,2002-06-19,06,JJA,DE-Hai +872,901,20020620,39.508,1.0,54.3099,1.0,2002-06-20,06,JJA,DE-Hai +873,902,20020621,39.621,1.0,49.6769,1.0,2002-06-21,06,JJA,DE-Hai +874,903,20020622,40.332,1.0,83.9514,0.9375,2002-06-22,06,JJA,DE-Hai +875,904,20020623,39.078,1.0,64.8231,1.0,2002-06-23,06,JJA,DE-Hai +876,905,20020624,37.971,1.0,86.8097,1.0,2002-06-24,06,JJA,DE-Hai +877,906,20020625,36.514,1.0,102.637,1.0,2002-06-25,06,JJA,DE-Hai +878,907,20020626,34.853,1.0,109.496,1.0,2002-06-26,06,JJA,DE-Hai +879,908,20020627,33.271,1.0,92.6008,1.0,2002-06-27,06,JJA,DE-Hai +880,909,20020628,32.146,1.0,61.0235,1.0,2002-06-28,06,JJA,DE-Hai +881,910,20020629,33.783,1.0,75.7683,1.0,2002-06-29,06,JJA,DE-Hai +882,911,20020630,32.482,1.0,106.071,1.0,2002-06-30,06,JJA,DE-Hai +883,912,20020701,31.554,1.0,45.5805,1.0,2002-07-01,07,JJA,DE-Hai +884,913,20020702,31.276,1.0,54.9583,1.0,2002-07-02,07,JJA,DE-Hai +885,914,20020703,30.769,1.0,68.4028,1.0,2002-07-03,07,JJA,DE-Hai +886,915,20020704,30.264,1.0,39.3828,1.0,2002-07-04,07,JJA,DE-Hai +887,916,20020705,29.542,1.0,99.705,1.0,2002-07-05,07,JJA,DE-Hai +888,917,20020706,28.613,1.0,75.0256,1.0,2002-07-06,07,JJA,DE-Hai +889,918,20020707,28.054,1.0,53.0389,1.0,2002-07-07,07,JJA,DE-Hai +890,919,20020708,27.344,1.0,129.269,0.979167,2002-07-08,07,JJA,DE-Hai +891,920,20020709,26.264,1.0,118.242,0.979167,2002-07-09,07,JJA,DE-Hai +892,921,20020710,29.031,1.0,66.8174,1.0,2002-07-10,07,JJA,DE-Hai +893,922,20020711,33.003,1.0,88.6258,1.0,2002-07-11,07,JJA,DE-Hai +894,923,20020712,31.081,1.0,73.6769,1.0,2002-07-12,07,JJA,DE-Hai +895,924,20020713,28.813,1.0,69.9073,1.0,2002-07-13,07,JJA,DE-Hai +896,925,20020714,32.011,1.0,13.8202,1.0,2002-07-14,07,JJA,DE-Hai +897,926,20020715,31.33,1.0,61.6999,1.0,2002-07-15,07,JJA,DE-Hai +898,927,20020716,29.596,1.0,44.4084,1.0,2002-07-16,07,JJA,DE-Hai +899,928,20020717,38.999,1.0,8.71729,1.0,2002-07-17,07,JJA,DE-Hai +900,929,20020718,42.121,1.0,10.0268,1.0,2002-07-18,07,JJA,DE-Hai +901,930,20020719,40.702,1.0,28.6604,1.0,2002-07-19,07,JJA,DE-Hai +902,931,20020720,38.196,1.0,109.335,0.979167,2002-07-20,07,JJA,DE-Hai +903,932,20020721,35.181,1.0,97.029,1.0,2002-07-21,07,JJA,DE-Hai +904,933,20020722,33.275,1.0,61.5538,1.0,2002-07-22,07,JJA,DE-Hai +905,934,20020723,31.892,1.0,70.1163,1.0,2002-07-23,07,JJA,DE-Hai +906,935,20020724,31.535,1.0,52.811,1.0,2002-07-24,07,JJA,DE-Hai +907,936,20020725,31.527,1.0,68.3929,1.0,2002-07-25,07,JJA,DE-Hai +908,937,20020726,30.879,1.0,7.97861,1.0,2002-07-26,07,JJA,DE-Hai +909,938,20020727,30.764,1.0,78.5502,0.979167,2002-07-27,07,JJA,DE-Hai +910,939,20020728,29.219,1.0,112.355,1.0,2002-07-28,07,JJA,DE-Hai +911,940,20020729,27.513,1.0,111.782,1.0,2002-07-29,07,JJA,DE-Hai +912,941,20020730,26.296,1.0,79.2403,1.0,2002-07-30,07,JJA,DE-Hai +913,942,20020731,25.36,1.0,82.1498,1.0,2002-07-31,07,JJA,DE-Hai +914,943,20020801,26.412,1.0,29.651,1.0,2002-08-01,08,JJA,DE-Hai +915,944,20020802,26.554,1.0,97.8942,1.0,2002-08-02,08,JJA,DE-Hai +916,945,20020803,25.056,1.0,63.2527,1.0,2002-08-03,08,JJA,DE-Hai +917,946,20020804,24.531,1.0,59.7807,1.0,2002-08-04,08,JJA,DE-Hai +918,947,20020805,24.19,1.0,86.6586,1.0,2002-08-05,08,JJA,DE-Hai +919,948,20020806,23.75,1.0,89.8061,1.0,2002-08-06,08,JJA,DE-Hai +920,949,20020807,23.742,1.0,39.0562,1.0,2002-08-07,08,JJA,DE-Hai +921,950,20020808,30.729,1.0,9.96447,1.0,2002-08-08,08,JJA,DE-Hai +922,951,20020809,30.956,1.0,88.6062,1.0,2002-08-09,08,JJA,DE-Hai +923,952,20020810,31.704,1.0,42.875,1.0,2002-08-10,08,JJA,DE-Hai +924,953,20020811,32.029,1.0,37.8066,1.0,2002-08-11,08,JJA,DE-Hai +925,954,20020812,35.477,1.0,16.5761,1.0,2002-08-12,08,JJA,DE-Hai +926,955,20020813,33.668,1.0,44.9154,1.0,2002-08-13,08,JJA,DE-Hai +927,956,20020814,31.871,1.0,42.9447,1.0,2002-08-14,08,JJA,DE-Hai +928,957,20020815,30.231,1.0,88.4974,0.9375,2002-08-15,08,JJA,DE-Hai +929,958,20020816,28.312,1.0,92.1292,0.958333,2002-08-16,08,JJA,DE-Hai +930,959,20020817,28.103,1.0,87.0724,1.0,2002-08-17,08,JJA,DE-Hai +931,960,20020818,29.385,1.0,87.884,1.0,2002-08-18,08,JJA,DE-Hai +932,961,20020819,27.533,1.0,79.8028,0.979167,2002-08-19,08,JJA,DE-Hai +933,962,20020820,26.098,1.0,80.8767,1.0,2002-08-20,08,JJA,DE-Hai +934,963,20020821,25.267,1.0,95.8544,1.0,2002-08-21,08,JJA,DE-Hai +935,964,20020822,25.856,1.0,67.3065,1.0,2002-08-22,08,JJA,DE-Hai +936,965,20020823,26.544,1.0,54.5785,1.0,2002-08-23,08,JJA,DE-Hai +937,966,20020824,25.477,1.0,72.303,0.979167,2002-08-24,08,JJA,DE-Hai +938,967,20020825,24.79,1.0,70.1677,1.0,2002-08-25,08,JJA,DE-Hai +939,968,20020826,24.367,1.0,90.2849,1.0,2002-08-26,08,JJA,DE-Hai +940,969,20020827,23.886,1.0,96.2366,0.979167,2002-08-27,08,JJA,DE-Hai +941,970,20020828,24.18,1.0,52.077,1.0,2002-08-28,08,JJA,DE-Hai +942,971,20020829,25.654,1.0,72.0706,1.0,2002-08-29,08,JJA,DE-Hai +943,972,20020830,24.699,1.0,79.0483,1.0,2002-08-30,08,JJA,DE-Hai +944,973,20020831,24.114,1.0,70.9075,1.0,2002-08-31,08,JJA,DE-Hai +1216,1247,20030601,28.246,1.0,98.413,0.979167,2003-06-01,06,JJA,DE-Hai +1217,1248,20030602,28.235,1.0,95.337,0.916667,2003-06-02,06,JJA,DE-Hai +1218,1249,20030603,28.2,1.0,83.8977,0.895833,2003-06-03,06,JJA,DE-Hai +1219,1250,20030604,28.159,1.0,110.782,0.916667,2003-06-04,06,JJA,DE-Hai +1220,1251,20030605,28.074,1.0,101.138,0.916667,2003-06-05,06,JJA,DE-Hai +1221,1252,20030606,28.034,1.0,79.4727,1.0,2003-06-06,06,JJA,DE-Hai +1222,1253,20030607,28.006,1.0,103.103,0.833333,2003-06-07,06,JJA,DE-Hai +1223,1254,20030608,27.964,1.0,90.7615,1.0,2003-06-08,06,JJA,DE-Hai +1224,1255,20030609,27.917,1.0,117.139,1.0,2003-06-09,06,JJA,DE-Hai +1225,1256,20030610,27.846,1.0,90.2994,0.9375,2003-06-10,06,JJA,DE-Hai +1226,1257,20030611,27.776,1.0,97.4791,0.979167,2003-06-11,06,JJA,DE-Hai +1227,1258,20030612,27.685,1.0,102.23,0.958333,2003-06-12,06,JJA,DE-Hai +1228,1259,20030613,27.581,1.0,67.101,1.0,2003-06-13,06,JJA,DE-Hai +1229,1260,20030614,27.501,1.0,90.6321,1.0,2003-06-14,06,JJA,DE-Hai +1230,1261,20030615,27.352,1.0,105.213,1.0,2003-06-15,06,JJA,DE-Hai +1231,1262,20030616,27.128,1.0,107.364,1.0,2003-06-16,06,JJA,DE-Hai +1232,1263,20030617,26.849,1.0,119.16,1.0,2003-06-17,06,JJA,DE-Hai +1233,1264,20030618,26.616,1.0,56.5693,1.0,2003-06-18,06,JJA,DE-Hai +1234,1265,20030619,26.46,1.0,56.7168,1.0,2003-06-19,06,JJA,DE-Hai +1235,1266,20030620,26.182,1.0,118.546,1.0,2003-06-20,06,JJA,DE-Hai +1236,1267,20030621,25.853,1.0,98.3588,1.0,2003-06-21,06,JJA,DE-Hai +1237,1268,20030622,25.546,1.0,90.7491,1.0,2003-06-22,06,JJA,DE-Hai +1238,1269,20030623,25.242,1.0,102.375,0.958333,2003-06-23,06,JJA,DE-Hai +1239,1270,20030624,24.863,1.0,105.351,1.0,2003-06-24,06,JJA,DE-Hai +1240,1271,20030625,24.453,1.0,104.163,1.0,2003-06-25,06,JJA,DE-Hai +1241,1272,20030626,24.054,1.0,91.3484,1.0,2003-06-26,06,JJA,DE-Hai +1242,1273,20030627,23.65,1.0,116.478,1.0,2003-06-27,06,JJA,DE-Hai +1243,1274,20030628,23.238,1.0,74.2382,1.0,2003-06-28,06,JJA,DE-Hai +1244,1275,20030629,22.879,1.0,108.577,0.979167,2003-06-29,06,JJA,DE-Hai +1245,1276,20030630,22.493,1.0,71.0082,1.0,2003-06-30,06,JJA,DE-Hai +1246,1277,20030701,22.336,1.0,46.0073,1.0,2003-07-01,07,JJA,DE-Hai +1247,1278,20030702,22.258,1.0,66.7845,1.0,2003-07-02,07,JJA,DE-Hai +1248,1279,20030703,22.18,1.0,74.4235,1.0,2003-07-03,07,JJA,DE-Hai +1249,1280,20030704,22.056,1.0,75.454,1.0,2003-07-04,07,JJA,DE-Hai +1250,1281,20030705,21.892,1.0,40.5264,1.0,2003-07-05,07,JJA,DE-Hai +1251,1282,20030706,21.694,1.0,54.4713,1.0,2003-07-06,07,JJA,DE-Hai +1252,1283,20030707,21.484,1.0,58.2577,1.0,2003-07-07,07,JJA,DE-Hai +1253,1284,20030708,21.278,1.0,87.7359,1.0,2003-07-08,07,JJA,DE-Hai +1254,1285,20030709,21.091,1.0,54.6817,1.0,2003-07-09,07,JJA,DE-Hai +1255,1286,20030710,20.915,1.0,90.0615,1.0,2003-07-10,07,JJA,DE-Hai +1256,1287,20030711,20.682,1.0,101.06,1.0,2003-07-11,07,JJA,DE-Hai +1257,1288,20030712,20.45,1.0,83.6746,1.0,2003-07-12,07,JJA,DE-Hai +1258,1289,20030713,20.255,1.0,92.1474,1.0,2003-07-13,07,JJA,DE-Hai +1259,1290,20030714,20.075,1.0,116.773,1.0,2003-07-14,07,JJA,DE-Hai +1260,1291,20030715,19.899,1.0,110.88,1.0,2003-07-15,07,JJA,DE-Hai +1261,1292,20030716,19.738,1.0,105.097,1.0,2003-07-16,07,JJA,DE-Hai +1262,1293,20030717,19.635,1.0,84.9121,1.0,2003-07-17,07,JJA,DE-Hai +1263,1294,20030718,19.584,1.0,89.4202,1.0,2003-07-18,07,JJA,DE-Hai +1264,1295,20030719,19.496,1.0,92.7736,1.0,2003-07-19,07,JJA,DE-Hai +1265,1296,20030720,19.402,1.0,90.5121,1.0,2003-07-20,07,JJA,DE-Hai +1266,1297,20030721,19.352,1.0,73.9023,1.0,2003-07-21,07,JJA,DE-Hai +1267,1298,20030722,19.348,1.0,86.991,1.0,2003-07-22,07,JJA,DE-Hai +1268,1299,20030723,19.314,1.0,64.175,1.0,2003-07-23,07,JJA,DE-Hai +1269,1300,20030724,19.306,1.0,44.7142,1.0,2003-07-24,07,JJA,DE-Hai +1270,1301,20030725,19.319,1.0,85.6588,1.0,2003-07-25,07,JJA,DE-Hai +1271,1302,20030726,19.318,1.0,57.7832,1.0,2003-07-26,07,JJA,DE-Hai +1272,1303,20030727,19.307,1.0,89.5734,1.0,2003-07-27,07,JJA,DE-Hai +1273,1304,20030728,19.312,1.0,47.2783,1.0,2003-07-28,07,JJA,DE-Hai +1274,1305,20030729,19.337,1.0,71.7512,1.0,2003-07-29,07,JJA,DE-Hai +1275,1306,20030730,19.326,1.0,63.6501,1.0,2003-07-30,07,JJA,DE-Hai +1276,1307,20030731,19.297,1.0,42.1901,1.0,2003-07-31,07,JJA,DE-Hai +1277,1308,20030801,19.272,1.0,69.1617,1.0,2003-08-01,08,JJA,DE-Hai +1278,1309,20030802,19.242,1.0,66.4956,1.0,2003-08-02,08,JJA,DE-Hai +1279,1310,20030803,19.209,1.0,68.0911,1.0,2003-08-03,08,JJA,DE-Hai +1280,1311,20030804,19.182,1.0,69.9165,1.0,2003-08-04,08,JJA,DE-Hai +1281,1312,20030805,19.162,1.0,68.3596,1.0,2003-08-05,08,JJA,DE-Hai +1282,1313,20030806,19.137,1.0,64.3368,1.0,2003-08-06,08,JJA,DE-Hai +1283,1314,20030807,19.107,1.0,52.5777,1.0,2003-08-07,08,JJA,DE-Hai +1284,1315,20030808,19.068,1.0,56.5964,1.0,2003-08-08,08,JJA,DE-Hai +1285,1316,20030809,19.034,1.0,60.7247,1.0,2003-08-09,08,JJA,DE-Hai +1286,1317,20030810,19.004,1.0,61.6653,1.0,2003-08-10,08,JJA,DE-Hai +1287,1318,20030811,18.981,1.0,59.7065,1.0,2003-08-11,08,JJA,DE-Hai +1288,1319,20030812,18.965,1.0,48.8075,1.0,2003-08-12,08,JJA,DE-Hai +1289,1320,20030813,18.965,1.0,58.2253,1.0,2003-08-13,08,JJA,DE-Hai +1290,1321,20030814,18.997,1.0,49.2225,1.0,2003-08-14,08,JJA,DE-Hai +1291,1322,20030815,19.016,1.0,60.8091,1.0,2003-08-15,08,JJA,DE-Hai +1292,1323,20030816,18.991,1.0,49.0926,1.0,2003-08-16,08,JJA,DE-Hai +1293,1324,20030817,18.972,1.0,47.7394,1.0,2003-08-17,08,JJA,DE-Hai +1294,1325,20030818,18.968,1.0,55.2659,1.0,2003-08-18,08,JJA,DE-Hai +1295,1326,20030819,18.98,1.0,52.4806,1.0,2003-08-19,08,JJA,DE-Hai +1296,1327,20030820,18.987,1.0,46.5303,1.0,2003-08-20,08,JJA,DE-Hai +1297,1328,20030821,18.982,1.0,44.6384,1.0,2003-08-21,08,JJA,DE-Hai +1298,1329,20030822,18.969,1.0,56.0283,1.0,2003-08-22,08,JJA,DE-Hai +1299,1330,20030823,18.968,1.0,46.3854,0.979167,2003-08-23,08,JJA,DE-Hai +1300,1331,20030824,18.973,1.0,37.5806,1.0,2003-08-24,08,JJA,DE-Hai +1301,1332,20030825,18.949,1.0,39.2277,1.0,2003-08-25,08,JJA,DE-Hai +1302,1333,20030826,18.926,1.0,43.6625,1.0,2003-08-26,08,JJA,DE-Hai +1303,1334,20030827,18.916,1.0,31.2304,1.0,2003-08-27,08,JJA,DE-Hai +1304,1335,20030828,18.904,1.0,32.6319,1.0,2003-08-28,08,JJA,DE-Hai +1305,1336,20030829,18.895,1.0,29.6961,1.0,2003-08-29,08,JJA,DE-Hai +1306,1337,20030830,18.898,1.0,24.8256,1.0,2003-08-30,08,JJA,DE-Hai +1307,1338,20030831,18.879,1.0,51.0638,1.0,2003-08-31,08,JJA,DE-Hai +1582,1613,20040601,27.017,1.0,63.2338,1.0,2004-06-01,06,JJA,DE-Hai +1583,1614,20040602,26.313,1.0,48.6541,1.0,2004-06-02,06,JJA,DE-Hai +1584,1615,20040603,25.322,1.0,69.934,1.0,2004-06-03,06,JJA,DE-Hai +1585,1616,20040604,29.084,1.0,24.1519,1.0,2004-06-04,06,JJA,DE-Hai +1586,1617,20040605,35.957,1.0,9.87481,1.0,2004-06-05,06,JJA,DE-Hai +1587,1618,20040606,35.494,1.0,49.2778,1.0,2004-06-06,06,JJA,DE-Hai +1588,1619,20040607,33.002,1.0,100.402,1.0,2004-06-07,06,JJA,DE-Hai +1589,1620,20040608,30.553,1.0,88.2786,1.0,2004-06-08,06,JJA,DE-Hai +1590,1621,20040609,28.847,1.0,94.5376,1.0,2004-06-09,06,JJA,DE-Hai +1591,1622,20040610,26.781,1.0,83.247,1.0,2004-06-10,06,JJA,DE-Hai +1592,1623,20040611,25.439,1.0,78.4686,1.0,2004-06-11,06,JJA,DE-Hai +1593,1624,20040612,24.944,1.0,94.4397,0.979167,2004-06-12,06,JJA,DE-Hai +1594,1625,20040613,24.808,1.0,73.9716,1.0,2004-06-13,06,JJA,DE-Hai +1595,1626,20040614,23.816,1.0,81.2082,1.0,2004-06-14,06,JJA,DE-Hai +1596,1627,20040615,22.644,1.0,82.2994,1.0,2004-06-15,06,JJA,DE-Hai +1597,1628,20040616,21.577,1.0,60.2775,1.0,2004-06-16,06,JJA,DE-Hai +1598,1629,20040617,21.914,1.0,88.485,1.0,2004-06-17,06,JJA,DE-Hai +1599,1630,20040618,23.104,1.0,42.7722,1.0,2004-06-18,06,JJA,DE-Hai +1600,1631,20040619,22.281,1.0,62.8525,1.0,2004-06-19,06,JJA,DE-Hai +1601,1632,20040620,22.09,1.0,96.404,1.0,2004-06-20,06,JJA,DE-Hai +1602,1633,20040621,22.528,1.0,57.5473,1.0,2004-06-21,06,JJA,DE-Hai +1603,1634,20040622,23.488,1.0,67.8879,1.0,2004-06-22,06,JJA,DE-Hai +1604,1635,20040623,28.981,1.0,57.1708,1.0,2004-06-23,06,JJA,DE-Hai +1605,1636,20040624,29.717,1.0,111.59,1.0,2004-06-24,06,JJA,DE-Hai +1606,1637,20040625,25.944,1.0,46.7463,1.0,2004-06-25,06,JJA,DE-Hai +1607,1638,20040626,23.589,1.0,88.2986,1.0,2004-06-26,06,JJA,DE-Hai +1608,1639,20040627,26.012,1.0,73.2707,1.0,2004-06-27,06,JJA,DE-Hai +1609,1640,20040628,31.824,1.0,102.164,1.0,2004-06-28,06,JJA,DE-Hai +1610,1641,20040629,27.149,1.0,84.4801,1.0,2004-06-29,06,JJA,DE-Hai +1611,1642,20040630,24.409,1.0,78.242,1.0,2004-06-30,06,JJA,DE-Hai +1612,1643,20040701,23.339,1.0,69.3801,1.0,2004-07-01,07,JJA,DE-Hai +1613,1644,20040702,34.686,1.0,77.4673,0.979167,2004-07-02,07,JJA,DE-Hai +1614,1645,20040703,36.775,1.0,39.8023,1.0,2004-07-03,07,JJA,DE-Hai +1615,1646,20040704,36.934,1.0,92.8658,1.0,2004-07-04,07,JJA,DE-Hai +1616,1647,20040705,38.348,1.0,95.6003,1.0,2004-07-05,07,JJA,DE-Hai +1617,1648,20040706,38.295,1.0,75.2578,1.0,2004-07-06,07,JJA,DE-Hai +1618,1649,20040707,34.925,1.0,101.599,1.0,2004-07-07,07,JJA,DE-Hai +1619,1650,20040708,39.663,1.0,42.0276,1.0,2004-07-08,07,JJA,DE-Hai +1620,1651,20040709,40.31,1.0,47.7352,1.0,2004-07-09,07,JJA,DE-Hai +1621,1652,20040710,40.438,1.0,45.1022,1.0,2004-07-10,07,JJA,DE-Hai +1622,1653,20040711,41.316,1.0,96.0372,0.958333,2004-07-11,07,JJA,DE-Hai +1623,1654,20040712,42.079,1.0,11.3875,1.0,2004-07-12,07,JJA,DE-Hai +1624,1655,20040713,42.562,1.0,23.9282,1.0,2004-07-13,07,JJA,DE-Hai +1625,1656,20040714,40.662,1.0,61.0657,1.0,2004-07-14,07,JJA,DE-Hai +1626,1657,20040715,40.221,1.0,41.6365,1.0,2004-07-15,07,JJA,DE-Hai +1627,1658,20040716,39.45,1.0,74.6061,1.0,2004-07-16,07,JJA,DE-Hai +1628,1659,20040717,39.461,1.0,73.8352,0.979167,2004-07-17,07,JJA,DE-Hai +1629,1660,20040718,42.234,1.0,87.2513,1.0,2004-07-18,07,JJA,DE-Hai +1630,1661,20040719,41.183,1.0,110.452,1.0,2004-07-19,07,JJA,DE-Hai +1631,1662,20040720,42.316,1.0,58.2866,1.0,2004-07-20,07,JJA,DE-Hai +1632,1663,20040721,40.579,1.0,103.119,1.0,2004-07-21,07,JJA,DE-Hai +1633,1664,20040722,40.77,1.0,79.6206,1.0,2004-07-22,07,JJA,DE-Hai +1634,1665,20040723,38.78,1.0,91.9928,1.0,2004-07-23,07,JJA,DE-Hai +1635,1666,20040724,37.349,1.0,64.3416,1.0,2004-07-24,07,JJA,DE-Hai +1636,1667,20040725,35.235,1.0,90.7621,1.0,2004-07-25,07,JJA,DE-Hai +1637,1668,20040726,33.91,1.0,27.3673,1.0,2004-07-26,07,JJA,DE-Hai +1638,1669,20040727,33.64,1.0,67.8631,1.0,2004-07-27,07,JJA,DE-Hai +1639,1670,20040728,31.12,1.0,93.5151,1.0,2004-07-28,07,JJA,DE-Hai +1640,1671,20040729,28.141,1.0,110.153,1.0,2004-07-29,07,JJA,DE-Hai +1641,1672,20040730,25.685,1.0,94.3735,1.0,2004-07-30,07,JJA,DE-Hai +1642,1673,20040731,23.687,1.0,91.8104,1.0,2004-07-31,07,JJA,DE-Hai +1643,1674,20040801,22.354,1.0,83.7192,1.0,2004-08-01,08,JJA,DE-Hai +1644,1675,20040802,21.273,1.0,87.7996,1.0,2004-08-02,08,JJA,DE-Hai +1645,1676,20040803,20.302,1.0,89.6051,1.0,2004-08-03,08,JJA,DE-Hai +1646,1677,20040804,19.382,1.0,82.0278,1.0,2004-08-04,08,JJA,DE-Hai +1647,1678,20040805,18.552,1.0,99.5332,1.0,2004-08-05,08,JJA,DE-Hai +1648,1679,20040806,17.871,1.0,89.5379,1.0,2004-08-06,08,JJA,DE-Hai +1649,1680,20040807,17.298,1.0,99.5818,1.0,2004-08-07,08,JJA,DE-Hai +1650,1681,20040808,16.794,1.0,95.3393,1.0,2004-08-08,08,JJA,DE-Hai +1651,1682,20040809,16.308,1.0,89.3556,1.0,2004-08-09,08,JJA,DE-Hai +1652,1683,20040810,15.865,1.0,94.9907,1.0,2004-08-10,08,JJA,DE-Hai +1653,1684,20040811,15.476,1.0,46.1899,1.0,2004-08-11,08,JJA,DE-Hai +1654,1685,20040812,15.228,1.0,66.105,1.0,2004-08-12,08,JJA,DE-Hai +1655,1686,20040813,15.119,1.0,30.6577,1.0,2004-08-13,08,JJA,DE-Hai +1656,1687,20040814,15.237,1.0,21.3097,1.0,2004-08-14,08,JJA,DE-Hai +1657,1688,20040815,15.316,1.0,74.3989,1.0,2004-08-15,08,JJA,DE-Hai +1658,1689,20040816,15.206,1.0,59.174,1.0,2004-08-16,08,JJA,DE-Hai +1659,1690,20040817,16.594,1.0,48.4222,1.0,2004-08-17,08,JJA,DE-Hai +1660,1691,20040818,16.072,1.0,68.9326,1.0,2004-08-18,08,JJA,DE-Hai +1661,1692,20040819,18.607,1.0,49.9591,1.0,2004-08-19,08,JJA,DE-Hai +1662,1693,20040820,16.664,1.0,69.3297,1.0,2004-08-20,08,JJA,DE-Hai +1663,1694,20040821,17.415,1.0,51.7524,1.0,2004-08-21,08,JJA,DE-Hai +1664,1695,20040822,18.915,1.0,69.0465,1.0,2004-08-22,08,JJA,DE-Hai +1665,1696,20040823,16.789,1.0,55.3984,1.0,2004-08-23,08,JJA,DE-Hai +1666,1697,20040824,16.116,1.0,18.2902,1.0,2004-08-24,08,JJA,DE-Hai +1667,1698,20040825,17.372,1.0,29.6229,1.0,2004-08-25,08,JJA,DE-Hai +1668,1699,20040826,17.971,1.0,26.3505,1.0,2004-08-26,08,JJA,DE-Hai +1669,1700,20040827,20.293,1.0,21.3058,1.0,2004-08-27,08,JJA,DE-Hai +1670,1701,20040828,24.16,1.0,14.6378,1.0,2004-08-28,08,JJA,DE-Hai +1671,1702,20040829,24.916,1.0,59.4813,1.0,2004-08-29,08,JJA,DE-Hai +1672,1703,20040830,26.296,1.0,35.056,1.0,2004-08-30,08,JJA,DE-Hai +1673,1704,20040831,25.831,1.0,14.0102,1.0,2004-08-31,08,JJA,DE-Hai +1947,1978,20050601,42.435,1.0,68.4755,1.0,2005-06-01,06,JJA,DE-Hai +1948,1979,20050602,41.787,1.0,64.7984,1.0,2005-06-02,06,JJA,DE-Hai +1949,1980,20050603,41.17,1.0,105.247,0.958333,2005-06-03,06,JJA,DE-Hai +1950,1981,20050604,42.045,1.0,100.271,1.0,2005-06-04,06,JJA,DE-Hai +1951,1982,20050605,42.178,1.0,59.5273,1.0,2005-06-05,06,JJA,DE-Hai +1952,1983,20050606,44.53,1.0,33.4119,1.0,2005-06-06,06,JJA,DE-Hai +1953,1984,20050607,45.081,1.0,57.628,1.0,2005-06-07,06,JJA,DE-Hai +1954,1985,20050608,44.896,1.0,62.9845,1.0,2005-06-08,06,JJA,DE-Hai +1955,1986,20050609,43.669,1.0,61.24,1.0,2005-06-09,06,JJA,DE-Hai +1956,1987,20050610,43.048,1.0,43.1336,1.0,2005-06-10,06,JJA,DE-Hai +1957,1988,20050611,42.592,1.0,37.7853,1.0,2005-06-11,06,JJA,DE-Hai +1958,1989,20050612,41.998,1.0,60.3268,1.0,2005-06-12,06,JJA,DE-Hai +1959,1990,20050613,41.128,1.0,75.0404,1.0,2005-06-13,06,JJA,DE-Hai +1960,1991,20050614,40.018,1.0,54.474,1.0,2005-06-14,06,JJA,DE-Hai +1961,1992,20050615,38.78,1.0,72.1258,1.0,2005-06-15,06,JJA,DE-Hai +1962,1993,20050616,36.967,1.0,86.0249,1.0,2005-06-16,06,JJA,DE-Hai +1963,1994,20050617,35.753,1.0,23.0781,1.0,2005-06-17,06,JJA,DE-Hai +1964,1995,20050618,34.703,1.0,94.1523,1.0,2005-06-18,06,JJA,DE-Hai +1965,1996,20050619,33.183,1.0,80.8833,1.0,2005-06-19,06,JJA,DE-Hai +1966,1997,20050620,31.888,1.0,97.8063,1.0,2005-06-20,06,JJA,DE-Hai +1967,1998,20050621,30.471,1.0,101.684,1.0,2005-06-21,06,JJA,DE-Hai +1968,1999,20050622,29.259,1.0,92.2112,1.0,2005-06-22,06,JJA,DE-Hai +1969,2000,20050623,28.198,1.0,97.7736,1.0,2005-06-23,06,JJA,DE-Hai +1970,2001,20050624,27.256,1.0,86.3009,1.0,2005-06-24,06,JJA,DE-Hai +1971,2002,20050625,30.277,1.0,90.5759,1.0,2005-06-25,06,JJA,DE-Hai +1972,2003,20050626,37.282,1.0,62.9379,1.0,2005-06-26,06,JJA,DE-Hai +1973,2004,20050627,34.514,1.0,98.194,1.0,2005-06-27,06,JJA,DE-Hai +1974,2005,20050628,32.161,1.0,102.258,1.0,2005-06-28,06,JJA,DE-Hai +1975,2006,20050629,30.635,1.0,46.5129,1.0,2005-06-29,06,JJA,DE-Hai +1976,2007,20050630,39.433,1.0,54.8901,1.0,2005-06-30,06,JJA,DE-Hai +1977,2008,20050701,43.228,1.0,49.5663,1.0,2005-07-01,07,JJA,DE-Hai +1978,2009,20050702,40.98,1.0,107.425,0.979167,2005-07-02,07,JJA,DE-Hai +1979,2010,20050703,39.2,1.0,90.9402,1.0,2005-07-03,07,JJA,DE-Hai +1980,2011,20050704,37.334,1.0,106.459,0.916667,2005-07-04,07,JJA,DE-Hai +1981,2012,20050705,35.786,1.0,46.2799,1.0,2005-07-05,07,JJA,DE-Hai +1982,2013,20050706,34.615,1.0,50.7653,1.0,2005-07-06,07,JJA,DE-Hai +1983,2014,20050707,38.269,1.0,34.7731,1.0,2005-07-07,07,JJA,DE-Hai +1984,2015,20050708,41.581,1.0,41.6759,1.0,2005-07-08,07,JJA,DE-Hai +1985,2016,20050709,41.72,1.0,78.4778,0.9375,2005-07-09,07,JJA,DE-Hai +1986,2017,20050710,39.25,1.0,119.637,1.0,2005-07-10,07,JJA,DE-Hai +1987,2018,20050711,36.505,1.0,112.9,1.0,2005-07-11,07,JJA,DE-Hai +1988,2019,20050712,34.082,1.0,118.542,1.0,2005-07-12,07,JJA,DE-Hai +1989,2020,20050713,31.75,1.0,101.861,1.0,2005-07-13,07,JJA,DE-Hai +1990,2021,20050714,29.815,1.0,92.3674,0.979167,2005-07-14,07,JJA,DE-Hai +1991,2022,20050715,28.815,1.0,90.209,0.979167,2005-07-15,07,JJA,DE-Hai +1992,2023,20050716,30.601,1.0,118.785,1.0,2005-07-16,07,JJA,DE-Hai +1993,2024,20050717,28.046,1.0,101.343,1.0,2005-07-17,07,JJA,DE-Hai +1994,2025,20050718,27.746,1.0,92.1175,1.0,2005-07-18,07,JJA,DE-Hai +1995,2026,20050719,29.512,1.0,56.3355,1.0,2005-07-19,07,JJA,DE-Hai +1996,2027,20050720,29.49,1.0,84.2454,1.0,2005-07-20,07,JJA,DE-Hai +1997,2028,20050721,33.015,1.0,50.2261,1.0,2005-07-21,07,JJA,DE-Hai +1998,2029,20050722,35.389,1.0,5.42485,1.0,2005-07-22,07,JJA,DE-Hai +1999,2030,20050723,34.325,1.0,81.1635,1.0,2005-07-23,07,JJA,DE-Hai +2000,2031,20050724,32.058,1.0,85.7976,1.0,2005-07-24,07,JJA,DE-Hai +2001,2032,20050725,30.818,1.0,90.2823,1.0,2005-07-25,07,JJA,DE-Hai +2002,2033,20050726,29.479,1.0,68.8741,1.0,2005-07-26,07,JJA,DE-Hai +2003,2034,20050727,28.504,1.0,84.9411,0.979167,2005-07-27,07,JJA,DE-Hai +2004,2035,20050728,36.128,1.0,96.4492,0.895833,2005-07-28,07,JJA,DE-Hai +2005,2036,20050729,35.67,1.0,68.8495,1.0,2005-07-29,07,JJA,DE-Hai +2006,2037,20050730,38.427,1.0,105.947,1.0,2005-07-30,07,JJA,DE-Hai +2007,2038,20050731,36.954,1.0,115.728,1.0,2005-07-31,07,JJA,DE-Hai +2008,2039,20050801,33.335,1.0,94.0144,1.0,2005-08-01,08,JJA,DE-Hai +2009,2040,20050802,30.996,1.0,55.1825,1.0,2005-08-02,08,JJA,DE-Hai +2010,2041,20050803,29.316,1.0,44.6433,1.0,2005-08-03,08,JJA,DE-Hai +2011,2042,20050804,27.951,1.0,78.1739,1.0,2005-08-04,08,JJA,DE-Hai +2012,2043,20050805,27.509,1.0,74.5854,1.0,2005-08-05,08,JJA,DE-Hai +2013,2044,20050806,35.004,1.0,67.3507,1.0,2005-08-06,08,JJA,DE-Hai +2014,2045,20050807,40.114,1.0,68.0895,1.0,2005-08-07,08,JJA,DE-Hai +2015,2046,20050808,41.097,1.0,54.8614,1.0,2005-08-08,08,JJA,DE-Hai +2016,2047,20050809,40.429,1.0,64.4252,1.0,2005-08-09,08,JJA,DE-Hai +2017,2048,20050810,37.091,1.0,26.233,1.0,2005-08-10,08,JJA,DE-Hai +2018,2049,20050811,35.122,1.0,52.6121,1.0,2005-08-11,08,JJA,DE-Hai +2019,2050,20050812,33.157,1.0,73.6298,1.0,2005-08-12,08,JJA,DE-Hai +2020,2051,20050813,33.912,1.0,56.7959,1.0,2005-08-13,08,JJA,DE-Hai +2021,2052,20050814,36.917,1.0,10.0662,1.0,2005-08-14,08,JJA,DE-Hai +2022,2053,20050815,40.525,1.0,33.8992,1.0,2005-08-15,08,JJA,DE-Hai +2023,2054,20050816,37.182,1.0,66.3754,1.0,2005-08-16,08,JJA,DE-Hai +2024,2055,20050817,33.587,1.0,82.0815,1.0,2005-08-17,08,JJA,DE-Hai +2025,2056,20050818,30.565,1.0,110.171,1.0,2005-08-18,08,JJA,DE-Hai +2026,2057,20050819,27.843,1.0,91.8054,1.0,2005-08-19,08,JJA,DE-Hai +2027,2058,20050820,36.082,1.0,14.4719,1.0,2005-08-20,08,JJA,DE-Hai +2028,2059,20050821,38.318,1.0,45.6256,1.0,2005-08-21,08,JJA,DE-Hai +2029,2060,20050822,35.585,1.0,73.3201,1.0,2005-08-22,08,JJA,DE-Hai +2030,2061,20050823,33.175,1.0,15.345,1.0,2005-08-23,08,JJA,DE-Hai +2031,2062,20050824,31.713,1.0,42.474,1.0,2005-08-24,08,JJA,DE-Hai +2032,2063,20050825,30.477,1.0,19.1995,1.0,2005-08-25,08,JJA,DE-Hai +2033,2064,20050826,33.915,1.0,67.4668,1.0,2005-08-26,08,JJA,DE-Hai +2034,2065,20050827,30.544,1.0,76.2608,1.0,2005-08-27,08,JJA,DE-Hai +2035,2066,20050828,28.085,1.0,82.3559,1.0,2005-08-28,08,JJA,DE-Hai +2036,2067,20050829,26.327,1.0,91.2447,1.0,2005-08-29,08,JJA,DE-Hai +2037,2068,20050830,24.947,1.0,85.4868,1.0,2005-08-30,08,JJA,DE-Hai +2038,2069,20050831,23.947,1.0,86.5344,1.0,2005-08-31,08,JJA,DE-Hai +2299,2343,20060601,44.881,1.0,52.0185,1.0,2006-06-01,06,JJA,DE-Hai +2300,2344,20060602,43.815,1.0,58.5712,0.979167,2006-06-02,06,JJA,DE-Hai +2301,2345,20060603,43.082,1.0,41.9692,1.0,2006-06-03,06,JJA,DE-Hai +2302,2346,20060604,42.73,1.0,60.6024,1.0,2006-06-04,06,JJA,DE-Hai +2303,2347,20060605,42.165,1.0,33.8815,1.0,2006-06-05,06,JJA,DE-Hai +2304,2348,20060606,41.651,1.0,49.3729,1.0,2006-06-06,06,JJA,DE-Hai +2305,2349,20060607,40.978,1.0,57.4869,1.0,2006-06-07,06,JJA,DE-Hai +2306,2350,20060608,39.988,1.0,59.6214,1.0,2006-06-08,06,JJA,DE-Hai +2307,2351,20060609,38.623,1.0,77.56,1.0,2006-06-09,06,JJA,DE-Hai +2308,2352,20060610,37.011,1.0,85.312,1.0,2006-06-10,06,JJA,DE-Hai +2309,2353,20060611,35.45,1.0,96.5342,1.0,2006-06-11,06,JJA,DE-Hai +2310,2354,20060612,33.757,1.0,116.844,1.0,2006-06-12,06,JJA,DE-Hai +2311,2355,20060613,31.961,1.0,113.473,1.0,2006-06-13,06,JJA,DE-Hai +2312,2356,20060614,30.216,1.0,103.474,1.0,2006-06-14,06,JJA,DE-Hai +2313,2357,20060615,28.989,1.0,49.1001,1.0,2006-06-15,06,JJA,DE-Hai +2314,2358,20060616,28.419,1.0,68.766,1.0,2006-06-16,06,JJA,DE-Hai +2315,2359,20060617,27.684,1.0,94.7859,1.0,2006-06-17,06,JJA,DE-Hai +2316,2360,20060618,26.921,1.0,107.119,1.0,2006-06-18,06,JJA,DE-Hai +2317,2361,20060619,28.34,1.0,99.7605,1.0,2006-06-19,06,JJA,DE-Hai +2318,2362,20060620,27.844,1.0,106.083,1.0,2006-06-20,06,JJA,DE-Hai +2319,2363,20060621,30.586,1.0,111.91,1.0,2006-06-21,06,JJA,DE-Hai +2320,2364,20060622,28.995,1.0,126.238,1.0,2006-06-22,06,JJA,DE-Hai +2321,2365,20060623,27.638,1.0,79.8735,0.979167,2006-06-23,06,JJA,DE-Hai +2322,2366,20060624,26.728,1.0,93.2646,1.0,2006-06-24,06,JJA,DE-Hai +2323,2367,20060625,27.417,1.0,88.5915,0.9375,2006-06-25,06,JJA,DE-Hai +2324,2368,20060626,33.419,1.0,118.844,1.0,2006-06-26,06,JJA,DE-Hai +2325,2369,20060627,30.584,1.0,97.4189,1.0,2006-06-27,06,JJA,DE-Hai +2326,2370,20060628,29.335,1.0,39.0826,1.0,2006-06-28,06,JJA,DE-Hai +2327,2371,20060629,28.515,1.0,65.5315,1.0,2006-06-29,06,JJA,DE-Hai +2328,2372,20060630,27.449,1.0,117.382,1.0,2006-06-30,06,JJA,DE-Hai +2329,2373,20060701,26.453,1.0,115.082,1.0,2006-07-01,07,JJA,DE-Hai +2330,2374,20060702,25.521,1.0,138.858,1.0,2006-07-02,07,JJA,DE-Hai +2331,2375,20060703,24.627,1.0,133.123,1.0,2006-07-03,07,JJA,DE-Hai +2332,2376,20060704,23.838,1.0,129.729,1.0,2006-07-04,07,JJA,DE-Hai +2333,2377,20060705,23.098,1.0,112.209,0.979167,2006-07-05,07,JJA,DE-Hai +2334,2378,20060706,22.528,1.0,77.144,1.0,2006-07-06,07,JJA,DE-Hai +2335,2379,20060707,22.685,1.0,51.0363,1.0,2006-07-07,07,JJA,DE-Hai +2336,2380,20060708,22.931,1.0,81.8581,1.0,2006-07-08,07,JJA,DE-Hai +2337,2381,20060709,22.445,1.0,107.478,1.0,2006-07-09,07,JJA,DE-Hai +2338,2382,20060710,21.943,1.0,132.0,1.0,2006-07-10,07,JJA,DE-Hai +2339,2383,20060711,21.468,1.0,117.967,1.0,2006-07-11,07,JJA,DE-Hai +2340,2384,20060712,21.083,1.0,81.6175,1.0,2006-07-12,07,JJA,DE-Hai +2341,2385,20060713,20.834,1.0,82.0539,1.0,2006-07-13,07,JJA,DE-Hai +2342,2386,20060714,20.505,1.0,76.0342,1.0,2006-07-14,07,JJA,DE-Hai +2343,2387,20060715,20.145,1.0,104.954,1.0,2006-07-15,07,JJA,DE-Hai +2344,2388,20060716,19.844,1.0,120.826,1.0,2006-07-16,07,JJA,DE-Hai +2345,2389,20060717,19.52,1.0,96.887,1.0,2006-07-17,07,JJA,DE-Hai +2346,2390,20060718,19.221,1.0,106.351,1.0,2006-07-18,07,JJA,DE-Hai +2347,2391,20060719,18.861,1.0,101.399,1.0,2006-07-19,07,JJA,DE-Hai +2348,2392,20060720,18.346,1.0,105.119,1.0,2006-07-20,07,JJA,DE-Hai +2349,2393,20060721,17.864,1.0,100.907,1.0,2006-07-21,07,JJA,DE-Hai +2350,2394,20060722,17.674,1.0,105.023,1.0,2006-07-22,07,JJA,DE-Hai +2351,2395,20060723,17.384,1.0,86.8548,1.0,2006-07-23,07,JJA,DE-Hai +2352,2396,20060724,17.146,1.0,80.9492,1.0,2006-07-24,07,JJA,DE-Hai +2353,2397,20060725,17.053,1.0,92.2595,1.0,2006-07-25,07,JJA,DE-Hai +2354,2398,20060726,16.727,1.0,69.8473,1.0,2006-07-26,07,JJA,DE-Hai +2355,2399,20060727,16.637,1.0,73.7272,1.0,2006-07-27,07,JJA,DE-Hai +2356,2400,20060728,16.64,1.0,59.6394,1.0,2006-07-28,07,JJA,DE-Hai +2357,2401,20060729,16.925,1.0,88.236,1.0,2006-07-29,07,JJA,DE-Hai +2358,2402,20060730,16.839,1.0,80.9341,1.0,2006-07-30,07,JJA,DE-Hai +2359,2403,20060731,17.471,1.0,71.6509,1.0,2006-07-31,07,JJA,DE-Hai +2360,2404,20060801,17.388,1.0,62.9533,1.0,2006-08-01,08,JJA,DE-Hai +2361,2405,20060802,19.528,1.0,47.7203,1.0,2006-08-02,08,JJA,DE-Hai +2362,2406,20060803,19.383,1.0,96.4589,1.0,2006-08-03,08,JJA,DE-Hai +2363,2407,20060804,19.056,1.0,64.8507,1.0,2006-08-04,08,JJA,DE-Hai +2364,2408,20060805,18.934,1.0,53.7911,1.0,2006-08-05,08,JJA,DE-Hai +2365,2409,20060806,22.236,1.0,7.48745,1.0,2006-08-06,08,JJA,DE-Hai +2366,2410,20060807,22.567,1.0,92.5361,1.0,2006-08-07,08,JJA,DE-Hai +2367,2411,20060808,20.244,1.0,56.712,1.0,2006-08-08,08,JJA,DE-Hai +2368,2412,20060809,19.294,1.0,63.5356,1.0,2006-08-09,08,JJA,DE-Hai +2369,2413,20060810,18.615,1.0,76.9268,1.0,2006-08-10,08,JJA,DE-Hai +2370,2414,20060811,18.791,1.0,27.4526,1.0,2006-08-11,08,JJA,DE-Hai +2371,2415,20060812,18.872,1.0,56.3498,1.0,2006-08-12,08,JJA,DE-Hai +2372,2416,20060813,18.325,1.0,51.0784,1.0,2006-08-13,08,JJA,DE-Hai +2373,2417,20060814,17.852,1.0,64.4014,1.0,2006-08-14,08,JJA,DE-Hai +2374,2418,20060815,21.38,1.0,46.462,1.0,2006-08-15,08,JJA,DE-Hai +2375,2419,20060816,19.981,1.0,40.6501,1.0,2006-08-16,08,JJA,DE-Hai +2376,2420,20060817,19.302,1.0,47.6993,1.0,2006-08-17,08,JJA,DE-Hai +2377,2421,20060818,18.804,1.0,35.3187,1.0,2006-08-18,08,JJA,DE-Hai +2378,2422,20060819,18.786,1.0,82.1353,0.979167,2006-08-19,08,JJA,DE-Hai +2379,2423,20060820,20.784,1.0,60.0462,1.0,2006-08-20,08,JJA,DE-Hai +2380,2424,20060821,19.465,1.0,59.1236,1.0,2006-08-21,08,JJA,DE-Hai +2381,2425,20060822,24.249,1.0,53.8775,1.0,2006-08-22,08,JJA,DE-Hai +2382,2426,20060823,23.771,1.0,85.8593,1.0,2006-08-23,08,JJA,DE-Hai +2383,2427,20060824,22.715,1.0,58.4896,1.0,2006-08-24,08,JJA,DE-Hai +2384,2428,20060825,26.117,1.0,28.351,1.0,2006-08-25,08,JJA,DE-Hai +2385,2429,20060826,28.516,1.0,53.4276,1.0,2006-08-26,08,JJA,DE-Hai +2386,2430,20060827,26.279,1.0,42.639,1.0,2006-08-27,08,JJA,DE-Hai +2387,2431,20060828,26.107,1.0,34.4301,1.0,2006-08-28,08,JJA,DE-Hai +2388,2432,20060829,30.041,1.0,47.8088,0.979167,2006-08-29,08,JJA,DE-Hai +2389,2433,20060830,31.537,1.0,55.2692,1.0,2006-08-30,08,JJA,DE-Hai +2390,2434,20060831,29.662,1.0,78.5014,1.0,2006-08-31,08,JJA,DE-Hai +2664,2708,20070601,42.236,1.0,99.0829,1.0,2007-06-01,06,JJA,DE-Hai +2665,2709,20070602,41.317,1.0,67.7247,1.0,2007-06-02,06,JJA,DE-Hai +2666,2710,20070603,40.792,1.0,35.4556,1.0,2007-06-03,06,JJA,DE-Hai +2667,2711,20070604,40.243,1.0,74.9626,1.0,2007-06-04,06,JJA,DE-Hai +2668,2712,20070605,39.418,1.0,71.0599,1.0,2007-06-05,06,JJA,DE-Hai +2669,2713,20070606,38.61,1.0,100.918,1.0,2007-06-06,06,JJA,DE-Hai +2670,2714,20070607,37.341,1.0,142.335,1.0,2007-06-07,06,JJA,DE-Hai +2671,2715,20070608,35.819,1.0,122.595,0.979167,2007-06-08,06,JJA,DE-Hai +2672,2716,20070609,34.148,1.0,113.178,1.0,2007-06-09,06,JJA,DE-Hai +2673,2717,20070610,32.539,1.0,108.88,1.0,2007-06-10,06,JJA,DE-Hai +2674,2718,20070611,31.35,1.0,65.127,1.0,2007-06-11,06,JJA,DE-Hai +2675,2719,20070612,32.098,1.0,60.9214,1.0,2007-06-12,06,JJA,DE-Hai +2676,2720,20070613,32.855,1.0,106.245,1.0,2007-06-13,06,JJA,DE-Hai +2677,2721,20070614,31.783,1.0,103.885,1.0,2007-06-14,06,JJA,DE-Hai +2678,2722,20070615,34.431,1.0,108.472,1.0,2007-06-15,06,JJA,DE-Hai +2679,2723,20070616,39.336,1.0,118.906,1.0,2007-06-16,06,JJA,DE-Hai +2680,2724,20070617,36.849,1.0,121.301,1.0,2007-06-17,06,JJA,DE-Hai +2681,2725,20070618,37.896,1.0,102.494,1.0,2007-06-18,06,JJA,DE-Hai +2682,2726,20070619,36.473,1.0,114.985,1.0,2007-06-19,06,JJA,DE-Hai +2683,2727,20070620,33.96,1.0,67.6975,0.875,2007-06-20,06,JJA,DE-Hai +2684,2728,20070621,40.274,1.0,13.745,1.0,2007-06-21,06,JJA,DE-Hai +2685,2729,20070622,42.738,1.0,76.4406,1.0,2007-06-22,06,JJA,DE-Hai +2686,2730,20070623,41.886,1.0,82.3484,1.0,2007-06-23,06,JJA,DE-Hai +2687,2731,20070624,40.02,1.0,108.404,1.0,2007-06-24,06,JJA,DE-Hai +2688,2732,20070625,39.771,1.0,83.1757,1.0,2007-06-25,06,JJA,DE-Hai +2689,2733,20070626,41.356,1.0,36.6042,1.0,2007-06-26,06,JJA,DE-Hai +2690,2734,20070627,40.127,1.0,64.8383,1.0,2007-06-27,06,JJA,DE-Hai +2691,2735,20070628,40.223,1.0,65.7087,1.0,2007-06-28,06,JJA,DE-Hai +2692,2736,20070629,40.475,1.0,57.8913,1.0,2007-06-29,06,JJA,DE-Hai +2693,2737,20070630,38.757,1.0,105.771,1.0,2007-06-30,06,JJA,DE-Hai +2694,2738,20070701,36.773,1.0,95.3594,1.0,2007-07-01,07,JJA,DE-Hai +2695,2739,20070702,36.877,1.0,42.7583,1.0,2007-07-02,07,JJA,DE-Hai +2696,2740,20070703,37.049,1.0,53.8847,1.0,2007-07-03,07,JJA,DE-Hai +2697,2741,20070704,37.72,1.0,67.3631,1.0,2007-07-04,07,JJA,DE-Hai +2698,2742,20070705,38.403,1.0,34.5512,1.0,2007-07-05,07,JJA,DE-Hai +2699,2743,20070706,39.361,1.0,60.7883,1.0,2007-07-06,07,JJA,DE-Hai +2700,2744,20070707,37.164,1.0,109.087,1.0,2007-07-07,07,JJA,DE-Hai +2701,2745,20070708,34.635,1.0,111.984,1.0,2007-07-08,07,JJA,DE-Hai +2702,2746,20070709,40.682,1.0,24.0304,1.0,2007-07-09,07,JJA,DE-Hai +2703,2747,20070710,42.832,1.0,83.4191,0.979167,2007-07-10,07,JJA,DE-Hai +2704,2748,20070711,41.738,1.0,81.4506,1.0,2007-07-11,07,JJA,DE-Hai +2705,2749,20070712,41.262,1.0,86.6461,1.0,2007-07-12,07,JJA,DE-Hai +2706,2750,20070713,40.187,1.0,55.6293,0.979167,2007-07-13,07,JJA,DE-Hai +2707,2751,20070714,38.111,1.0,136.067,1.0,2007-07-14,07,JJA,DE-Hai +2708,2752,20070715,35.022,1.0,137.328,0.9375,2007-07-15,07,JJA,DE-Hai +2709,2753,20070716,32.236,1.0,142.803,0.979167,2007-07-16,07,JJA,DE-Hai +2710,2754,20070717,30.269,1.0,116.369,0.979167,2007-07-17,07,JJA,DE-Hai +2711,2755,20070718,28.972,1.0,95.524,1.0,2007-07-18,07,JJA,DE-Hai +2712,2756,20070719,28.094,1.0,64.6948,1.0,2007-07-19,07,JJA,DE-Hai +2713,2757,20070720,27.723,1.0,75.6285,1.0,2007-07-20,07,JJA,DE-Hai +2714,2758,20070721,27.576,1.0,46.4703,1.0,2007-07-21,07,JJA,DE-Hai +2715,2759,20070722,39.461,1.0,89.3128,1.0,2007-07-22,07,JJA,DE-Hai +2716,2760,20070723,37.948,1.0,67.9084,1.0,2007-07-23,07,JJA,DE-Hai +2717,2761,20070724,37.747,1.0,58.3152,1.0,2007-07-24,07,JJA,DE-Hai +2718,2762,20070725,36.383,1.0,98.5911,1.0,2007-07-25,07,JJA,DE-Hai +2719,2763,20070726,33.87,1.0,135.063,0.958333,2007-07-26,07,JJA,DE-Hai +2720,2764,20070727,31.577,1.0,112.236,0.979167,2007-07-27,07,JJA,DE-Hai +2721,2765,20070728,38.463,1.0,16.8452,1.0,2007-07-28,07,JJA,DE-Hai +2722,2766,20070729,43.002,1.0,7.96718,1.0,2007-07-29,07,JJA,DE-Hai +2723,2767,20070730,42.308,1.0,64.9764,1.0,2007-07-30,07,JJA,DE-Hai +2724,2768,20070731,40.699,1.0,66.204,1.0,2007-07-31,07,JJA,DE-Hai +2725,2769,20070801,38.928,1.0,89.7284,0.979167,2007-08-01,08,JJA,DE-Hai +2726,2770,20070802,37.06,1.0,61.0479,1.0,2007-08-02,08,JJA,DE-Hai +2727,2771,20070803,36.631,1.0,51.8698,1.0,2007-08-03,08,JJA,DE-Hai +2728,2772,20070804,35.01,1.0,93.9712,1.0,2007-08-04,08,JJA,DE-Hai +2729,2773,20070805,32.803,1.0,118.138,0.979167,2007-08-05,08,JJA,DE-Hai +2730,2774,20070806,31.129,1.0,114.286,1.0,2007-08-06,08,JJA,DE-Hai +2731,2775,20070807,32.563,1.0,83.2348,1.0,2007-08-07,08,JJA,DE-Hai +2732,2776,20070808,39.958,1.0,13.3383,1.0,2007-08-08,08,JJA,DE-Hai +2733,2777,20070809,43.823,1.0,7.42648,1.0,2007-08-09,08,JJA,DE-Hai +2734,2778,20070810,43.097,1.0,43.7443,1.0,2007-08-10,08,JJA,DE-Hai +2735,2779,20070811,43.583,1.0,2.93315,1.0,2007-08-11,08,JJA,DE-Hai +2736,2780,20070812,41.786,1.0,112.22,1.0,2007-08-12,08,JJA,DE-Hai +2737,2781,20070813,39.788,1.0,67.5324,1.0,2007-08-13,08,JJA,DE-Hai +2738,2782,20070814,38.029,1.0,89.3645,0.979167,2007-08-14,08,JJA,DE-Hai +2739,2783,20070815,36.157,1.0,78.9121,1.0,2007-08-15,08,JJA,DE-Hai +2740,2784,20070816,34.9,1.0,49.9058,1.0,2007-08-16,08,JJA,DE-Hai +2741,2785,20070817,33.548,1.0,100.042,1.0,2007-08-17,08,JJA,DE-Hai +2742,2786,20070818,32.372,1.0,80.6956,1.0,2007-08-18,08,JJA,DE-Hai +2743,2787,20070819,31.315,1.0,65.2116,1.0,2007-08-19,08,JJA,DE-Hai +2744,2788,20070820,30.403,1.0,99.8768,1.0,2007-08-20,08,JJA,DE-Hai +2745,2789,20070821,36.244,1.0,12.5101,1.0,2007-08-21,08,JJA,DE-Hai +2746,2790,20070822,39.44,1.0,66.9608,1.0,2007-08-22,08,JJA,DE-Hai +2747,2791,20070823,37.134,1.0,50.9256,1.0,2007-08-23,08,JJA,DE-Hai +2748,2792,20070824,35.295,1.0,91.4318,1.0,2007-08-24,08,JJA,DE-Hai +2749,2793,20070825,33.077,1.0,85.4113,1.0,2007-08-25,08,JJA,DE-Hai +2750,2794,20070826,31.682,1.0,97.6141,1.0,2007-08-26,08,JJA,DE-Hai +2751,2795,20070827,30.58,1.0,74.3736,1.0,2007-08-27,08,JJA,DE-Hai +2752,2796,20070828,29.715,1.0,54.7967,1.0,2007-08-28,08,JJA,DE-Hai +2753,2797,20070829,29.068,1.0,72.6963,1.0,2007-08-29,08,JJA,DE-Hai +2754,2798,20070830,28.43,1.0,80.6065,1.0,2007-08-30,08,JJA,DE-Hai +2755,2799,20070831,28.041,1.0,40.0122,1.0,2007-08-31,08,JJA,DE-Hai +3029,3074,20080601,30.224,1.0,94.707,1.0,2008-06-01,06,JJA,DE-Hai +3030,3075,20080602,29.694,1.0,87.0291,1.0,2008-06-02,06,JJA,DE-Hai +3031,3076,20080603,29.178,1.0,104.101,1.0,2008-06-03,06,JJA,DE-Hai +3032,3077,20080604,29.962,1.0,33.1203,1.0,2008-06-04,06,JJA,DE-Hai +3033,3078,20080605,29.495,1.0,123.911,1.0,2008-06-05,06,JJA,DE-Hai +3034,3079,20080606,28.593,1.0,117.776,1.0,2008-06-06,06,JJA,DE-Hai +3035,3080,20080607,28.086,1.0,96.6554,1.0,2008-06-07,06,JJA,DE-Hai +3036,3081,20080608,27.593,1.0,103.077,1.0,2008-06-08,06,JJA,DE-Hai +3037,3082,20080609,27.078,1.0,94.0425,1.0,2008-06-09,06,JJA,DE-Hai +3038,3083,20080610,26.565,1.0,108.352,1.0,2008-06-10,06,JJA,DE-Hai +3039,3084,20080611,26.13,1.0,78.9383,1.0,2008-06-11,06,JJA,DE-Hai +3040,3085,20080612,25.928,1.0,52.7844,1.0,2008-06-12,06,JJA,DE-Hai +3041,3086,20080613,32.924,1.0,71.6161,1.0,2008-06-13,06,JJA,DE-Hai +3042,3087,20080614,31.472,1.0,76.3418,1.0,2008-06-14,06,JJA,DE-Hai +3043,3088,20080615,31.553,1.0,72.1042,1.0,2008-06-15,06,JJA,DE-Hai +3044,3089,20080616,33.411,1.0,80.9069,1.0,2008-06-16,06,JJA,DE-Hai +3045,3090,20080617,31.285,1.0,75.8348,1.0,2008-06-17,06,JJA,DE-Hai +3046,3091,20080618,29.694,1.0,92.6573,1.0,2008-06-18,06,JJA,DE-Hai +3047,3092,20080619,28.449,1.0,82.9344,0.979167,2008-06-19,06,JJA,DE-Hai +3048,3093,20080620,28.045,1.0,102.185,1.0,2008-06-20,06,JJA,DE-Hai +3049,3094,20080621,27.345,1.0,49.3898,1.0,2008-06-21,06,JJA,DE-Hai +3050,3095,20080622,27.293,1.0,113.073,0.958333,2008-06-22,06,JJA,DE-Hai +3051,3096,20080623,28.019,1.0,120.725,1.0,2008-06-23,06,JJA,DE-Hai +3052,3097,20080624,26.688,1.0,82.5685,0.979167,2008-06-24,06,JJA,DE-Hai +3053,3098,20080625,28.065,1.0,20.4533,1.0,2008-06-25,06,JJA,DE-Hai +3054,3099,20080626,27.898,1.0,94.465,1.0,2008-06-26,06,JJA,DE-Hai +3055,3100,20080627,26.754,1.0,81.8755,1.0,2008-06-27,06,JJA,DE-Hai +3056,3101,20080628,26.352,1.0,53.0629,1.0,2008-06-28,06,JJA,DE-Hai +3057,3102,20080629,25.97,1.0,113.284,1.0,2008-06-29,06,JJA,DE-Hai +3058,3103,20080630,25.485,1.0,93.8376,1.0,2008-06-30,06,JJA,DE-Hai +3059,3104,20080701,25.085,1.0,103.014,1.0,2008-07-01,07,JJA,DE-Hai +3060,3105,20080702,24.727,1.0,110.029,1.0,2008-07-02,07,JJA,DE-Hai +3061,3106,20080703,24.376,1.0,75.3163,0.854167,2008-07-03,07,JJA,DE-Hai +3062,3107,20080704,24.037,1.0,87.5776,1.0,2008-07-04,07,JJA,DE-Hai +3063,3108,20080705,23.722,1.0,91.9446,1.0,2008-07-05,07,JJA,DE-Hai +3064,3109,20080706,23.497,1.0,66.2249,1.0,2008-07-06,07,JJA,DE-Hai +3065,3110,20080707,23.479,1.0,90.0556,0.9375,2008-07-07,07,JJA,DE-Hai +3066,3111,20080708,23.296,1.0,63.8471,1.0,2008-07-08,07,JJA,DE-Hai +3067,3112,20080709,23.358,1.0,74.2941,0.979167,2008-07-09,07,JJA,DE-Hai +3068,3113,20080710,23.362,1.0,74.1959,1.0,2008-07-10,07,JJA,DE-Hai +3069,3114,20080711,23.4,1.0,69.4215,1.0,2008-07-11,07,JJA,DE-Hai +3070,3115,20080712,23.276,1.0,66.1383,1.0,2008-07-12,07,JJA,DE-Hai +3071,3116,20080713,23.153,1.0,28.9244,1.0,2008-07-13,07,JJA,DE-Hai +3072,3117,20080714,23.046,1.0,53.0254,1.0,2008-07-14,07,JJA,DE-Hai +3073,3118,20080715,22.894,1.0,93.5013,0.979167,2008-07-15,07,JJA,DE-Hai +3074,3119,20080716,23.426,1.0,43.8246,1.0,2008-07-16,07,JJA,DE-Hai +3075,3120,20080717,23.477,1.0,69.0081,1.0,2008-07-17,07,JJA,DE-Hai +3076,3121,20080718,23.019,1.0,40.6502,1.0,2008-07-18,07,JJA,DE-Hai +3077,3122,20080719,22.855,1.0,71.9637,1.0,2008-07-19,07,JJA,DE-Hai +3078,3123,20080720,22.711,1.0,50.0853,1.0,2008-07-20,07,JJA,DE-Hai +3079,3124,20080721,22.561,1.0,51.8132,1.0,2008-07-21,07,JJA,DE-Hai +3080,3125,20080722,22.603,1.0,63.1969,1.0,2008-07-22,07,JJA,DE-Hai +3081,3126,20080723,22.548,1.0,80.8296,1.0,2008-07-23,07,JJA,DE-Hai +3082,3127,20080724,22.374,1.0,99.1862,0.958333,2008-07-24,07,JJA,DE-Hai +3083,3128,20080725,22.248,1.0,85.9452,1.0,2008-07-25,07,JJA,DE-Hai +3084,3129,20080726,22.128,1.0,97.4738,1.0,2008-07-26,07,JJA,DE-Hai +3085,3130,20080727,21.871,1.0,88.7143,1.0,2008-07-27,07,JJA,DE-Hai +3086,3131,20080728,21.559,1.0,93.288,1.0,2008-07-28,07,JJA,DE-Hai +3087,3132,20080729,21.289,1.0,62.0985,1.0,2008-07-29,07,JJA,DE-Hai +3088,3133,20080730,21.197,1.0,91.3572,1.0,2008-07-30,07,JJA,DE-Hai +3089,3134,20080731,21.064,1.0,65.5491,1.0,2008-07-31,07,JJA,DE-Hai +3090,3135,20080801,20.885,1.0,67.7935,1.0,2008-08-01,08,JJA,DE-Hai +3091,3136,20080802,20.669,1.0,55.4923,1.0,2008-08-02,08,JJA,DE-Hai +3092,3137,20080803,20.498,1.0,79.0323,1.0,2008-08-03,08,JJA,DE-Hai +3093,3138,20080804,20.421,1.0,67.7148,1.0,2008-08-04,08,JJA,DE-Hai +3094,3139,20080805,20.239,1.0,66.1029,1.0,2008-08-05,08,JJA,DE-Hai +3095,3140,20080806,20.143,1.0,62.0914,1.0,2008-08-06,08,JJA,DE-Hai +3096,3141,20080807,20.072,1.0,69.0397,0.916667,2008-08-07,08,JJA,DE-Hai +3097,3142,20080808,20.29,1.0,43.8123,1.0,2008-08-08,08,JJA,DE-Hai +3098,3143,20080809,21.09,1.0,64.5934,1.0,2008-08-09,08,JJA,DE-Hai +3099,3144,20080810,20.589,1.0,52.7622,1.0,2008-08-10,08,JJA,DE-Hai +3100,3145,20080811,20.514,1.0,79.507,1.0,2008-08-11,08,JJA,DE-Hai +3101,3146,20080812,20.553,1.0,20.5904,1.0,2008-08-12,08,JJA,DE-Hai +3102,3147,20080813,20.444,1.0,86.2463,1.0,2008-08-13,08,JJA,DE-Hai +3103,3148,20080814,20.247,1.0,79.9967,1.0,2008-08-14,08,JJA,DE-Hai +3104,3149,20080815,20.125,1.0,28.8749,1.0,2008-08-15,08,JJA,DE-Hai +3105,3150,20080816,20.08,1.0,64.9731,1.0,2008-08-16,08,JJA,DE-Hai +3106,3151,20080817,19.922,1.0,67.0276,1.0,2008-08-17,08,JJA,DE-Hai +3107,3152,20080818,19.838,1.0,56.138,1.0,2008-08-18,08,JJA,DE-Hai +3108,3153,20080819,19.833,1.0,19.4121,1.0,2008-08-19,08,JJA,DE-Hai +3109,3154,20080820,19.87,1.0,43.0479,1.0,2008-08-20,08,JJA,DE-Hai +3110,3155,20080821,19.823,1.0,65.261,1.0,2008-08-21,08,JJA,DE-Hai +3111,3156,20080822,19.629,1.0,42.9772,1.0,2008-08-22,08,JJA,DE-Hai +3112,3157,20080823,20.351,1.0,59.6434,0.979167,2008-08-23,08,JJA,DE-Hai +3113,3158,20080824,21.287,1.0,49.9546,1.0,2008-08-24,08,JJA,DE-Hai +3114,3159,20080825,20.477,1.0,28.8675,1.0,2008-08-25,08,JJA,DE-Hai +3115,3160,20080826,20.391,1.0,32.5032,1.0,2008-08-26,08,JJA,DE-Hai +3116,3161,20080827,20.24,1.0,79.8818,1.0,2008-08-27,08,JJA,DE-Hai +3117,3162,20080828,20.027,1.0,26.8533,1.0,2008-08-28,08,JJA,DE-Hai +3118,3163,20080829,19.956,1.0,44.3772,1.0,2008-08-29,08,JJA,DE-Hai +3119,3164,20080830,19.829,1.0,57.2924,1.0,2008-08-30,08,JJA,DE-Hai +3120,3165,20080831,19.631,1.0,53.0977,0.979167,2008-08-31,08,JJA,DE-Hai +3380,3439,20090601,37.885,1.0,67.2141,1.0,2009-06-01,06,JJA,DE-Hai +3381,3440,20090602,36.661,1.0,110.696,0.916667,2009-06-02,06,JJA,DE-Hai +3382,3441,20090603,35.431,1.0,63.3421,1.0,2009-06-03,06,JJA,DE-Hai +3383,3442,20090604,34.686,1.0,43.9626,1.0,2009-06-04,06,JJA,DE-Hai +3384,3443,20090605,34.092,1.0,40.4301,1.0,2009-06-05,06,JJA,DE-Hai +3385,3444,20090606,35.312,1.0,10.0915,1.0,2009-06-06,06,JJA,DE-Hai +3386,3445,20090607,40.316,1.0,46.6243,1.0,2009-06-07,06,JJA,DE-Hai +3387,3446,20090608,40.452,1.0,96.49,1.0,2009-06-08,06,JJA,DE-Hai +3388,3447,20090609,39.084,1.0,57.5183,1.0,2009-06-09,06,JJA,DE-Hai +3389,3448,20090610,38.815,1.0,59.4649,1.0,2009-06-10,06,JJA,DE-Hai +3390,3449,20090611,40.76,1.0,21.2505,1.0,2009-06-11,06,JJA,DE-Hai +3391,3450,20090612,40.927,1.0,78.4774,1.0,2009-06-12,06,JJA,DE-Hai +3392,3451,20090613,39.502,1.0,92.4789,1.0,2009-06-13,06,JJA,DE-Hai +3393,3452,20090614,38.201,1.0,77.5751,1.0,2009-06-14,06,JJA,DE-Hai +3394,3453,20090615,41.86,1.0,53.4641,1.0,2009-06-15,06,JJA,DE-Hai +3395,3454,20090616,43.481,1.0,35.4359,1.0,2009-06-16,06,JJA,DE-Hai +3396,3455,20090617,42.044,1.0,81.9278,1.0,2009-06-17,06,JJA,DE-Hai +3397,3456,20090618,40.746,1.0,76.5021,1.0,2009-06-18,06,JJA,DE-Hai +3398,3457,20090619,39.908,1.0,79.1655,1.0,2009-06-19,06,JJA,DE-Hai +3399,3458,20090620,39.027,1.0,60.2472,1.0,2009-06-20,06,JJA,DE-Hai +3400,3459,20090621,41.765,1.0,59.2536,0.979167,2009-06-21,06,JJA,DE-Hai +3401,3460,20090622,42.637,1.0,42.2205,1.0,2009-06-22,06,JJA,DE-Hai +3402,3461,20090623,41.767,1.0,91.2657,1.0,2009-06-23,06,JJA,DE-Hai +3403,3462,20090624,40.222,1.0,106.416,1.0,2009-06-24,06,JJA,DE-Hai +3404,3463,20090625,39.585,1.0,26.6286,1.0,2009-06-25,06,JJA,DE-Hai +3405,3464,20090626,40.26,1.0,49.68,1.0,2009-06-26,06,JJA,DE-Hai +3406,3465,20090627,41.89,1.0,13.2447,1.0,2009-06-27,06,JJA,DE-Hai +3407,3466,20090628,43.245,1.0,34.8592,1.0,2009-06-28,06,JJA,DE-Hai +3408,3467,20090629,41.722,1.0,102.923,1.0,2009-06-29,06,JJA,DE-Hai +3409,3468,20090630,39.947,1.0,99.0346,1.0,2009-06-30,06,JJA,DE-Hai +3410,3469,20090701,38.458,1.0,79.5326,1.0,2009-07-01,07,JJA,DE-Hai +3411,3470,20090702,36.901,1.0,105.993,1.0,2009-07-02,07,JJA,DE-Hai +3412,3471,20090703,35.309,1.0,105.992,1.0,2009-07-03,07,JJA,DE-Hai +3413,3472,20090704,33.647,1.0,97.8565,1.0,2009-07-04,07,JJA,DE-Hai +3414,3473,20090705,31.902,1.0,115.008,1.0,2009-07-05,07,JJA,DE-Hai +3415,3474,20090706,30.939,1.0,67.4082,0.979167,2009-07-06,07,JJA,DE-Hai +3416,3475,20090707,30.92,1.0,85.1224,1.0,2009-07-07,07,JJA,DE-Hai +3417,3476,20090708,33.743,1.0,40.7426,1.0,2009-07-08,07,JJA,DE-Hai +3418,3477,20090709,40.57,1.0,73.0607,1.0,2009-07-09,07,JJA,DE-Hai +3419,3478,20090710,41.341,1.0,27.8056,1.0,2009-07-10,07,JJA,DE-Hai +3420,3479,20090711,42.556,1.0,45.9572,1.0,2009-07-11,07,JJA,DE-Hai +3421,3480,20090712,42.868,1.0,66.7427,1.0,2009-07-12,07,JJA,DE-Hai +3422,3481,20090713,40.98,1.0,110.321,0.979167,2009-07-13,07,JJA,DE-Hai +3423,3482,20090714,39.686,1.0,84.2019,1.0,2009-07-14,07,JJA,DE-Hai +3424,3483,20090715,38.63,1.0,83.0746,1.0,2009-07-15,07,JJA,DE-Hai +3425,3484,20090716,36.857,1.0,120.806,0.958333,2009-07-16,07,JJA,DE-Hai +3426,3485,20090717,35.121,1.0,80.3149,1.0,2009-07-17,07,JJA,DE-Hai +3427,3486,20090718,39.87,1.0,55.2088,1.0,2009-07-18,07,JJA,DE-Hai +3428,3487,20090719,39.918,1.0,55.8093,1.0,2009-07-19,07,JJA,DE-Hai +3429,3488,20090720,42.144,1.0,75.4274,0.979167,2009-07-20,07,JJA,DE-Hai +3430,3489,20090721,40.648,1.0,111.082,0.979167,2009-07-21,07,JJA,DE-Hai +3431,3490,20090722,39.63,1.0,103.911,1.0,2009-07-22,07,JJA,DE-Hai +3432,3491,20090723,39.456,1.0,88.204,1.0,2009-07-23,07,JJA,DE-Hai +3433,3492,20090724,44.892,1.0,71.7744,1.0,2009-07-24,07,JJA,DE-Hai +3434,3493,20090725,44.956,1.0,75.0387,1.0,2009-07-25,07,JJA,DE-Hai +3435,3494,20090726,43.426,1.0,99.5681,1.0,2009-07-26,07,JJA,DE-Hai +3436,3495,20090727,41.357,1.0,146.244,1.0,2009-07-27,07,JJA,DE-Hai +3437,3496,20090728,39.637,1.0,113.376,1.0,2009-07-28,07,JJA,DE-Hai +3438,3497,20090729,37.617,1.0,121.748,1.0,2009-07-29,07,JJA,DE-Hai +3439,3498,20090730,35.251,1.0,114.509,1.0,2009-07-30,07,JJA,DE-Hai +3440,3499,20090731,33.512,1.0,90.3193,1.0,2009-07-31,07,JJA,DE-Hai +3441,3500,20090801,32.231,1.0,86.9117,1.0,2009-08-01,08,JJA,DE-Hai +3442,3501,20090802,31.056,1.0,75.5397,1.0,2009-08-02,08,JJA,DE-Hai +3443,3502,20090803,30.197,1.0,70.8806,1.0,2009-08-03,08,JJA,DE-Hai +3444,3503,20090804,29.308,1.0,98.2247,1.0,2009-08-04,08,JJA,DE-Hai +3445,3504,20090805,28.315,1.0,104.5,1.0,2009-08-05,08,JJA,DE-Hai +3446,3505,20090806,27.466,1.0,111.86,1.0,2009-08-06,08,JJA,DE-Hai +3447,3506,20090807,26.732,1.0,100.468,1.0,2009-08-07,08,JJA,DE-Hai +3448,3507,20090808,28.116,1.0,55.6849,0.979167,2009-08-08,08,JJA,DE-Hai +3449,3508,20090809,30.246,1.0,43.8227,1.0,2009-08-09,08,JJA,DE-Hai +3450,3509,20090810,28.454,1.0,61.5372,1.0,2009-08-10,08,JJA,DE-Hai +3451,3510,20090811,27.631,1.0,53.0043,1.0,2009-08-11,08,JJA,DE-Hai +3452,3511,20090812,27.225,1.0,49.1311,1.0,2009-08-12,08,JJA,DE-Hai +3453,3512,20090813,28.001,1.0,69.7129,1.0,2009-08-13,08,JJA,DE-Hai +3454,3513,20090814,26.906,1.0,76.2004,1.0,2009-08-14,08,JJA,DE-Hai +3455,3514,20090815,26.066,1.0,114.576,0.979167,2009-08-15,08,JJA,DE-Hai +3456,3515,20090816,26.887,1.0,107.638,1.0,2009-08-16,08,JJA,DE-Hai +3457,3516,20090817,28.665,1.0,91.8649,1.0,2009-08-17,08,JJA,DE-Hai +3458,3517,20090818,26.889,1.0,91.6816,1.0,2009-08-18,08,JJA,DE-Hai +3459,3518,20090819,25.861,1.0,101.182,0.958333,2009-08-19,08,JJA,DE-Hai +3460,3519,20090820,25.141,1.0,109.936,1.0,2009-08-20,08,JJA,DE-Hai +3461,3520,20090821,27.496,1.0,33.363,1.0,2009-08-21,08,JJA,DE-Hai +3462,3521,20090822,26.804,1.0,68.0486,1.0,2009-08-22,08,JJA,DE-Hai +3463,3522,20090823,25.364,1.0,103.441,1.0,2009-08-23,08,JJA,DE-Hai +3464,3523,20090824,24.56,1.0,90.4371,1.0,2009-08-24,08,JJA,DE-Hai +3465,3524,20090825,24.232,1.0,33.3328,1.0,2009-08-25,08,JJA,DE-Hai +3466,3525,20090826,24.09,1.0,65.9104,0.979167,2009-08-26,08,JJA,DE-Hai +3467,3526,20090827,23.798,1.0,72.3098,0.979167,2009-08-27,08,JJA,DE-Hai +3468,3527,20090828,23.476,1.0,68.3353,1.0,2009-08-28,08,JJA,DE-Hai +3469,3528,20090829,23.049,1.0,64.493,1.0,2009-08-29,08,JJA,DE-Hai +3470,3529,20090830,22.753,1.0,94.3416,1.0,2009-08-30,08,JJA,DE-Hai +3471,3530,20090831,22.513,1.0,91.8737,1.0,2009-08-31,08,JJA,DE-Hai +127,152,20040601,20.031,1.0,119.815,1.0,2004-06-01,06,JJA,US-Oho +128,153,20040602,20.33,1.0,79.5104,1.0,2004-06-02,06,JJA,US-Oho +129,154,20040603,19.837,1.0,113.584,0.979167,2004-06-03,06,JJA,US-Oho +130,155,20040604,19.438,1.0,107.037,1.0,2004-06-04,06,JJA,US-Oho +131,156,20040605,19.143,1.0,114.541,0.979167,2004-06-05,06,JJA,US-Oho +132,157,20040606,18.904,1.0,87.0519,1.0,2004-06-06,06,JJA,US-Oho +133,158,20040607,18.647,1.0,135.139,1.0,2004-06-07,06,JJA,US-Oho +134,159,20040608,18.344,1.0,142.113,1.0,2004-06-08,06,JJA,US-Oho +135,160,20040609,18.051,1.0,115.877,1.0,2004-06-09,06,JJA,US-Oho +136,161,20040610,18.426,1.0,18.4828,1.0,2004-06-10,06,JJA,US-Oho +137,162,20040611,20.198,1.0,49.2144,0.9375,2004-06-11,06,JJA,US-Oho +138,163,20040612,20.511,1.0,66.0694,0.979167,2004-06-12,06,JJA,US-Oho +139,164,20040613,19.915,1.0,74.5735,0.958333,2004-06-13,06,JJA,US-Oho +140,165,20040614,19.749,1.0,115.523,1.0,2004-06-14,06,JJA,US-Oho +141,166,20040615,19.511,1.0,123.243,0.895833,2004-06-15,06,JJA,US-Oho +142,167,20040616,19.818,1.0,52.1663,1.0,2004-06-16,06,JJA,US-Oho +143,168,20040617,20.382,1.0,114.602,1.0,2004-06-17,06,JJA,US-Oho +144,169,20040618,20.07,1.0,115.887,1.0,2004-06-18,06,JJA,US-Oho +145,170,20040619,19.473,1.0,178.683,0.958333,2004-06-19,06,JJA,US-Oho +146,171,20040620,19.088,1.0,143.132,0.9375,2004-06-20,06,JJA,US-Oho +147,172,20040621,18.798,1.0,124.042,1.0,2004-06-21,06,JJA,US-Oho +148,173,20040622,18.486,1.0,147.562,1.0,2004-06-22,06,JJA,US-Oho +149,174,20040623,18.242,1.0,156.872,1.0,2004-06-23,06,JJA,US-Oho +150,175,20040624,17.984,1.0,146.664,1.0,2004-06-24,06,JJA,US-Oho +151,176,20040625,18.025,1.0,95.8551,0.895833,2004-06-25,06,JJA,US-Oho +152,177,20040626,17.995,1.0,157.297,1.0,2004-06-26,06,JJA,US-Oho +153,178,20040627,17.768,1.0,142.152,1.0,2004-06-27,06,JJA,US-Oho +154,179,20040628,17.636,1.0,81.386,0.979167,2004-06-28,06,JJA,US-Oho +155,180,20040629,17.522,1.0,143.33,1.0,2004-06-29,06,JJA,US-Oho +156,181,20040630,17.363,1.0,133.427,1.0,2004-06-30,06,JJA,US-Oho +157,182,20040701,17.243,1.0,124.1,0.875,2004-07-01,07,JJA,US-Oho +158,183,20040702,17.167,1.0,130.958,1.0,2004-07-02,07,JJA,US-Oho +159,184,20040703,17.116,1.0,111.373,1.0,2004-07-03,07,JJA,US-Oho +160,185,20040704,17.088,1.0,113.196,1.0,2004-07-04,07,JJA,US-Oho +161,186,20040705,17.07,1.0,144.789,1.0,2004-07-05,07,JJA,US-Oho +162,187,20040706,17.024,1.0,123.527,1.0,2004-07-06,07,JJA,US-Oho +163,188,20040707,17.034,1.0,139.37,1.0,2004-07-07,07,JJA,US-Oho +164,189,20040708,17.076,1.0,127.767,1.0,2004-07-08,07,JJA,US-Oho +165,190,20040709,17.061,1.0,129.431,0.979167,2004-07-09,07,JJA,US-Oho +166,191,20040710,17.024,1.0,91.8386,1.0,2004-07-10,07,JJA,US-Oho +167,192,20040711,16.981,1.0,108.073,1.0,2004-07-11,07,JJA,US-Oho +168,193,20040712,16.958,1.0,124.064,1.0,2004-07-12,07,JJA,US-Oho +169,194,20040713,16.954,1.0,118.043,0.958333,2004-07-13,07,JJA,US-Oho +170,195,20040714,16.933,1.0,135.726,1.0,2004-07-14,07,JJA,US-Oho +171,196,20040715,16.907,1.0,155.968,1.0,2004-07-15,07,JJA,US-Oho +172,197,20040716,16.907,1.0,108.355,1.0,2004-07-16,07,JJA,US-Oho +173,198,20040717,17.078,1.0,107.181,1.0,2004-07-17,07,JJA,US-Oho +174,199,20040718,17.465,1.0,103.75,0.979167,2004-07-18,07,JJA,US-Oho +175,200,20040719,17.738,1.0,131.63,0.979167,2004-07-19,07,JJA,US-Oho +176,201,20040720,17.581,1.0,120.906,1.0,2004-07-20,07,JJA,US-Oho +177,202,20040721,17.334,1.0,123.94,1.0,2004-07-21,07,JJA,US-Oho +178,203,20040722,18.022,1.0,114.858,0.958333,2004-07-22,07,JJA,US-Oho +179,204,20040723,17.99,1.0,162.161,1.0,2004-07-23,07,JJA,US-Oho +180,205,20040724,17.692,1.0,123.555,1.0,2004-07-24,07,JJA,US-Oho +181,206,20040725,17.473,1.0,74.0044,1.0,2004-07-25,07,JJA,US-Oho +182,207,20040726,17.381,1.0,73.5001,1.0,2004-07-26,07,JJA,US-Oho +183,208,20040727,18.013,1.0,79.4077,1.0,2004-07-27,07,JJA,US-Oho +184,209,20040728,18.114,1.0,128.228,0.875,2004-07-28,07,JJA,US-Oho +185,210,20040729,17.874,1.0,82.9916,1.0,2004-07-29,07,JJA,US-Oho +186,211,20040730,17.842,1.0,40.8441,1.0,2004-07-30,07,JJA,US-Oho +187,212,20040731,19.479,1.0,115.197,1.0,2004-07-31,07,JJA,US-Oho +188,213,20040801,18.911,1.0,122.545,0.958333,2004-08-01,08,JJA,US-Oho +189,214,20040802,18.48,1.0,124.458,1.0,2004-08-02,08,JJA,US-Oho +190,215,20040803,18.131,1.0,122.378,0.979167,2004-08-03,08,JJA,US-Oho +191,216,20040804,18.318,1.0,21.3257,1.0,2004-08-04,08,JJA,US-Oho +192,217,20040805,18.53,1.0,142.457,1.0,2004-08-05,08,JJA,US-Oho +193,218,20040806,18.23,1.0,145.537,0.958333,2004-08-06,08,JJA,US-Oho +194,219,20040807,17.93,1.0,125.212,1.0,2004-08-07,08,JJA,US-Oho +195,220,20040808,17.648,1.0,96.464,0.979167,2004-08-08,08,JJA,US-Oho +196,221,20040809,17.459,1.0,106.356,1.0,2004-08-09,08,JJA,US-Oho +197,222,20040810,17.315,1.0,111.267,1.0,2004-08-10,08,JJA,US-Oho +198,223,20040811,17.212,1.0,88.9694,1.0,2004-08-11,08,JJA,US-Oho +199,224,20040812,17.159,1.0,69.2534,0.979167,2004-08-12,08,JJA,US-Oho +200,225,20040813,17.116,1.0,47.6998,1.0,2004-08-13,08,JJA,US-Oho +201,226,20040814,17.083,1.0,71.3099,0.979167,2004-08-14,08,JJA,US-Oho +202,227,20040815,17.08,1.0,34.3882,1.0,2004-08-15,08,JJA,US-Oho +203,228,20040816,17.111,1.0,107.783,0.9375,2004-08-16,08,JJA,US-Oho +204,229,20040817,17.07,1.0,111.72,1.0,2004-08-17,08,JJA,US-Oho +205,230,20040818,17.024,1.0,76.0732,1.0,2004-08-18,08,JJA,US-Oho +206,231,20040819,17.546,1.0,25.9729,1.0,2004-08-19,08,JJA,US-Oho +207,232,20040820,18.795,1.0,9.82685,1.0,2004-08-20,08,JJA,US-Oho +208,233,20040821,19.215,1.0,119.582,0.875,2004-08-21,08,JJA,US-Oho +209,234,20040822,18.791,1.0,110.261,1.0,2004-08-22,08,JJA,US-Oho +210,235,20040823,18.424,1.0,107.063,1.0,2004-08-23,08,JJA,US-Oho +211,236,20040824,18.098,1.0,69.2561,1.0,2004-08-24,08,JJA,US-Oho +212,237,20040825,17.83,1.0,89.0951,1.0,2004-08-25,08,JJA,US-Oho +213,238,20040826,17.729,1.0,111.498,1.0,2004-08-26,08,JJA,US-Oho +214,239,20040827,18.879,1.0,48.1118,1.0,2004-08-27,08,JJA,US-Oho +215,240,20040828,19.875,1.0,47.5994,1.0,2004-08-28,08,JJA,US-Oho +216,241,20040829,19.7,1.0,37.0211,1.0,2004-08-29,08,JJA,US-Oho +217,242,20040830,19.349,1.0,93.2845,0.875,2004-08-30,08,JJA,US-Oho +218,243,20040831,18.857,0.895833,88.1831,0.875,2004-08-31,08,JJA,US-Oho +447,517,20050601,18.315,1.0,59.6779,1.0,2005-06-01,06,JJA,US-Oho +448,518,20050602,18.12,1.0,58.3951,1.0,2005-06-02,06,JJA,US-Oho +449,519,20050603,17.97,1.0,54.9867,0.979167,2005-06-03,06,JJA,US-Oho +450,520,20050604,17.81,1.0,79.4964,1.0,2005-06-04,06,JJA,US-Oho +451,521,20050605,17.656,1.0,88.9438,1.0,2005-06-05,06,JJA,US-Oho +452,522,20050606,17.518,1.0,106.171,1.0,2005-06-06,06,JJA,US-Oho +453,523,20050607,17.552,0.979167,86.2183,1.0,2005-06-07,06,JJA,US-Oho +454,524,20050608,17.648,0.979167,104.632,0.895833,2005-06-08,06,JJA,US-Oho +455,525,20050609,17.62,0.979167,99.6909,0.958333,2005-06-09,06,JJA,US-Oho +456,526,20050610,17.561,0.916667,98.5889,0.854167,2005-06-10,06,JJA,US-Oho +457,533,20050617,16.905,0.9375,92.5167,1.0,2005-06-17,06,JJA,US-Oho +458,534,20050618,16.961,0.875,51.7562,1.0,2005-06-18,06,JJA,US-Oho +459,535,20050619,16.986,0.875,94.2249,0.979167,2005-06-19,06,JJA,US-Oho +460,536,20050620,17.005,0.8125,107.439,0.9375,2005-06-20,06,JJA,US-Oho +461,537,20050621,16.929,0.979167,106.254,1.0,2005-06-21,06,JJA,US-Oho +462,538,20050622,16.884,1.0,127.51,1.0,2005-06-22,06,JJA,US-Oho +463,539,20050623,16.86,1.0,111.924,0.958333,2005-06-23,06,JJA,US-Oho +464,540,20050624,16.841,1.0,125.299,1.0,2005-06-24,06,JJA,US-Oho +465,541,20050625,16.814,1.0,127.622,0.979167,2005-06-25,06,JJA,US-Oho +466,542,20050626,16.814,1.0,112.599,0.958333,2005-06-26,06,JJA,US-Oho +467,543,20050627,16.794,1.0,98.7062,0.958333,2005-06-27,06,JJA,US-Oho +468,544,20050628,17.075,1.0,95.9018,0.958333,2005-06-28,06,JJA,US-Oho +469,545,20050629,17.542,1.0,97.0917,1.0,2005-06-29,06,JJA,US-Oho +470,546,20050630,18.342,1.0,67.6344,1.0,2005-06-30,06,JJA,US-Oho +471,547,20050701,18.621,1.0,163.551,1.0,2005-07-01,07,JJA,US-Oho +472,548,20050702,18.222,1.0,101.335,0.9375,2005-07-02,07,JJA,US-Oho +473,549,20050703,17.931,1.0,135.773,1.0,2005-07-03,07,JJA,US-Oho +474,550,20050704,17.625,1.0,138.726,1.0,2005-07-04,07,JJA,US-Oho +475,551,20050705,17.409,1.0,102.44,1.0,2005-07-05,07,JJA,US-Oho +476,552,20050706,17.282,1.0,82.1799,1.0,2005-07-06,07,JJA,US-Oho +477,553,20050707,17.183,1.0,127.613,1.0,2005-07-07,07,JJA,US-Oho +478,554,20050708,17.091,1.0,116.363,0.9375,2005-07-08,07,JJA,US-Oho +479,555,20050709,17.013,1.0,117.716,0.958333,2005-07-09,07,JJA,US-Oho +480,556,20050710,16.949,1.0,136.564,0.9375,2005-07-10,07,JJA,US-Oho +481,557,20050711,16.893,1.0,118.944,1.0,2005-07-11,07,JJA,US-Oho +482,558,20050712,16.893,1.0,92.2607,0.9375,2005-07-12,07,JJA,US-Oho +483,559,20050713,16.93,1.0,119.848,1.0,2005-07-13,07,JJA,US-Oho +484,560,20050714,17.059,1.0,40.1878,1.0,2005-07-14,07,JJA,US-Oho +485,561,20050715,17.46,1.0,67.8099,1.0,2005-07-15,07,JJA,US-Oho +486,562,20050716,18.122,1.0,75.0575,1.0,2005-07-16,07,JJA,US-Oho +487,563,20050717,18.282,1.0,104.65,1.0,2005-07-17,07,JJA,US-Oho +488,564,20050718,18.01,1.0,100.318,1.0,2005-07-18,07,JJA,US-Oho +489,565,20050719,17.682,1.0,154.46,1.0,2005-07-19,07,JJA,US-Oho +490,566,20050720,17.335,1.0,126.938,1.0,2005-07-20,07,JJA,US-Oho +491,567,20050721,19.208,1.0,145.569,0.958333,2005-07-21,07,JJA,US-Oho +492,568,20050722,18.78,1.0,156.17,1.0,2005-07-22,07,JJA,US-Oho +493,569,20050723,18.431,1.0,124.042,1.0,2005-07-23,07,JJA,US-Oho +494,570,20050724,18.397,1.0,104.598,1.0,2005-07-24,07,JJA,US-Oho +495,571,20050725,18.312,1.0,107.834,1.0,2005-07-25,07,JJA,US-Oho +496,572,20050726,18.341,1.0,107.291,1.0,2005-07-26,07,JJA,US-Oho +497,573,20050727,19.92,1.0,105.67,0.895833,2005-07-27,07,JJA,US-Oho +498,577,20050731,18.104,1.0,118.511,0.9375,2005-07-31,07,JJA,US-Oho +499,578,20050801,17.852,1.0,135.485,1.0,2005-08-01,08,JJA,US-Oho +500,579,20050802,17.626,1.0,136.191,1.0,2005-08-02,08,JJA,US-Oho +501,580,20050803,17.43,1.0,125.331,1.0,2005-08-03,08,JJA,US-Oho +502,581,20050804,17.319,1.0,100.63,1.0,2005-08-04,08,JJA,US-Oho +503,582,20050805,17.235,1.0,117.469,1.0,2005-08-05,08,JJA,US-Oho +504,583,20050806,17.149,1.0,106.522,1.0,2005-08-06,08,JJA,US-Oho +505,584,20050807,17.083,1.0,110.506,1.0,2005-08-07,08,JJA,US-Oho +506,585,20050808,17.025,1.0,106.178,1.0,2005-08-08,08,JJA,US-Oho +507,586,20050809,16.982,1.0,117.335,1.0,2005-08-09,08,JJA,US-Oho +508,587,20050810,16.954,1.0,104.181,1.0,2005-08-10,08,JJA,US-Oho +509,588,20050811,16.934,1.0,68.2788,1.0,2005-08-11,08,JJA,US-Oho +510,589,20050812,16.919,1.0,120.649,1.0,2005-08-12,08,JJA,US-Oho +511,590,20050813,17.453,1.0,71.8107,1.0,2005-08-13,08,JJA,US-Oho +512,591,20050814,18.927,1.0,43.4717,1.0,2005-08-14,08,JJA,US-Oho +513,592,20050815,18.512,1.0,78.893,1.0,2005-08-15,08,JJA,US-Oho +514,593,20050816,18.199,1.0,100.004,1.0,2005-08-16,08,JJA,US-Oho +515,594,20050817,17.898,1.0,106.539,1.0,2005-08-17,08,JJA,US-Oho +516,595,20050818,17.616,1.0,81.0267,0.979167,2005-08-18,08,JJA,US-Oho +517,596,20050819,17.396,1.0,120.301,1.0,2005-08-19,08,JJA,US-Oho +518,597,20050820,17.835,1.0,80.2863,0.979167,2005-08-20,08,JJA,US-Oho +519,598,20050821,18.043,1.0,138.774,1.0,2005-08-21,08,JJA,US-Oho +520,599,20050822,17.735,1.0,101.902,0.979167,2005-08-22,08,JJA,US-Oho +521,600,20050823,17.513,1.0,87.4506,1.0,2005-08-23,08,JJA,US-Oho +522,601,20050824,17.338,1.0,96.8681,0.979167,2005-08-24,08,JJA,US-Oho +523,602,20050825,17.195,1.0,92.8903,1.0,2005-08-25,08,JJA,US-Oho +524,603,20050826,17.098,1.0,93.4937,1.0,2005-08-26,08,JJA,US-Oho +525,604,20050827,17.028,1.0,90.4079,1.0,2005-08-27,08,JJA,US-Oho +526,605,20050828,16.96,1.0,118.455,1.0,2005-08-28,08,JJA,US-Oho +527,606,20050829,16.907,1.0,73.7639,1.0,2005-08-29,08,JJA,US-Oho +528,607,20050830,17.067,1.0,15.9457,1.0,2005-08-30,08,JJA,US-Oho +529,608,20050831,17.562,1.0,114.511,1.0,2005-08-31,08,JJA,US-Oho +745,882,20060601,18.826,1.0,45.9891,1.0,2006-06-01,06,JJA,US-Oho +746,883,20060602,18.809,1.0,59.4261,1.0,2006-06-02,06,JJA,US-Oho +747,884,20060603,18.655,1.0,104.607,0.916667,2006-06-03,06,JJA,US-Oho +748,885,20060604,18.437,1.0,95.423,0.916667,2006-06-04,06,JJA,US-Oho +749,886,20060605,18.207,1.0,117.08,0.916667,2006-06-05,06,JJA,US-Oho +750,888,20060607,17.992,1.0,49.2261,1.0,2006-06-07,06,JJA,US-Oho +751,889,20060608,18.046,1.0,127.191,0.9375,2006-06-08,06,JJA,US-Oho +752,890,20060609,17.799,1.0,95.6168,1.0,2006-06-09,06,JJA,US-Oho +753,891,20060610,17.619,1.0,104.733,0.979167,2006-06-10,06,JJA,US-Oho +754,892,20060611,17.486,1.0,76.6458,0.9375,2006-06-11,06,JJA,US-Oho +755,893,20060612,17.374,1.0,101.71,0.9375,2006-06-12,06,JJA,US-Oho +756,894,20060613,17.294,1.0,95.1717,0.9375,2006-06-13,06,JJA,US-Oho +757,895,20060614,17.228,1.0,103.987,0.895833,2006-06-14,06,JJA,US-Oho +758,897,20060616,17.073,1.0,119.536,1.0,2006-06-16,06,JJA,US-Oho +759,898,20060617,17.025,1.0,132.957,1.0,2006-06-17,06,JJA,US-Oho +760,899,20060618,17.227,1.0,93.1887,1.0,2006-06-18,06,JJA,US-Oho +761,900,20060619,18.257,1.0,101.872,1.0,2006-06-19,06,JJA,US-Oho +762,901,20060620,17.97,1.0,125.734,0.895833,2006-06-20,06,JJA,US-Oho +763,902,20060621,19.544,1.0,37.2531,0.979167,2006-06-21,06,JJA,US-Oho +764,903,20060622,19.845,1.0,78.4939,0.979167,2006-06-22,06,JJA,US-Oho +765,904,20060623,19.297,1.0,70.1703,1.0,2006-06-23,06,JJA,US-Oho +766,905,20060624,18.918,1.0,158.3,0.854167,2006-06-24,06,JJA,US-Oho +767,906,20060625,18.572,1.0,151.026,0.875,2006-06-25,06,JJA,US-Oho +768,907,20060626,18.307,1.0,85.7912,0.958333,2006-06-26,06,JJA,US-Oho +769,908,20060627,18.096,1.0,116.658,1.0,2006-06-27,06,JJA,US-Oho +770,909,20060628,17.891,1.0,111.742,0.958333,2006-06-28,06,JJA,US-Oho +771,910,20060629,17.751,1.0,146.531,1.0,2006-06-29,06,JJA,US-Oho +772,911,20060630,17.556,1.0,136.086,0.9375,2006-06-30,06,JJA,US-Oho +773,912,20060701,17.395,1.0,152.724,1.0,2006-07-01,07,JJA,US-Oho +774,913,20060702,17.572,1.0,61.4703,1.0,2006-07-02,07,JJA,US-Oho +775,914,20060703,17.875,1.0,44.2635,1.0,2006-07-03,07,JJA,US-Oho +776,915,20060704,19.93,1.0,129.338,0.979167,2006-07-04,07,JJA,US-Oho +777,916,20060705,19.19,1.0,179.976,1.0,2006-07-05,07,JJA,US-Oho +778,917,20060706,18.8,1.0,148.341,0.958333,2006-07-06,07,JJA,US-Oho +779,918,20060707,18.497,1.0,131.15,0.979167,2006-07-07,07,JJA,US-Oho +780,919,20060708,18.203,1.0,126.944,1.0,2006-07-08,07,JJA,US-Oho +781,920,20060709,17.933,1.0,124.071,1.0,2006-07-09,07,JJA,US-Oho +782,921,20060710,17.698,1.0,126.026,1.0,2006-07-10,07,JJA,US-Oho +783,922,20060711,17.823,1.0,44.6703,1.0,2006-07-11,07,JJA,US-Oho +784,923,20060712,20.351,1.0,48.7268,1.0,2006-07-12,07,JJA,US-Oho +785,924,20060713,19.374,1.0,104.192,1.0,2006-07-13,07,JJA,US-Oho +786,925,20060714,19.721,1.0,55.2852,1.0,2006-07-14,07,JJA,US-Oho +787,926,20060715,19.625,1.0,152.003,0.958333,2006-07-15,07,JJA,US-Oho +788,927,20060716,18.998,1.0,137.016,1.0,2006-07-16,07,JJA,US-Oho +789,928,20060717,18.571,1.0,181.882,1.0,2006-07-17,07,JJA,US-Oho +790,929,20060718,18.749,1.0,86.9354,1.0,2006-07-18,07,JJA,US-Oho +791,930,20060719,18.595,1.0,146.164,1.0,2006-07-19,07,JJA,US-Oho +792,931,20060720,18.359,1.0,70.3241,1.0,2006-07-20,07,JJA,US-Oho +793,932,20060721,18.093,1.0,148.938,1.0,2006-07-21,07,JJA,US-Oho +794,933,20060722,17.816,1.0,166.791,1.0,2006-07-22,07,JJA,US-Oho +795,934,20060723,17.593,1.0,136.623,1.0,2006-07-23,07,JJA,US-Oho +796,935,20060724,17.42,1.0,156.236,1.0,2006-07-24,07,JJA,US-Oho +797,936,20060725,17.294,1.0,102.245,1.0,2006-07-25,07,JJA,US-Oho +798,937,20060726,17.244,1.0,94.0447,1.0,2006-07-26,07,JJA,US-Oho +799,938,20060727,17.904,1.0,52.7655,1.0,2006-07-27,07,JJA,US-Oho +800,939,20060728,19.735,1.0,106.712,0.979167,2006-07-28,07,JJA,US-Oho +801,940,20060729,19.007,1.0,142.119,1.0,2006-07-29,07,JJA,US-Oho +802,941,20060730,18.66,1.0,97.4624,1.0,2006-07-30,07,JJA,US-Oho +803,942,20060731,18.372,1.0,151.37,1.0,2006-07-31,07,JJA,US-Oho +804,943,20060801,18.032,1.0,164.25,1.0,2006-08-01,08,JJA,US-Oho +805,944,20060802,17.727,1.0,176.023,1.0,2006-08-02,08,JJA,US-Oho +806,945,20060803,18.175,1.0,82.5667,1.0,2006-08-03,08,JJA,US-Oho +807,946,20060804,18.42,1.0,130.534,0.875,2006-08-04,08,JJA,US-Oho +808,947,20060805,18.111,1.0,119.078,0.979167,2006-08-05,08,JJA,US-Oho +809,948,20060806,17.832,1.0,103.037,0.979167,2006-08-06,08,JJA,US-Oho +810,949,20060807,17.687,1.0,143.545,1.0,2006-08-07,08,JJA,US-Oho +811,950,20060808,17.553,1.0,101.615,1.0,2006-08-08,08,JJA,US-Oho +812,951,20060809,17.408,1.0,120.968,0.979167,2006-08-09,08,JJA,US-Oho +813,952,20060810,17.283,1.0,77.5305,1.0,2006-08-10,08,JJA,US-Oho +814,953,20060811,17.218,1.0,133.014,1.0,2006-08-11,08,JJA,US-Oho +815,954,20060812,17.139,1.0,139.49,1.0,2006-08-12,08,JJA,US-Oho +816,955,20060813,17.071,1.0,118.984,0.979167,2006-08-13,08,JJA,US-Oho +817,956,20060814,17.047,1.0,54.8065,1.0,2006-08-14,08,JJA,US-Oho +818,957,20060815,17.023,1.0,134.419,1.0,2006-08-15,08,JJA,US-Oho +819,958,20060816,16.981,1.0,118.796,1.0,2006-08-16,08,JJA,US-Oho +820,959,20060817,16.954,1.0,120.64,1.0,2006-08-17,08,JJA,US-Oho +821,960,20060818,16.954,1.0,75.7283,1.0,2006-08-18,08,JJA,US-Oho +822,961,20060819,18.192,1.0,54.8316,1.0,2006-08-19,08,JJA,US-Oho +823,962,20060820,18.252,1.0,110.491,0.9375,2006-08-20,08,JJA,US-Oho +824,963,20060821,17.916,1.0,104.554,0.916667,2006-08-21,08,JJA,US-Oho +825,964,20060822,17.606,1.0,113.437,0.895833,2006-08-22,08,JJA,US-Oho +826,965,20060823,17.37,1.0,110.348,0.854167,2006-08-23,08,JJA,US-Oho +827,966,20060824,17.285,1.0,68.1472,0.979167,2006-08-24,08,JJA,US-Oho +828,967,20060825,17.256,1.0,74.8214,1.0,2006-08-25,08,JJA,US-Oho +829,968,20060826,17.218,1.0,62.1903,1.0,2006-08-26,08,JJA,US-Oho +830,969,20060827,17.504,1.0,43.2549,0.979167,2006-08-27,08,JJA,US-Oho +831,970,20060828,18.472,1.0,27.609,1.0,2006-08-28,08,JJA,US-Oho +832,971,20060829,19.576,1.0,36.2389,1.0,2006-08-29,08,JJA,US-Oho +833,972,20060830,19.104,1.0,104.0,1.0,2006-08-30,08,JJA,US-Oho +834,973,20060831,18.803,1.0,114.743,1.0,2006-08-31,08,JJA,US-Oho +1301,1613,20080601,17.928,1.0,95.1299,0.916667,2008-06-01,06,JJA,US-Oho +1302,1614,20080602,17.768,1.0,80.3994,0.916667,2008-06-02,06,JJA,US-Oho +1303,1615,20080603,18.577,1.0,37.6739,1.0,2008-06-03,06,JJA,US-Oho +1304,1616,20080604,19.467,1.0,51.4817,1.0,2008-06-04,06,JJA,US-Oho +1305,1617,20080605,19.19,1.0,89.148,1.0,2008-06-05,06,JJA,US-Oho +1306,1618,20080606,18.847,1.0,129.863,1.0,2008-06-06,06,JJA,US-Oho +1307,1619,20080607,18.546,1.0,84.8325,1.0,2008-06-07,06,JJA,US-Oho +1308,1620,20080608,18.246,1.0,131.355,1.0,2008-06-08,06,JJA,US-Oho +1309,1621,20080609,17.992,1.0,123.562,1.0,2008-06-09,06,JJA,US-Oho +1310,1622,20080610,19.827,1.0,115.875,0.916667,2008-06-10,06,JJA,US-Oho +1311,1623,20080611,19.204,1.0,122.887,1.0,2008-06-11,06,JJA,US-Oho +1312,1624,20080612,18.726,0.979167,99.6367,0.979167,2008-06-12,06,JJA,US-Oho +1313,1625,20080613,18.513,1.0,39.1639,1.0,2008-06-13,06,JJA,US-Oho +1314,1626,20080614,18.9,0.833333,159.304,1.0,2008-06-14,06,JJA,US-Oho +1315,1627,20080615,19.023,0.895833,134.267,1.0,2008-06-15,06,JJA,US-Oho +1316,1633,20080621,18.045,0.916667,73.0163,1.0,2008-06-21,06,JJA,US-Oho +1317,1634,20080622,18.013,0.8125,91.8031,1.0,2008-06-22,06,JJA,US-Oho +1318,1636,20080624,17.919,0.979167,118.084,1.0,2008-06-24,06,JJA,US-Oho +1319,1637,20080625,17.574,1.0,53.3259,1.0,2008-06-25,06,JJA,US-Oho +1320,1638,20080626,19.14,1.0,99.3916,1.0,2008-06-26,06,JJA,US-Oho +1321,1639,20080627,18.848,1.0,102.849,1.0,2008-06-27,06,JJA,US-Oho +1322,1640,20080628,19.534,1.0,125.367,1.0,2008-06-28,06,JJA,US-Oho +1323,1641,20080629,19.379,1.0,109.071,0.979167,2008-06-29,06,JJA,US-Oho +1324,1642,20080630,19.144,1.0,137.961,1.0,2008-06-30,06,JJA,US-Oho +1325,1643,20080701,18.799,1.0,150.417,0.958333,2008-07-01,07,JJA,US-Oho +1326,1644,20080702,18.779,1.0,142.638,1.0,2008-07-02,07,JJA,US-Oho +1327,1645,20080703,20.084,1.0,56.4891,1.0,2008-07-03,07,JJA,US-Oho +1328,1646,20080704,19.168,1.0,115.377,0.979167,2008-07-04,07,JJA,US-Oho +1329,1647,20080705,18.833,1.0,140.668,1.0,2008-07-05,07,JJA,US-Oho +1330,1648,20080706,18.569,1.0,153.151,0.979167,2008-07-06,07,JJA,US-Oho +1331,1649,20080707,18.328,1.0,115.327,0.979167,2008-07-07,07,JJA,US-Oho +1332,1650,20080708,18.62,1.0,60.8495,0.958333,2008-07-08,07,JJA,US-Oho +1333,1651,20080709,19.281,1.0,201.649,1.0,2008-07-09,07,JJA,US-Oho +1334,1652,20080710,18.932,1.0,115.109,1.0,2008-07-10,07,JJA,US-Oho +1335,1653,20080711,18.636,1.0,135.655,1.0,2008-07-11,07,JJA,US-Oho +1336,1654,20080712,18.379,1.0,114.088,1.0,2008-07-12,07,JJA,US-Oho +1337,1655,20080713,18.104,1.0,182.289,1.0,2008-07-13,07,JJA,US-Oho +1338,1656,20080714,17.825,1.0,162.981,1.0,2008-07-14,07,JJA,US-Oho +1339,1657,20080715,17.613,1.0,149.683,1.0,2008-07-15,07,JJA,US-Oho +1340,1658,20080716,17.445,1.0,130.698,1.0,2008-07-16,07,JJA,US-Oho +1341,1659,20080717,17.313,1.0,135.488,1.0,2008-07-17,07,JJA,US-Oho +1342,1660,20080718,17.208,1.0,153.476,1.0,2008-07-18,07,JJA,US-Oho +1343,1661,20080719,17.148,1.0,54.6535,1.0,2008-07-19,07,JJA,US-Oho +1344,1662,20080720,17.147,1.0,124.926,1.0,2008-07-20,07,JJA,US-Oho +1345,1663,20080721,17.134,1.0,75.7752,0.958333,2008-07-21,07,JJA,US-Oho +1346,1664,20080722,17.11,1.0,144.285,1.0,2008-07-22,07,JJA,US-Oho +1347,1665,20080723,17.07,1.0,160.078,1.0,2008-07-23,07,JJA,US-Oho +1348,1666,20080724,17.025,1.0,160.616,1.0,2008-07-24,07,JJA,US-Oho +1349,1667,20080725,17.0,1.0,116.768,1.0,2008-07-25,07,JJA,US-Oho +1350,1668,20080726,16.979,1.0,137.607,1.0,2008-07-26,07,JJA,US-Oho +1351,1669,20080727,16.954,1.0,134.083,1.0,2008-07-27,07,JJA,US-Oho +1352,1670,20080728,16.932,1.0,131.188,1.0,2008-07-28,07,JJA,US-Oho +1353,1671,20080729,16.907,1.0,127.1,0.916667,2008-07-29,07,JJA,US-Oho +1354,1672,20080730,16.907,1.0,119.378,1.0,2008-07-30,07,JJA,US-Oho +1355,1673,20080731,16.887,1.0,129.953,1.0,2008-07-31,07,JJA,US-Oho +1356,1674,20080801,16.875,1.0,135.841,1.0,2008-08-01,08,JJA,US-Oho +1357,1675,20080802,16.86,1.0,147.004,1.0,2008-08-02,08,JJA,US-Oho +1358,1676,20080803,16.86,1.0,134.089,0.979167,2008-08-03,08,JJA,US-Oho +1359,1677,20080804,16.878,1.0,77.0203,1.0,2008-08-04,08,JJA,US-Oho +1360,1678,20080805,16.862,1.0,80.0819,1.0,2008-08-05,08,JJA,US-Oho +1361,1679,20080806,16.86,1.0,131.064,1.0,2008-08-06,08,JJA,US-Oho +1362,1680,20080807,16.86,1.0,117.477,1.0,2008-08-07,08,JJA,US-Oho +1363,1681,20080808,16.843,1.0,130.182,1.0,2008-08-08,08,JJA,US-Oho +1364,1682,20080809,16.819,1.0,108.866,1.0,2008-08-09,08,JJA,US-Oho +1365,1683,20080810,16.814,1.0,111.419,1.0,2008-08-10,08,JJA,US-Oho +1366,1684,20080811,16.814,1.0,124.658,1.0,2008-08-11,08,JJA,US-Oho +1367,1685,20080812,16.814,1.0,112.664,0.979167,2008-08-12,08,JJA,US-Oho +1368,1686,20080813,16.814,1.0,105.468,1.0,2008-08-13,08,JJA,US-Oho +1369,1687,20080814,16.931,1.0,94.7143,1.0,2008-08-14,08,JJA,US-Oho +1370,1688,20080815,18.029,1.0,112.85,1.0,2008-08-15,08,JJA,US-Oho +1371,1689,20080816,17.798,1.0,119.142,1.0,2008-08-16,08,JJA,US-Oho +1372,1690,20080817,17.545,1.0,112.751,1.0,2008-08-17,08,JJA,US-Oho +1373,1691,20080818,17.32,1.0,93.4844,1.0,2008-08-18,08,JJA,US-Oho +1374,1692,20080819,17.198,1.0,66.074,1.0,2008-08-19,08,JJA,US-Oho +1375,1693,20080820,17.096,1.0,108.328,1.0,2008-08-20,08,JJA,US-Oho +1376,1694,20080821,17.001,1.0,79.2348,1.0,2008-08-21,08,JJA,US-Oho +1377,1695,20080822,16.933,1.0,65.6439,1.0,2008-08-22,08,JJA,US-Oho +1378,1696,20080823,16.89,1.0,95.8924,0.979167,2008-08-23,08,JJA,US-Oho +1379,1697,20080824,16.866,1.0,126.505,0.979167,2008-08-24,08,JJA,US-Oho +1380,1698,20080825,16.86,1.0,97.8081,1.0,2008-08-25,08,JJA,US-Oho +1381,1699,20080826,16.837,1.0,81.5704,1.0,2008-08-26,08,JJA,US-Oho +1382,1700,20080827,16.814,1.0,76.4931,1.0,2008-08-27,08,JJA,US-Oho +1383,1701,20080828,16.814,1.0,36.9078,1.0,2008-08-28,08,JJA,US-Oho +1384,1702,20080829,16.814,1.0,68.4986,0.979167,2008-08-29,08,JJA,US-Oho +1385,1703,20080830,16.814,1.0,106.42,0.916667,2008-08-30,08,JJA,US-Oho +1386,1704,20080831,16.814,1.0,109.081,0.958333,2008-08-31,08,JJA,US-Oho +2256,2708,20110601,18.832,1.0,127.39,1.0,2011-06-01,06,JJA,US-Oho +2257,2709,20110602,18.584,1.0,91.6335,1.0,2011-06-02,06,JJA,US-Oho +2258,2710,20110603,18.37,1.0,67.7808,1.0,2011-06-03,06,JJA,US-Oho +2259,2711,20110604,18.132,1.0,125.842,1.0,2011-06-04,06,JJA,US-Oho +2260,2712,20110605,17.89,1.0,126.651,1.0,2011-06-05,06,JJA,US-Oho +2261,2713,20110606,17.697,1.0,115.29,1.0,2011-06-06,06,JJA,US-Oho +2262,2714,20110607,17.535,1.0,145.647,1.0,2011-06-07,06,JJA,US-Oho +2263,2715,20110608,17.392,1.0,182.46,1.0,2011-06-08,06,JJA,US-Oho +2264,2716,20110609,17.368,1.0,114.897,1.0,2011-06-09,06,JJA,US-Oho +2265,2717,20110610,18.599,1.0,45.3662,1.0,2011-06-10,06,JJA,US-Oho +2266,2718,20110611,18.94,1.0,98.2479,1.0,2011-06-11,06,JJA,US-Oho +2267,2719,20110612,18.628,1.0,123.937,1.0,2011-06-12,06,JJA,US-Oho +2268,2720,20110613,18.304,1.0,151.695,0.979167,2011-06-13,06,JJA,US-Oho +2269,2721,20110614,18.009,1.0,114.53,1.0,2011-06-14,06,JJA,US-Oho +2270,2722,20110615,17.81,1.0,52.9836,1.0,2011-06-15,06,JJA,US-Oho +2271,2723,20110616,17.762,1.0,98.6867,1.0,2011-06-16,06,JJA,US-Oho +2272,2724,20110617,17.711,1.0,96.6942,1.0,2011-06-17,06,JJA,US-Oho +2273,2725,20110618,17.563,1.0,100.196,1.0,2011-06-18,06,JJA,US-Oho +2274,2726,20110619,17.441,1.0,67.7361,1.0,2011-06-19,06,JJA,US-Oho +2275,2727,20110620,17.403,1.0,48.3284,1.0,2011-06-20,06,JJA,US-Oho +2276,2728,20110621,17.328,1.0,129.109,1.0,2011-06-21,06,JJA,US-Oho +2277,2729,20110622,17.238,1.0,132.636,1.0,2011-06-22,06,JJA,US-Oho +2278,2730,20110623,17.186,1.0,77.2862,1.0,2011-06-23,06,JJA,US-Oho +2279,2731,20110624,17.186,1.0,59.2597,0.979167,2011-06-24,06,JJA,US-Oho +2280,2732,20110625,17.164,1.0,154.234,1.0,2011-06-25,06,JJA,US-Oho +2281,2733,20110626,17.117,1.0,111.439,1.0,2011-06-26,06,JJA,US-Oho +2282,2734,20110627,17.075,1.0,109.862,1.0,2011-06-27,06,JJA,US-Oho +2283,2735,20110628,17.047,1.0,158.976,1.0,2011-06-28,06,JJA,US-Oho +2284,2736,20110629,17.024,1.0,150.238,1.0,2011-06-29,06,JJA,US-Oho +2285,2737,20110630,17.0,1.0,143.205,1.0,2011-06-30,06,JJA,US-Oho +2286,2738,20110701,16.984,1.0,137.233,1.0,2011-07-01,07,JJA,US-Oho +2287,2739,20110702,16.967,1.0,148.414,0.979167,2011-07-02,07,JJA,US-Oho +2288,2740,20110703,16.954,1.0,131.856,1.0,2011-07-03,07,JJA,US-Oho +2289,2741,20110704,16.954,1.0,129.256,1.0,2011-07-04,07,JJA,US-Oho +2290,2742,20110705,16.954,1.0,140.517,1.0,2011-07-05,07,JJA,US-Oho +2291,2743,20110706,16.932,1.0,152.112,1.0,2011-07-06,07,JJA,US-Oho +2292,2744,20110707,16.907,1.0,99.3834,1.0,2011-07-07,07,JJA,US-Oho +2293,2745,20110708,16.907,1.0,121.88,1.0,2011-07-08,07,JJA,US-Oho +2294,2746,20110709,16.907,1.0,144.977,1.0,2011-07-09,07,JJA,US-Oho +2295,2747,20110710,16.907,1.0,142.946,1.0,2011-07-10,07,JJA,US-Oho +2296,2748,20110711,17.734,1.0,55.3674,1.0,2011-07-11,07,JJA,US-Oho +2297,2749,20110712,18.441,1.0,179.194,1.0,2011-07-12,07,JJA,US-Oho +2298,2750,20110713,18.099,1.0,147.934,1.0,2011-07-13,07,JJA,US-Oho +2299,2751,20110714,17.791,1.0,98.7172,1.0,2011-07-14,07,JJA,US-Oho +2300,2752,20110715,17.565,1.0,116.738,1.0,2011-07-15,07,JJA,US-Oho +2301,2753,20110716,17.375,1.0,113.566,0.979167,2011-07-16,07,JJA,US-Oho +2302,2754,20110717,17.221,1.0,150.475,1.0,2011-07-17,07,JJA,US-Oho +2303,2755,20110718,17.135,1.0,128.284,1.0,2011-07-18,07,JJA,US-Oho +2304,2756,20110719,17.121,1.0,142.894,1.0,2011-07-19,07,JJA,US-Oho +2305,2757,20110720,17.073,1.0,149.01,0.979167,2011-07-20,07,JJA,US-Oho +2306,2758,20110721,17.024,1.0,153.526,1.0,2011-07-21,07,JJA,US-Oho +2307,2759,20110722,17.985,1.0,86.9675,1.0,2011-07-22,07,JJA,US-Oho +2308,2760,20110723,19.029,1.0,122.483,0.979167,2011-07-23,07,JJA,US-Oho +2309,2761,20110724,19.097,1.0,116.756,1.0,2011-07-24,07,JJA,US-Oho +2310,2762,20110725,18.709,1.0,173.467,1.0,2011-07-25,07,JJA,US-Oho +2311,2763,20110726,18.354,1.0,192.773,1.0,2011-07-26,07,JJA,US-Oho +2312,2764,20110727,18.048,1.0,98.7968,1.0,2011-07-27,07,JJA,US-Oho +2313,2765,20110728,17.834,1.0,155.528,1.0,2011-07-28,07,JJA,US-Oho +2314,2766,20110729,18.235,1.0,72.5948,1.0,2011-07-29,07,JJA,US-Oho +2315,2767,20110730,18.438,1.0,147.768,1.0,2011-07-30,07,JJA,US-Oho +2316,2768,20110731,18.095,1.0,186.3,1.0,2011-07-31,07,JJA,US-Oho +2317,2769,20110801,17.785,1.0,124.933,1.0,2011-08-01,08,JJA,US-Oho +2318,2770,20110802,17.635,1.0,68.2039,1.0,2011-08-02,08,JJA,US-Oho +2319,2771,20110803,17.523,1.0,114.436,1.0,2011-08-03,08,JJA,US-Oho +2320,2772,20110804,17.418,1.0,101.104,1.0,2011-08-04,08,JJA,US-Oho +2321,2773,20110805,17.324,1.0,91.131,1.0,2011-08-05,08,JJA,US-Oho +2322,2774,20110806,17.561,1.0,71.7222,1.0,2011-08-06,08,JJA,US-Oho +2323,2775,20110807,18.464,1.0,131.491,1.0,2011-08-07,08,JJA,US-Oho +2324,2776,20110808,18.696,1.0,116.465,1.0,2011-08-08,08,JJA,US-Oho +2325,2777,20110809,18.491,1.0,151.049,1.0,2011-08-09,08,JJA,US-Oho +2326,2778,20110810,18.187,1.0,164.024,1.0,2011-08-10,08,JJA,US-Oho +2327,2779,20110811,17.834,1.0,141.364,1.0,2011-08-11,08,JJA,US-Oho +2328,2780,20110812,17.551,1.0,108.32,1.0,2011-08-12,08,JJA,US-Oho +2329,2781,20110813,17.353,1.0,119.607,1.0,2011-08-13,08,JJA,US-Oho +2330,2782,20110814,17.455,1.0,26.6604,1.0,2011-08-14,08,JJA,US-Oho +2331,2783,20110815,18.141,1.0,149.222,1.0,2011-08-15,08,JJA,US-Oho +2332,2784,20110816,17.939,1.0,128.407,1.0,2011-08-16,08,JJA,US-Oho +2333,2785,20110817,17.646,1.0,116.747,1.0,2011-08-17,08,JJA,US-Oho +2334,2786,20110818,17.386,1.0,125.937,1.0,2011-08-18,08,JJA,US-Oho +2335,2787,20110819,17.22,1.0,112.761,1.0,2011-08-19,08,JJA,US-Oho +2336,2788,20110820,17.122,1.0,73.7133,1.0,2011-08-20,08,JJA,US-Oho +2337,2789,20110821,17.079,1.0,113.71,1.0,2011-08-21,08,JJA,US-Oho +2338,2790,20110822,17.029,1.0,109.173,1.0,2011-08-22,08,JJA,US-Oho +2339,2791,20110823,17.0,1.0,104.272,1.0,2011-08-23,08,JJA,US-Oho +2340,2792,20110824,18.792,1.0,127.858,1.0,2011-08-24,08,JJA,US-Oho +2341,2793,20110825,19.007,1.0,126.885,1.0,2011-08-25,08,JJA,US-Oho +2342,2794,20110826,18.668,1.0,82.3813,1.0,2011-08-26,08,JJA,US-Oho +2343,2795,20110827,18.374,1.0,125.733,1.0,2011-08-27,08,JJA,US-Oho +2344,2796,20110828,18.086,1.0,126.224,1.0,2011-08-28,08,JJA,US-Oho +2345,2797,20110829,17.823,1.0,101.301,1.0,2011-08-29,08,JJA,US-Oho +2346,2798,20110830,17.632,1.0,89.3657,1.0,2011-08-30,08,JJA,US-Oho +2347,2799,20110831,17.506,1.0,81.2505,1.0,2011-08-31,08,JJA,US-Oho +2621,3074,20120601,17.191,1.0,27.7537,1.0,2012-06-01,06,JJA,US-Oho +2622,3075,20120602,17.175,1.0,122.205,1.0,2012-06-02,06,JJA,US-Oho +2623,3076,20120603,17.133,1.0,145.974,1.0,2012-06-03,06,JJA,US-Oho +2624,3077,20120604,17.096,1.0,104.704,1.0,2012-06-04,06,JJA,US-Oho +2625,3078,20120605,17.077,1.0,87.4261,1.0,2012-06-05,06,JJA,US-Oho +2626,3079,20120606,17.059,1.0,110.579,1.0,2012-06-06,06,JJA,US-Oho +2627,3080,20120607,17.04,1.0,133.831,1.0,2012-06-07,06,JJA,US-Oho +2628,3081,20120608,17.02,1.0,158.823,1.0,2012-06-08,06,JJA,US-Oho +2629,3082,20120609,17.0,1.0,153.058,1.0,2012-06-09,06,JJA,US-Oho +2630,3083,20120610,16.983,1.0,126.595,0.979167,2012-06-10,06,JJA,US-Oho +2631,3084,20120611,16.982,1.0,47.9486,0.979167,2012-06-11,06,JJA,US-Oho +2632,3085,20120612,16.986,1.0,164.206,1.0,2012-06-12,06,JJA,US-Oho +2633,3086,20120613,16.976,1.0,93.8932,1.0,2012-06-13,06,JJA,US-Oho +2634,3087,20120614,16.97,1.0,100.65,0.979167,2012-06-14,06,JJA,US-Oho +2635,3088,20120615,16.962,1.0,111.222,0.958333,2012-06-15,06,JJA,US-Oho +2636,3089,20120616,16.954,1.0,102.203,1.0,2012-06-16,06,JJA,US-Oho +2637,3090,20120617,18.247,1.0,93.1276,1.0,2012-06-17,06,JJA,US-Oho +2638,3091,20120618,19.06,1.0,91.7188,0.979167,2012-06-18,06,JJA,US-Oho +2639,3092,20120619,18.926,1.0,180.777,1.0,2012-06-19,06,JJA,US-Oho +2640,3093,20120620,18.524,1.0,181.329,1.0,2012-06-20,06,JJA,US-Oho +2641,3094,20120621,18.16,1.0,160.315,1.0,2012-06-21,06,JJA,US-Oho +2642,3095,20120622,17.921,1.0,137.323,1.0,2012-06-22,06,JJA,US-Oho +2643,3096,20120623,17.73,1.0,131.487,0.979167,2012-06-23,06,JJA,US-Oho +2644,3097,20120624,17.562,1.0,152.265,1.0,2012-06-24,06,JJA,US-Oho +2645,3098,20120625,17.421,1.0,158.538,1.0,2012-06-25,06,JJA,US-Oho +2646,3099,20120626,17.311,1.0,159.636,0.979167,2012-06-26,06,JJA,US-Oho +2647,3100,20120627,17.216,1.0,167.767,1.0,2012-06-27,06,JJA,US-Oho +2648,3101,20120628,17.138,1.0,161.13,0.979167,2012-06-28,06,JJA,US-Oho +2649,3102,20120629,17.083,1.0,123.311,1.0,2012-06-29,06,JJA,US-Oho +2650,3103,20120630,17.049,1.0,145.471,1.0,2012-06-30,06,JJA,US-Oho +2651,3104,20120701,17.745,1.0,130.473,0.979167,2012-07-01,07,JJA,US-Oho +2652,3105,20120702,18.896,1.0,132.107,0.979167,2012-07-02,07,JJA,US-Oho +2653,3106,20120703,18.507,1.0,115.765,1.0,2012-07-03,07,JJA,US-Oho +2654,3107,20120704,18.147,1.0,186.658,0.958333,2012-07-04,07,JJA,US-Oho +2655,3108,20120705,17.832,1.0,130.523,0.979167,2012-07-05,07,JJA,US-Oho +2656,3109,20120706,17.684,1.0,132.931,1.0,2012-07-06,07,JJA,US-Oho +2657,3110,20120707,17.511,1.0,184.827,0.958333,2012-07-07,07,JJA,US-Oho +2658,3111,20120708,17.362,1.0,175.342,1.0,2012-07-08,07,JJA,US-Oho +2659,3112,20120709,17.264,1.0,109.01,0.979167,2012-07-09,07,JJA,US-Oho +2660,3113,20120710,17.193,1.0,140.91,1.0,2012-07-10,07,JJA,US-Oho +2661,3114,20120711,17.13,1.0,120.527,1.0,2012-07-11,07,JJA,US-Oho +2662,3115,20120712,17.079,1.0,121.268,1.0,2012-07-12,07,JJA,US-Oho +2663,3116,20120713,17.04,1.0,118.196,1.0,2012-07-13,07,JJA,US-Oho +2664,3117,20120714,17.01,1.0,88.1356,1.0,2012-07-14,07,JJA,US-Oho +2665,3118,20120715,16.989,1.0,147.067,1.0,2012-07-15,07,JJA,US-Oho +2666,3119,20120716,16.964,1.0,128.165,1.0,2012-07-16,07,JJA,US-Oho +2667,3120,20120717,16.945,1.0,152.91,0.979167,2012-07-17,07,JJA,US-Oho +2668,3121,20120718,16.932,1.0,80.7302,1.0,2012-07-18,07,JJA,US-Oho +2669,3122,20120719,16.93,1.0,63.1022,1.0,2012-07-19,07,JJA,US-Oho +2670,3123,20120720,18.809,1.0,117.708,1.0,2012-07-20,07,JJA,US-Oho +2671,3124,20120721,18.563,1.0,135.113,0.979167,2012-07-21,07,JJA,US-Oho +2672,3125,20120722,18.167,1.0,145.893,1.0,2012-07-22,07,JJA,US-Oho +2673,3126,20120723,17.802,1.0,157.08,0.979167,2012-07-23,07,JJA,US-Oho +2674,3127,20120724,17.554,1.0,139.83,0.979167,2012-07-24,07,JJA,US-Oho +2675,3128,20120725,17.362,1.0,114.086,1.0,2012-07-25,07,JJA,US-Oho +2676,3129,20120726,17.24,1.0,97.4417,0.958333,2012-07-26,07,JJA,US-Oho +2677,3130,20120727,17.254,1.0,101.934,0.979167,2012-07-27,07,JJA,US-Oho +2678,3131,20120728,17.238,1.0,114.775,1.0,2012-07-28,07,JJA,US-Oho +2679,3132,20120729,17.165,1.0,120.4,1.0,2012-07-29,07,JJA,US-Oho +2680,3133,20120730,17.088,1.0,113.494,1.0,2012-07-30,07,JJA,US-Oho +2681,3134,20120731,17.036,1.0,122.364,1.0,2012-07-31,07,JJA,US-Oho +2682,3135,20120801,16.997,1.0,123.739,0.979167,2012-08-01,08,JJA,US-Oho +2683,3136,20120802,16.965,1.0,110.57,1.0,2012-08-02,08,JJA,US-Oho +2684,3137,20120803,16.942,1.0,104.93,1.0,2012-08-03,08,JJA,US-Oho +2685,3138,20120804,17.051,1.0,74.8908,1.0,2012-08-04,08,JJA,US-Oho +2686,3139,20120805,18.516,1.0,136.207,1.0,2012-08-05,08,JJA,US-Oho +2687,3140,20120806,18.305,1.0,111.265,1.0,2012-08-06,08,JJA,US-Oho +2688,3141,20120807,17.911,1.0,126.47,1.0,2012-08-07,08,JJA,US-Oho +2689,3142,20120808,17.552,1.0,110.53,1.0,2012-08-08,08,JJA,US-Oho +2690,3143,20120809,17.47,1.0,42.5283,1.0,2012-08-09,08,JJA,US-Oho +2691,3144,20120810,19.026,1.0,77.8353,1.0,2012-08-10,08,JJA,US-Oho +2692,3145,20120811,18.749,1.0,63.4432,1.0,2012-08-11,08,JJA,US-Oho +2693,3146,20120812,18.539,1.0,123.794,1.0,2012-08-12,08,JJA,US-Oho +2694,3147,20120813,18.34,1.0,43.9411,1.0,2012-08-13,08,JJA,US-Oho +2695,3148,20120814,18.275,1.0,88.683,1.0,2012-08-14,08,JJA,US-Oho +2696,3149,20120815,18.272,1.0,66.0003,1.0,2012-08-15,08,JJA,US-Oho +2697,3150,20120816,18.155,1.0,104.855,1.0,2012-08-16,08,JJA,US-Oho +2698,3151,20120817,17.981,1.0,158.022,1.0,2012-08-17,08,JJA,US-Oho +2699,3152,20120818,17.771,1.0,110.449,1.0,2012-08-18,08,JJA,US-Oho +2700,3153,20120819,17.59,1.0,117.744,0.958333,2012-08-19,08,JJA,US-Oho +2701,3154,20120820,17.46,1.0,91.3873,1.0,2012-08-20,08,JJA,US-Oho +2702,3155,20120821,17.364,1.0,117.998,1.0,2012-08-21,08,JJA,US-Oho +2703,3156,20120822,17.267,1.0,115.434,1.0,2012-08-22,08,JJA,US-Oho +2704,3157,20120823,17.178,1.0,109.17,1.0,2012-08-23,08,JJA,US-Oho +2705,3158,20120824,17.107,1.0,89.4671,1.0,2012-08-24,08,JJA,US-Oho +2706,3159,20120825,17.051,1.0,91.5733,1.0,2012-08-25,08,JJA,US-Oho +2707,3160,20120826,17.008,1.0,91.349,1.0,2012-08-26,08,JJA,US-Oho +2708,3161,20120827,18.221,1.0,67.1558,0.958333,2012-08-27,08,JJA,US-Oho +2709,3162,20120828,18.8,1.0,129.143,1.0,2012-08-28,08,JJA,US-Oho +2710,3163,20120829,18.529,1.0,90.4964,0.979167,2012-08-29,08,JJA,US-Oho +2711,3164,20120830,18.302,1.0,108.081,1.0,2012-08-30,08,JJA,US-Oho +2712,3165,20120831,18.052,1.0,121.637,1.0,2012-08-31,08,JJA,US-Oho +2984,3439,20130601,20.0,1.0,114.577,0.9375,2013-06-01,06,JJA,US-Oho +2985,3440,20130602,19.684,1.0,99.8371,0.979167,2013-06-02,06,JJA,US-Oho +2986,3441,20130603,19.205,1.0,126.232,1.0,2013-06-03,06,JJA,US-Oho +2987,3442,20130604,18.956,1.0,83.7896,1.0,2013-06-04,06,JJA,US-Oho +2988,3443,20130605,18.758,1.0,97.6744,1.0,2013-06-05,06,JJA,US-Oho +2989,3444,20130606,18.591,1.0,76.0349,1.0,2013-06-06,06,JJA,US-Oho +2990,3445,20130607,18.485,1.0,42.4576,1.0,2013-06-07,06,JJA,US-Oho +2991,3446,20130608,18.371,1.0,97.5392,1.0,2013-06-08,06,JJA,US-Oho +2992,3447,20130609,18.206,1.0,77.3271,1.0,2013-06-09,06,JJA,US-Oho +2993,3448,20130610,19.006,1.0,55.9602,1.0,2013-06-10,06,JJA,US-Oho +2994,3449,20130611,19.544,1.0,149.804,1.0,2013-06-11,06,JJA,US-Oho +2995,3450,20130612,19.297,1.0,66.4697,1.0,2013-06-12,06,JJA,US-Oho +2996,3451,20130613,19.894,1.0,146.98,1.0,2013-06-13,06,JJA,US-Oho +2997,3452,20130614,19.203,1.0,134.674,1.0,2013-06-14,06,JJA,US-Oho +2998,3453,20130615,18.944,1.0,81.5953,0.979167,2013-06-15,06,JJA,US-Oho +2999,3454,20130616,19.554,1.0,139.555,1.0,2013-06-16,06,JJA,US-Oho +3000,3455,20130617,19.342,1.0,129.147,1.0,2013-06-17,06,JJA,US-Oho +3001,3456,20130618,19.047,1.0,99.8668,1.0,2013-06-18,06,JJA,US-Oho +3002,3457,20130619,18.814,1.0,107.027,1.0,2013-06-19,06,JJA,US-Oho +3003,3458,20130620,18.571,1.0,126.533,1.0,2013-06-20,06,JJA,US-Oho +3004,3459,20130621,18.31,1.0,142.4,1.0,2013-06-21,06,JJA,US-Oho +3005,3460,20130622,18.063,1.0,132.742,1.0,2013-06-22,06,JJA,US-Oho +3006,3461,20130623,17.905,1.0,147.775,1.0,2013-06-23,06,JJA,US-Oho +3007,3462,20130624,17.795,1.0,152.474,1.0,2013-06-24,06,JJA,US-Oho +3008,3463,20130625,17.671,1.0,144.005,1.0,2013-06-25,06,JJA,US-Oho +3009,3464,20130626,17.911,1.0,101.841,1.0,2013-06-26,06,JJA,US-Oho +3010,3465,20130627,18.065,1.0,135.442,0.979167,2013-06-27,06,JJA,US-Oho +3011,3466,20130628,18.07,1.0,112.475,1.0,2013-06-28,06,JJA,US-Oho +3012,3467,20130629,18.082,1.0,75.069,1.0,2013-06-29,06,JJA,US-Oho +3013,3468,20130630,18.526,1.0,99.8725,0.979167,2013-06-30,06,JJA,US-Oho +3014,3469,20130701,18.604,1.0,76.5103,0.958333,2013-07-01,07,JJA,US-Oho +3015,3470,20130702,18.602,1.0,50.055,1.0,2013-07-02,07,JJA,US-Oho +3016,3471,20130703,18.526,1.0,104.701,1.0,2013-07-03,07,JJA,US-Oho +3017,3472,20130704,18.369,1.0,84.1172,1.0,2013-07-04,07,JJA,US-Oho +3018,3473,20130705,18.218,1.0,105.692,1.0,2013-07-05,07,JJA,US-Oho +3019,3474,20130706,18.109,1.0,59.5476,1.0,2013-07-06,07,JJA,US-Oho +3020,3475,20130707,18.339,1.0,105.515,1.0,2013-07-07,07,JJA,US-Oho +3021,3476,20130708,19.74,1.0,87.7095,1.0,2013-07-08,07,JJA,US-Oho +3022,3477,20130709,19.925,1.0,86.9625,1.0,2013-07-09,07,JJA,US-Oho +3023,3478,20130710,20.178,1.0,91.9852,0.979167,2013-07-10,07,JJA,US-Oho +3024,3479,20130711,19.391,1.0,161.052,0.979167,2013-07-11,07,JJA,US-Oho +3025,3480,20130712,19.034,1.0,125.239,1.0,2013-07-12,07,JJA,US-Oho +3026,3481,20130713,18.797,1.0,110.983,1.0,2013-07-13,07,JJA,US-Oho +3027,3482,20130714,18.587,1.0,108.875,1.0,2013-07-14,07,JJA,US-Oho +3028,3483,20130715,18.371,1.0,125.22,1.0,2013-07-15,07,JJA,US-Oho +3029,3484,20130716,18.137,1.0,157.474,1.0,2013-07-16,07,JJA,US-Oho +3030,3485,20130717,17.933,1.0,134.305,1.0,2013-07-17,07,JJA,US-Oho +3031,3486,20130718,17.753,1.0,164.783,1.0,2013-07-18,07,JJA,US-Oho +3032,3487,20130719,17.575,1.0,194.951,1.0,2013-07-19,07,JJA,US-Oho +3033,3488,20130720,19.296,1.0,142.103,1.0,2013-07-20,07,JJA,US-Oho +3034,3489,20130721,19.068,1.0,119.862,1.0,2013-07-21,07,JJA,US-Oho +3035,3490,20130722,19.002,1.0,45.744,0.979167,2013-07-22,07,JJA,US-Oho +3036,3491,20130723,19.032,1.0,157.489,1.0,2013-07-23,07,JJA,US-Oho +3037,3492,20130724,18.807,1.0,139.207,1.0,2013-07-24,07,JJA,US-Oho +3038,3493,20130725,18.593,1.0,134.361,1.0,2013-07-25,07,JJA,US-Oho +3039,3494,20130726,18.38,1.0,104.839,1.0,2013-07-26,07,JJA,US-Oho +3040,3495,20130727,18.852,1.0,64.4344,1.0,2013-07-27,07,JJA,US-Oho +3041,3496,20130728,19.487,1.0,112.241,1.0,2013-07-28,07,JJA,US-Oho +3042,3497,20130729,19.312,1.0,105.499,1.0,2013-07-29,07,JJA,US-Oho +3043,3498,20130730,19.094,1.0,107.435,1.0,2013-07-30,07,JJA,US-Oho +3044,3499,20130731,18.917,1.0,61.5541,1.0,2013-07-31,07,JJA,US-Oho +3045,3500,20130801,18.778,1.0,144.01,1.0,2013-08-01,08,JJA,US-Oho +3046,3501,20130802,18.645,1.0,63.3657,1.0,2013-08-02,08,JJA,US-Oho +3047,3502,20130803,18.52,1.0,157.581,1.0,2013-08-03,08,JJA,US-Oho +3048,3503,20130804,18.307,1.0,131.995,1.0,2013-08-04,08,JJA,US-Oho +3049,3504,20130805,18.143,1.0,61.1535,1.0,2013-08-05,08,JJA,US-Oho +3050,3505,20130806,18.028,1.0,79.4576,1.0,2013-08-06,08,JJA,US-Oho +3051,3506,20130807,18.726,1.0,56.9079,1.0,2013-08-07,08,JJA,US-Oho +3052,3507,20130808,19.338,1.0,55.0224,1.0,2013-08-08,08,JJA,US-Oho +3053,3508,20130809,19.106,1.0,131.718,1.0,2013-08-09,08,JJA,US-Oho +3054,3509,20130810,18.92,1.0,57.0858,1.0,2013-08-10,08,JJA,US-Oho +3055,3510,20130811,18.747,1.0,123.688,1.0,2013-08-11,08,JJA,US-Oho +3056,3511,20130812,18.57,1.0,60.8,1.0,2013-08-12,08,JJA,US-Oho +3057,3512,20130813,18.413,1.0,129.237,1.0,2013-08-13,08,JJA,US-Oho +3058,3513,20130814,18.229,1.0,106.033,1.0,2013-08-14,08,JJA,US-Oho +3059,3514,20130815,18.054,1.0,106.932,1.0,2013-08-15,08,JJA,US-Oho +3060,3515,20130816,17.878,1.0,91.7249,1.0,2013-08-16,08,JJA,US-Oho +3061,3516,20130817,17.737,1.0,83.4191,1.0,2013-08-17,08,JJA,US-Oho +3062,3517,20130818,17.624,1.0,90.0165,1.0,2013-08-18,08,JJA,US-Oho +3063,3518,20130819,17.514,1.0,110.667,1.0,2013-08-19,08,JJA,US-Oho +3064,3519,20130820,17.417,1.0,107.358,1.0,2013-08-20,08,JJA,US-Oho +3065,3520,20130821,17.334,1.0,103.832,1.0,2013-08-21,08,JJA,US-Oho +3066,3521,20130822,17.279,1.0,74.9512,1.0,2013-08-22,08,JJA,US-Oho +3067,3522,20130823,17.242,1.0,126.866,1.0,2013-08-23,08,JJA,US-Oho +3068,3523,20130824,17.187,1.0,96.1815,1.0,2013-08-24,08,JJA,US-Oho +3069,3524,20130825,17.141,1.0,114.289,1.0,2013-08-25,08,JJA,US-Oho +3070,3525,20130826,17.105,1.0,107.228,1.0,2013-08-26,08,JJA,US-Oho +3071,3526,20130827,17.086,1.0,74.7803,1.0,2013-08-27,08,JJA,US-Oho +3072,3527,20130828,17.47,1.0,84.9657,1.0,2013-08-28,08,JJA,US-Oho +3073,3528,20130829,17.776,1.0,79.2717,1.0,2013-08-29,08,JJA,US-Oho +3074,3529,20130830,17.73,1.0,117.626,1.0,2013-08-30,08,JJA,US-Oho +3075,3530,20130831,17.562,1.0,96.2324,1.0,2013-08-31,08,JJA,US-Oho +50,152,20040601,19.602,1.0,46.2585,1.0,2004-06-01,06,JJA,IT-Noe +51,153,20040602,19.472,1.0,57.4486,1.0,2004-06-02,06,JJA,IT-Noe +52,154,20040603,19.271,1.0,44.1212,1.0,2004-06-03,06,JJA,IT-Noe +53,155,20040604,19.079,1.0,45.7983,1.0,2004-06-04,06,JJA,IT-Noe +54,156,20040605,18.983,1.0,35.5929,1.0,2004-06-05,06,JJA,IT-Noe +55,157,20040606,18.884,1.0,33.021,1.0,2004-06-06,06,JJA,IT-Noe +56,158,20040607,18.736,1.0,55.9093,1.0,2004-06-07,06,JJA,IT-Noe +57,159,20040608,18.599,1.0,58.1998,1.0,2004-06-08,06,JJA,IT-Noe +58,160,20040609,18.473,1.0,52.1509,1.0,2004-06-09,06,JJA,IT-Noe +59,161,20040610,18.366,1.0,49.1052,1.0,2004-06-10,06,JJA,IT-Noe +60,162,20040611,18.262,1.0,60.7405,1.0,2004-06-11,06,JJA,IT-Noe +61,163,20040612,18.16,1.0,42.3268,1.0,2004-06-12,06,JJA,IT-Noe +62,164,20040613,18.086,1.0,49.2769,1.0,2004-06-13,06,JJA,IT-Noe +63,165,20040614,17.995,1.0,43.7959,1.0,2004-06-14,06,JJA,IT-Noe +64,166,20040615,17.935,1.0,32.8013,1.0,2004-06-15,06,JJA,IT-Noe +65,167,20040616,17.925,1.0,28.0486,1.0,2004-06-16,06,JJA,IT-Noe +66,168,20040617,17.862,1.0,42.8912,1.0,2004-06-17,06,JJA,IT-Noe +67,169,20040618,17.862,1.0,41.7585,1.0,2004-06-18,06,JJA,IT-Noe +68,170,20040619,17.804,1.0,27.5486,1.0,2004-06-19,06,JJA,IT-Noe +69,171,20040620,17.772,1.0,32.0687,1.0,2004-06-20,06,JJA,IT-Noe +70,172,20040621,17.686,1.0,30.3671,1.0,2004-06-21,06,JJA,IT-Noe +71,173,20040622,17.649,1.0,37.3901,0.958333,2004-06-22,06,JJA,IT-Noe +72,174,20040623,17.632,1.0,47.2514,1.0,2004-06-23,06,JJA,IT-Noe +73,175,20040624,17.579,1.0,23.7444,1.0,2004-06-24,06,JJA,IT-Noe +74,176,20040625,17.546,1.0,39.7157,1.0,2004-06-25,06,JJA,IT-Noe +75,177,20040626,17.497,1.0,36.5464,1.0,2004-06-26,06,JJA,IT-Noe +76,178,20040627,17.462,1.0,43.187,1.0,2004-06-27,06,JJA,IT-Noe +77,179,20040628,17.391,1.0,42.8007,1.0,2004-06-28,06,JJA,IT-Noe +78,180,20040629,17.311,1.0,19.0212,1.0,2004-06-29,06,JJA,IT-Noe +79,181,20040630,17.218,1.0,34.2796,1.0,2004-06-30,06,JJA,IT-Noe +80,182,20040701,17.162,1.0,44.4371,1.0,2004-07-01,07,JJA,IT-Noe +81,183,20040702,17.127,1.0,32.6752,1.0,2004-07-02,07,JJA,IT-Noe +82,184,20040703,17.046,1.0,31.4014,1.0,2004-07-03,07,JJA,IT-Noe +83,185,20040704,16.962,1.0,35.0769,1.0,2004-07-04,07,JJA,IT-Noe +84,186,20040705,16.934,1.0,47.7905,0.958333,2004-07-05,07,JJA,IT-Noe +85,187,20040706,16.915,1.0,37.0976,0.979167,2004-07-06,07,JJA,IT-Noe +86,188,20040707,16.844,1.0,43.2469,0.979167,2004-07-07,07,JJA,IT-Noe +87,189,20040708,16.798,1.0,21.5756,1.0,2004-07-08,07,JJA,IT-Noe +88,190,20040709,16.713,1.0,37.317,1.0,2004-07-09,07,JJA,IT-Noe +89,191,20040710,16.657,1.0,33.3444,1.0,2004-07-10,07,JJA,IT-Noe +90,192,20040711,16.594,1.0,33.5633,1.0,2004-07-11,07,JJA,IT-Noe +91,193,20040712,16.535,1.0,36.8074,1.0,2004-07-12,07,JJA,IT-Noe +92,194,20040713,16.435,1.0,30.7274,1.0,2004-07-13,07,JJA,IT-Noe +93,195,20040714,16.404,1.0,31.8743,1.0,2004-07-14,07,JJA,IT-Noe +94,196,20040715,16.355,1.0,17.1269,0.854167,2004-07-15,07,JJA,IT-Noe +95,198,20040717,16.362,1.0,28.6041,0.979167,2004-07-17,07,JJA,IT-Noe +96,199,20040718,16.358,1.0,40.3869,1.0,2004-07-18,07,JJA,IT-Noe +97,200,20040719,16.349,1.0,29.9371,1.0,2004-07-19,07,JJA,IT-Noe +98,201,20040720,16.288,1.0,23.8346,1.0,2004-07-20,07,JJA,IT-Noe +99,202,20040721,16.274,1.0,19.51,1.0,2004-07-21,07,JJA,IT-Noe +100,203,20040722,16.242,1.0,23.1476,1.0,2004-07-22,07,JJA,IT-Noe +101,204,20040723,16.221,1.0,32.9668,1.0,2004-07-23,07,JJA,IT-Noe +102,205,20040724,16.194,1.0,22.7372,1.0,2004-07-24,07,JJA,IT-Noe +103,206,20040725,16.172,1.0,22.8478,1.0,2004-07-25,07,JJA,IT-Noe +104,207,20040726,16.122,1.0,25.5945,1.0,2004-07-26,07,JJA,IT-Noe +105,208,20040727,16.07,1.0,22.1174,1.0,2004-07-27,07,JJA,IT-Noe +106,209,20040728,16.014,1.0,20.4086,1.0,2004-07-28,07,JJA,IT-Noe +107,210,20040729,16.007,1.0,14.8004,1.0,2004-07-29,07,JJA,IT-Noe +108,211,20040730,15.993,1.0,13.4517,1.0,2004-07-30,07,JJA,IT-Noe +109,212,20040731,15.967,1.0,19.7634,1.0,2004-07-31,07,JJA,IT-Noe +110,213,20040801,15.946,1.0,9.11415,1.0,2004-08-01,08,JJA,IT-Noe +111,214,20040802,15.92,1.0,20.096,1.0,2004-08-02,08,JJA,IT-Noe +112,215,20040803,15.919,1.0,8.39478,1.0,2004-08-03,08,JJA,IT-Noe +113,216,20040804,15.889,1.0,14.2538,0.958333,2004-08-04,08,JJA,IT-Noe +114,217,20040805,15.8,1.0,23.5711,1.0,2004-08-05,08,JJA,IT-Noe +115,218,20040806,15.815,1.0,19.7329,1.0,2004-08-06,08,JJA,IT-Noe +116,219,20040807,15.845,1.0,16.2448,1.0,2004-08-07,08,JJA,IT-Noe +117,220,20040808,15.858,1.0,28.82,1.0,2004-08-08,08,JJA,IT-Noe +118,221,20040809,15.859,1.0,16.5738,0.979167,2004-08-09,08,JJA,IT-Noe +119,222,20040810,15.851,1.0,9.42697,1.0,2004-08-10,08,JJA,IT-Noe +120,223,20040811,15.842,1.0,11.6792,1.0,2004-08-11,08,JJA,IT-Noe +121,224,20040812,15.796,1.0,7.8971,1.0,2004-08-12,08,JJA,IT-Noe +122,225,20040813,15.793,1.0,18.4406,1.0,2004-08-13,08,JJA,IT-Noe +123,226,20040814,15.761,1.0,21.8648,1.0,2004-08-14,08,JJA,IT-Noe +124,227,20040815,15.719,1.0,19.2114,1.0,2004-08-15,08,JJA,IT-Noe +125,228,20040816,15.665,1.0,13.3552,1.0,2004-08-16,08,JJA,IT-Noe +126,229,20040817,15.66,1.0,12.559,1.0,2004-08-17,08,JJA,IT-Noe +127,230,20040818,15.671,1.0,9.69869,1.0,2004-08-18,08,JJA,IT-Noe +128,231,20040819,15.65,1.0,10.9488,1.0,2004-08-19,08,JJA,IT-Noe +129,232,20040820,15.645,1.0,5.16393,1.0,2004-08-20,08,JJA,IT-Noe +130,233,20040821,15.592,1.0,22.2662,1.0,2004-08-21,08,JJA,IT-Noe +131,234,20040822,15.568,1.0,18.2352,1.0,2004-08-22,08,JJA,IT-Noe +132,235,20040823,15.527,1.0,15.6435,1.0,2004-08-23,08,JJA,IT-Noe +133,236,20040824,15.514,1.0,10.3167,0.979167,2004-08-24,08,JJA,IT-Noe +134,237,20040825,15.538,1.0,4.29237,0.958333,2004-08-25,08,JJA,IT-Noe +135,238,20040826,15.512,1.0,19.418,1.0,2004-08-26,08,JJA,IT-Noe +136,239,20040827,15.49,1.0,9.96669,1.0,2004-08-27,08,JJA,IT-Noe +137,240,20040828,15.446,1.0,7.8817,1.0,2004-08-28,08,JJA,IT-Noe +138,241,20040829,15.409,1.0,4.45621,0.979167,2004-08-29,08,JJA,IT-Noe +139,242,20040830,15.401,1.0,3.24237,0.958333,2004-08-30,08,JJA,IT-Noe +140,243,20040831,15.401,1.0,7.64362,1.0,2004-08-31,08,JJA,IT-Noe +366,517,20050601,18.791,1.0,28.5555,1.0,2005-06-01,06,JJA,IT-Noe +367,518,20050602,18.802,1.0,44.2511,1.0,2005-06-02,06,JJA,IT-Noe +368,519,20050603,18.816,1.0,59.8026,1.0,2005-06-03,06,JJA,IT-Noe +369,520,20050604,18.77,1.0,49.4545,1.0,2005-06-04,06,JJA,IT-Noe +370,521,20050605,18.666,1.0,39.1967,1.0,2005-06-05,06,JJA,IT-Noe +371,522,20050606,18.556,1.0,39.9742,1.0,2005-06-06,06,JJA,IT-Noe +372,523,20050607,18.475,1.0,36.5759,1.0,2005-06-07,06,JJA,IT-Noe +373,524,20050608,18.404,1.0,44.4845,1.0,2005-06-08,06,JJA,IT-Noe +374,525,20050609,18.341,1.0,49.2439,1.0,2005-06-09,06,JJA,IT-Noe +375,526,20050610,18.226,1.0,41.0464,1.0,2005-06-10,06,JJA,IT-Noe +376,527,20050611,18.111,1.0,38.1548,1.0,2005-06-11,06,JJA,IT-Noe +377,528,20050612,18.081,1.0,43.3067,1.0,2005-06-12,06,JJA,IT-Noe +378,529,20050613,18.099,1.0,33.2737,1.0,2005-06-13,06,JJA,IT-Noe +379,530,20050614,17.955,1.0,28.7235,1.0,2005-06-14,06,JJA,IT-Noe +380,531,20050615,17.985,1.0,41.5144,1.0,2005-06-15,06,JJA,IT-Noe +381,532,20050616,17.998,1.0,31.2003,1.0,2005-06-16,06,JJA,IT-Noe +382,533,20050617,17.997,1.0,39.2922,0.979167,2005-06-17,06,JJA,IT-Noe +383,534,20050618,17.939,1.0,34.2196,1.0,2005-06-18,06,JJA,IT-Noe +384,535,20050619,17.856,1.0,37.6391,1.0,2005-06-19,06,JJA,IT-Noe +385,536,20050620,17.807,1.0,44.2547,1.0,2005-06-20,06,JJA,IT-Noe +386,537,20050621,17.742,1.0,33.9204,1.0,2005-06-21,06,JJA,IT-Noe +387,538,20050622,17.707,1.0,35.8982,1.0,2005-06-22,06,JJA,IT-Noe +388,539,20050623,17.659,1.0,36.1275,1.0,2005-06-23,06,JJA,IT-Noe +389,540,20050624,17.622,1.0,34.9772,1.0,2005-06-24,06,JJA,IT-Noe +390,541,20050625,17.611,1.0,49.8647,1.0,2005-06-25,06,JJA,IT-Noe +391,542,20050626,17.553,1.0,41.0829,1.0,2005-06-26,06,JJA,IT-Noe +392,543,20050627,17.481,1.0,40.7173,1.0,2005-06-27,06,JJA,IT-Noe +393,544,20050628,17.434,1.0,53.6935,1.0,2005-06-28,06,JJA,IT-Noe +394,545,20050629,17.366,1.0,31.2559,1.0,2005-06-29,06,JJA,IT-Noe +395,546,20050630,17.369,1.0,36.6915,1.0,2005-06-30,06,JJA,IT-Noe +396,547,20050701,17.266,1.0,37.3319,1.0,2005-07-01,07,JJA,IT-Noe +397,548,20050702,17.163,1.0,32.2475,1.0,2005-07-02,07,JJA,IT-Noe +398,549,20050703,17.103,1.0,31.0116,1.0,2005-07-03,07,JJA,IT-Noe +399,550,20050704,17.055,1.0,26.1198,1.0,2005-07-04,07,JJA,IT-Noe +400,551,20050705,17.058,1.0,22.0591,1.0,2005-07-05,07,JJA,IT-Noe +401,552,20050706,16.951,1.0,28.9633,1.0,2005-07-06,07,JJA,IT-Noe +402,553,20050707,16.879,1.0,30.6353,1.0,2005-07-07,07,JJA,IT-Noe +403,554,20050708,16.805,1.0,29.6413,1.0,2005-07-08,07,JJA,IT-Noe +404,555,20050709,16.748,1.0,24.0004,1.0,2005-07-09,07,JJA,IT-Noe +405,556,20050710,16.699,1.0,16.756,1.0,2005-07-10,07,JJA,IT-Noe +406,557,20050711,16.676,1.0,10.7067,1.0,2005-07-11,07,JJA,IT-Noe +407,558,20050712,16.652,1.0,5.53521,1.0,2005-07-12,07,JJA,IT-Noe +408,559,20050713,16.53,1.0,4.54744,1.0,2005-07-13,07,JJA,IT-Noe +409,560,20050714,16.488,1.0,20.6388,0.958333,2005-07-14,07,JJA,IT-Noe +410,561,20050715,16.475,1.0,15.5372,1.0,2005-07-15,07,JJA,IT-Noe +411,562,20050716,16.448,1.0,25.6657,1.0,2005-07-16,07,JJA,IT-Noe +412,563,20050717,16.445,1.0,31.1931,1.0,2005-07-17,07,JJA,IT-Noe +413,564,20050718,16.404,1.0,11.7648,0.916667,2005-07-18,07,JJA,IT-Noe +414,565,20050719,16.364,1.0,19.9695,1.0,2005-07-19,07,JJA,IT-Noe +415,566,20050720,16.302,1.0,20.8606,1.0,2005-07-20,07,JJA,IT-Noe +416,567,20050721,16.288,1.0,16.9975,0.979167,2005-07-21,07,JJA,IT-Noe +417,568,20050722,16.238,1.0,16.1658,0.9375,2005-07-22,07,JJA,IT-Noe +418,569,20050723,16.221,1.0,16.518,0.958333,2005-07-23,07,JJA,IT-Noe +419,570,20050724,16.192,1.0,28.6363,0.958333,2005-07-24,07,JJA,IT-Noe +420,571,20050725,16.204,1.0,30.6284,0.9375,2005-07-25,07,JJA,IT-Noe +421,572,20050726,16.228,1.0,20.4388,0.979167,2005-07-26,07,JJA,IT-Noe +422,573,20050727,16.181,1.0,19.4279,1.0,2005-07-27,07,JJA,IT-Noe +423,574,20050728,16.195,1.0,29.2304,1.0,2005-07-28,07,JJA,IT-Noe +424,575,20050729,16.209,1.0,15.5142,1.0,2005-07-29,07,JJA,IT-Noe +425,576,20050730,16.204,1.0,15.3341,1.0,2005-07-30,07,JJA,IT-Noe +426,577,20050731,16.115,1.0,20.8042,1.0,2005-07-31,07,JJA,IT-Noe +427,578,20050801,16.094,1.0,17.8583,0.979167,2005-08-01,08,JJA,IT-Noe +428,579,20050802,16.013,1.0,26.9836,1.0,2005-08-02,08,JJA,IT-Noe +429,580,20050803,15.893,1.0,26.291,1.0,2005-08-03,08,JJA,IT-Noe +430,581,20050804,15.884,1.0,24.1497,1.0,2005-08-04,08,JJA,IT-Noe +431,582,20050805,15.899,1.0,13.0935,0.979167,2005-08-05,08,JJA,IT-Noe +432,583,20050806,15.916,1.0,10.8588,1.0,2005-08-06,08,JJA,IT-Noe +433,584,20050807,15.91,1.0,23.7759,1.0,2005-08-07,08,JJA,IT-Noe +434,585,20050808,15.865,1.0,23.0607,1.0,2005-08-08,08,JJA,IT-Noe +435,586,20050809,15.852,1.0,18.6648,0.958333,2005-08-09,08,JJA,IT-Noe +436,587,20050810,15.834,1.0,12.7554,1.0,2005-08-10,08,JJA,IT-Noe +437,588,20050811,15.774,1.0,17.2788,0.979167,2005-08-11,08,JJA,IT-Noe +438,589,20050812,15.742,1.0,40.8808,1.0,2005-08-12,08,JJA,IT-Noe +439,590,20050813,15.773,1.0,31.6795,0.958333,2005-08-13,08,JJA,IT-Noe +440,591,20050814,15.844,1.0,37.122,1.0,2005-08-14,08,JJA,IT-Noe +441,592,20050815,15.883,1.0,47.2643,1.0,2005-08-15,08,JJA,IT-Noe +442,593,20050816,15.822,1.0,40.9666,1.0,2005-08-16,08,JJA,IT-Noe +443,594,20050817,15.794,1.0,34.5673,0.8125,2005-08-17,08,JJA,IT-Noe +444,596,20050819,15.713,1.0,34.9087,1.0,2005-08-19,08,JJA,IT-Noe +445,597,20050820,15.715,1.0,34.6366,1.0,2005-08-20,08,JJA,IT-Noe +446,598,20050821,15.804,0.875,63.2603,1.0,2005-08-21,08,JJA,IT-Noe +447,599,20050822,15.811,1.0,39.5196,1.0,2005-08-22,08,JJA,IT-Noe +448,603,20050826,15.516,0.916667,20.0688,1.0,2005-08-26,08,JJA,IT-Noe +449,604,20050827,15.428,0.875,13.1848,1.0,2005-08-27,08,JJA,IT-Noe +450,605,20050828,15.412,0.979167,16.6957,1.0,2005-08-28,08,JJA,IT-Noe +451,606,20050829,15.437,1.0,16.771,1.0,2005-08-29,08,JJA,IT-Noe +452,607,20050830,15.466,0.854167,19.3518,0.979167,2005-08-30,08,JJA,IT-Noe +453,608,20050831,15.404,1.0,14.596,1.0,2005-08-31,08,JJA,IT-Noe +1306,1613,20080601,30.888,1.0,55.9535,1.0,2008-06-01,06,JJA,IT-Noe +1307,1614,20080602,29.352,1.0,54.7087,1.0,2008-06-02,06,JJA,IT-Noe +1308,1615,20080603,27.957,1.0,64.3703,1.0,2008-06-03,06,JJA,IT-Noe +1309,1616,20080604,26.612,1.0,63.434,1.0,2008-06-04,06,JJA,IT-Noe +1310,1617,20080605,25.249,1.0,54.1029,1.0,2008-06-05,06,JJA,IT-Noe +1311,1618,20080606,23.805,1.0,50.2025,1.0,2008-06-06,06,JJA,IT-Noe +1312,1619,20080607,23.068,1.0,68.1251,1.0,2008-06-07,06,JJA,IT-Noe +1313,1620,20080608,22.566,1.0,52.6638,1.0,2008-06-08,06,JJA,IT-Noe +1314,1621,20080609,22.181,1.0,59.3221,1.0,2008-06-09,06,JJA,IT-Noe +1315,1622,20080610,21.739,1.0,60.4823,1.0,2008-06-10,06,JJA,IT-Noe +1316,1623,20080611,21.135,1.0,19.7699,1.0,2008-06-11,06,JJA,IT-Noe +1317,1624,20080612,20.803,1.0,62.2639,1.0,2008-06-12,06,JJA,IT-Noe +1318,1625,20080613,20.912,1.0,85.886,1.0,2008-06-13,06,JJA,IT-Noe +1319,1626,20080614,21.016,1.0,77.2245,1.0,2008-06-14,06,JJA,IT-Noe +1320,1627,20080615,20.985,1.0,62.4554,1.0,2008-06-15,06,JJA,IT-Noe +1321,1628,20080616,20.955,1.0,68.6769,1.0,2008-06-16,06,JJA,IT-Noe +1322,1629,20080617,20.83,1.0,39.4099,1.0,2008-06-17,06,JJA,IT-Noe +1323,1630,20080618,20.715,1.0,52.3876,1.0,2008-06-18,06,JJA,IT-Noe +1324,1631,20080619,20.592,1.0,53.2732,1.0,2008-06-19,06,JJA,IT-Noe +1325,1632,20080620,20.45,1.0,55.1673,1.0,2008-06-20,06,JJA,IT-Noe +1326,1633,20080621,20.347,1.0,60.8309,1.0,2008-06-21,06,JJA,IT-Noe +1327,1634,20080622,20.261,1.0,69.8667,1.0,2008-06-22,06,JJA,IT-Noe +1328,1635,20080623,20.168,1.0,66.941,1.0,2008-06-23,06,JJA,IT-Noe +1329,1636,20080624,20.048,1.0,76.7369,1.0,2008-06-24,06,JJA,IT-Noe +1330,1637,20080625,19.838,1.0,61.3838,1.0,2008-06-25,06,JJA,IT-Noe +1331,1638,20080626,19.731,1.0,46.3624,1.0,2008-06-26,06,JJA,IT-Noe +1332,1639,20080627,19.629,1.0,44.7263,1.0,2008-06-27,06,JJA,IT-Noe +1333,1640,20080628,19.504,1.0,54.3227,1.0,2008-06-28,06,JJA,IT-Noe +1334,1641,20080629,19.417,1.0,43.4672,1.0,2008-06-29,06,JJA,IT-Noe +1335,1642,20080630,19.322,1.0,47.2594,1.0,2008-06-30,06,JJA,IT-Noe +1336,1643,20080701,19.246,1.0,43.8199,1.0,2008-07-01,07,JJA,IT-Noe +1337,1644,20080702,19.172,1.0,43.6536,1.0,2008-07-02,07,JJA,IT-Noe +1338,1645,20080703,19.059,1.0,52.2019,1.0,2008-07-03,07,JJA,IT-Noe +1339,1646,20080704,19.013,1.0,40.1617,1.0,2008-07-04,07,JJA,IT-Noe +1340,1647,20080705,18.929,1.0,38.7459,1.0,2008-07-05,07,JJA,IT-Noe +1341,1648,20080706,18.849,1.0,34.6372,1.0,2008-07-06,07,JJA,IT-Noe +1342,1649,20080707,18.831,1.0,33.0079,1.0,2008-07-07,07,JJA,IT-Noe +1343,1650,20080708,18.727,1.0,30.1964,1.0,2008-07-08,07,JJA,IT-Noe +1344,1651,20080709,18.603,1.0,35.4435,1.0,2008-07-09,07,JJA,IT-Noe +1345,1652,20080710,18.503,1.0,32.528,1.0,2008-07-10,07,JJA,IT-Noe +1346,1653,20080711,18.496,1.0,33.7575,1.0,2008-07-11,07,JJA,IT-Noe +1347,1654,20080712,18.407,1.0,32.7856,1.0,2008-07-12,07,JJA,IT-Noe +1348,1655,20080713,18.337,1.0,24.0628,1.0,2008-07-13,07,JJA,IT-Noe +1349,1656,20080714,18.197,1.0,33.8189,1.0,2008-07-14,07,JJA,IT-Noe +1350,1657,20080715,18.124,1.0,28.4308,1.0,2008-07-15,07,JJA,IT-Noe +1351,1658,20080716,18.048,1.0,26.0398,1.0,2008-07-16,07,JJA,IT-Noe +1352,1659,20080717,17.963,1.0,14.4845,1.0,2008-07-17,07,JJA,IT-Noe +1353,1660,20080718,17.966,1.0,30.3156,1.0,2008-07-18,07,JJA,IT-Noe +1354,1661,20080719,17.957,1.0,23.887,1.0,2008-07-19,07,JJA,IT-Noe +1355,1662,20080720,17.865,1.0,30.1633,1.0,2008-07-20,07,JJA,IT-Noe +1356,1663,20080721,17.805,1.0,22.3017,1.0,2008-07-21,07,JJA,IT-Noe +1357,1664,20080722,17.76,1.0,15.2957,1.0,2008-07-22,07,JJA,IT-Noe +1358,1665,20080723,17.67,1.0,15.4046,1.0,2008-07-23,07,JJA,IT-Noe +1359,1666,20080724,17.661,1.0,18.9782,1.0,2008-07-24,07,JJA,IT-Noe +1360,1667,20080725,17.613,1.0,16.4412,1.0,2008-07-25,07,JJA,IT-Noe +1361,1668,20080726,17.601,1.0,9.8149,1.0,2008-07-26,07,JJA,IT-Noe +1362,1669,20080727,17.601,1.0,10.3548,1.0,2008-07-27,07,JJA,IT-Noe +1363,1670,20080728,17.558,1.0,17.3991,1.0,2008-07-28,07,JJA,IT-Noe +1364,1671,20080729,17.572,1.0,27.6756,1.0,2008-07-29,07,JJA,IT-Noe +1365,1672,20080730,17.577,1.0,26.0442,1.0,2008-07-30,07,JJA,IT-Noe +1366,1673,20080731,17.565,1.0,27.4047,1.0,2008-07-31,07,JJA,IT-Noe +1367,1674,20080801,17.54,1.0,27.789,1.0,2008-08-01,08,JJA,IT-Noe +1368,1675,20080802,17.494,1.0,23.0893,1.0,2008-08-02,08,JJA,IT-Noe +1369,1676,20080803,17.465,1.0,18.457,1.0,2008-08-03,08,JJA,IT-Noe +1370,1677,20080804,17.431,1.0,14.5132,1.0,2008-08-04,08,JJA,IT-Noe +1371,1678,20080805,17.414,1.0,24.569,1.0,2008-08-05,08,JJA,IT-Noe +1372,1679,20080806,17.401,1.0,36.3352,1.0,2008-08-06,08,JJA,IT-Noe +1373,1680,20080807,17.408,1.0,32.4409,1.0,2008-08-07,08,JJA,IT-Noe +1374,1681,20080808,17.405,1.0,11.0961,1.0,2008-08-08,08,JJA,IT-Noe +1375,1682,20080809,17.285,1.0,22.3971,1.0,2008-08-09,08,JJA,IT-Noe +1376,1683,20080810,17.233,1.0,13.5953,1.0,2008-08-10,08,JJA,IT-Noe +1377,1684,20080811,17.224,1.0,21.7512,1.0,2008-08-11,08,JJA,IT-Noe +1378,1685,20080812,17.222,1.0,7.66291,1.0,2008-08-12,08,JJA,IT-Noe +1379,1686,20080813,17.26,1.0,9.05244,1.0,2008-08-13,08,JJA,IT-Noe +1380,1687,20080814,17.236,1.0,23.6523,1.0,2008-08-14,08,JJA,IT-Noe +1381,1688,20080815,17.11,1.0,23.4187,1.0,2008-08-15,08,JJA,IT-Noe +1382,1689,20080816,17.053,1.0,16.4584,1.0,2008-08-16,08,JJA,IT-Noe +1383,1690,20080817,17.13,1.0,15.8942,1.0,2008-08-17,08,JJA,IT-Noe +1384,1691,20080818,17.115,1.0,16.2524,1.0,2008-08-18,08,JJA,IT-Noe +1385,1692,20080819,17.12,1.0,19.2029,1.0,2008-08-19,08,JJA,IT-Noe +1386,1693,20080820,17.133,1.0,17.4395,1.0,2008-08-20,08,JJA,IT-Noe +1387,1694,20080821,17.071,1.0,15.6138,1.0,2008-08-21,08,JJA,IT-Noe +1388,1695,20080822,17.011,1.0,15.0108,1.0,2008-08-22,08,JJA,IT-Noe +1389,1696,20080823,17.007,1.0,10.6266,1.0,2008-08-23,08,JJA,IT-Noe +1390,1697,20080824,16.97,1.0,12.8181,1.0,2008-08-24,08,JJA,IT-Noe +1391,1698,20080825,16.925,1.0,14.725,1.0,2008-08-25,08,JJA,IT-Noe +1392,1699,20080826,16.939,1.0,17.3742,1.0,2008-08-26,08,JJA,IT-Noe +1393,1700,20080827,16.949,1.0,15.1244,1.0,2008-08-27,08,JJA,IT-Noe +1394,1701,20080828,16.935,1.0,13.8831,1.0,2008-08-28,08,JJA,IT-Noe +1395,1702,20080829,16.926,1.0,15.5103,1.0,2008-08-29,08,JJA,IT-Noe +1396,1703,20080830,16.899,1.0,24.0785,1.0,2008-08-30,08,JJA,IT-Noe +1397,1704,20080831,16.905,1.0,7.53398,1.0,2008-08-31,08,JJA,IT-Noe +1624,1980,20090603,24.093,0.875,71.8952,1.0,2009-06-03,06,JJA,IT-Noe +1625,1981,20090604,23.942,1.0,76.8011,1.0,2009-06-04,06,JJA,IT-Noe +1626,1982,20090605,23.633,1.0,65.5883,1.0,2009-06-05,06,JJA,IT-Noe +1627,1983,20090606,23.338,1.0,60.3216,1.0,2009-06-06,06,JJA,IT-Noe +1628,1984,20090607,23.056,1.0,63.8135,1.0,2009-06-07,06,JJA,IT-Noe +1629,1985,20090608,22.847,1.0,58.2835,1.0,2009-06-08,06,JJA,IT-Noe +1630,1986,20090609,23.608,1.0,54.3174,1.0,2009-06-09,06,JJA,IT-Noe +1631,1987,20090610,23.955,1.0,79.2566,1.0,2009-06-10,06,JJA,IT-Noe +1632,1988,20090611,23.156,1.0,76.3268,1.0,2009-06-11,06,JJA,IT-Noe +1633,1989,20090612,22.636,1.0,76.8634,1.0,2009-06-12,06,JJA,IT-Noe +1634,1990,20090613,22.198,1.0,61.3864,1.0,2009-06-13,06,JJA,IT-Noe +1635,1991,20090614,21.872,1.0,77.9007,1.0,2009-06-14,06,JJA,IT-Noe +1636,1992,20090615,21.63,1.0,87.907,1.0,2009-06-15,06,JJA,IT-Noe +1637,1993,20090616,21.406,1.0,84.808,1.0,2009-06-16,06,JJA,IT-Noe +1638,1994,20090617,21.176,1.0,75.1184,1.0,2009-06-17,06,JJA,IT-Noe +1639,1995,20090618,20.996,1.0,74.3298,1.0,2009-06-18,06,JJA,IT-Noe +1640,1996,20090619,20.864,1.0,60.0158,1.0,2009-06-19,06,JJA,IT-Noe +1641,1997,20090620,20.765,1.0,71.208,1.0,2009-06-20,06,JJA,IT-Noe +1642,1998,20090621,20.492,1.0,48.1813,1.0,2009-06-21,06,JJA,IT-Noe +1643,1999,20090622,20.307,1.0,58.0358,1.0,2009-06-22,06,JJA,IT-Noe +1644,2000,20090623,20.28,1.0,48.1409,1.0,2009-06-23,06,JJA,IT-Noe +1645,2001,20090624,20.207,1.0,54.5586,1.0,2009-06-24,06,JJA,IT-Noe +1646,2002,20090625,20.117,1.0,44.4647,1.0,2009-06-25,06,JJA,IT-Noe +1647,2003,20090626,20.018,1.0,46.9823,1.0,2009-06-26,06,JJA,IT-Noe +1648,2004,20090627,20.024,1.0,48.2355,1.0,2009-06-27,06,JJA,IT-Noe +1649,2005,20090628,19.958,1.0,44.8658,1.0,2009-06-28,06,JJA,IT-Noe +1650,2006,20090629,19.938,1.0,35.4222,1.0,2009-06-29,06,JJA,IT-Noe +1651,2007,20090630,19.863,1.0,39.9178,1.0,2009-06-30,06,JJA,IT-Noe +1652,2008,20090701,19.851,1.0,49.5164,1.0,2009-07-01,07,JJA,IT-Noe +1653,2009,20090702,19.788,1.0,41.2748,1.0,2009-07-02,07,JJA,IT-Noe +1654,2010,20090703,19.721,1.0,47.4519,1.0,2009-07-03,07,JJA,IT-Noe +1655,2011,20090704,19.668,1.0,46.6201,1.0,2009-07-04,07,JJA,IT-Noe +1656,2012,20090705,19.639,1.0,52.5722,1.0,2009-07-05,07,JJA,IT-Noe +1657,2013,20090706,19.543,1.0,44.7794,1.0,2009-07-06,07,JJA,IT-Noe +1658,2014,20090707,19.425,1.0,42.6696,1.0,2009-07-07,07,JJA,IT-Noe +1659,2015,20090708,19.377,1.0,43.277,1.0,2009-07-08,07,JJA,IT-Noe +1660,2016,20090709,19.294,1.0,45.0607,1.0,2009-07-09,07,JJA,IT-Noe +1661,2017,20090710,19.209,1.0,43.7797,1.0,2009-07-10,07,JJA,IT-Noe +1662,2018,20090711,19.138,1.0,43.2854,1.0,2009-07-11,07,JJA,IT-Noe +1663,2019,20090712,19.065,1.0,32.6618,1.0,2009-07-12,07,JJA,IT-Noe +1664,2020,20090713,19.071,1.0,39.2007,1.0,2009-07-13,07,JJA,IT-Noe +1665,2021,20090714,19.077,1.0,44.5955,1.0,2009-07-14,07,JJA,IT-Noe +1666,2022,20090715,19.074,1.0,30.6013,1.0,2009-07-15,07,JJA,IT-Noe +1667,2023,20090716,19.018,1.0,38.5589,1.0,2009-07-16,07,JJA,IT-Noe +1668,2024,20090717,18.983,1.0,33.2499,1.0,2009-07-17,07,JJA,IT-Noe +1669,2025,20090718,18.825,1.0,39.4044,1.0,2009-07-18,07,JJA,IT-Noe +1670,2026,20090719,18.695,1.0,25.3394,1.0,2009-07-19,07,JJA,IT-Noe +1671,2027,20090720,18.631,1.0,30.4286,1.0,2009-07-20,07,JJA,IT-Noe +1672,2028,20090721,18.631,1.0,48.934,1.0,2009-07-21,07,JJA,IT-Noe +1673,2029,20090722,18.62,1.0,36.1548,1.0,2009-07-22,07,JJA,IT-Noe +1674,2030,20090723,18.652,1.0,18.4007,1.0,2009-07-23,07,JJA,IT-Noe +1675,2031,20090724,18.642,1.0,22.1009,1.0,2009-07-24,07,JJA,IT-Noe +1676,2032,20090725,18.594,1.0,27.844,1.0,2009-07-25,07,JJA,IT-Noe +1677,2033,20090726,18.505,1.0,32.6658,1.0,2009-07-26,07,JJA,IT-Noe +1678,2034,20090727,18.43,1.0,46.2288,1.0,2009-07-27,07,JJA,IT-Noe +1679,2035,20090728,18.484,1.0,35.8478,1.0,2009-07-28,07,JJA,IT-Noe +1680,2036,20090729,18.494,1.0,30.5866,1.0,2009-07-29,07,JJA,IT-Noe +1681,2037,20090730,18.465,1.0,23.8464,1.0,2009-07-30,07,JJA,IT-Noe +1682,2038,20090731,18.402,1.0,25.2451,1.0,2009-07-31,07,JJA,IT-Noe +1683,2039,20090801,18.372,1.0,32.8334,1.0,2009-08-01,08,JJA,IT-Noe +1684,2040,20090802,18.378,1.0,24.289,1.0,2009-08-02,08,JJA,IT-Noe +1685,2041,20090803,18.249,1.0,28.0197,1.0,2009-08-03,08,JJA,IT-Noe +1686,2042,20090804,18.187,1.0,33.5651,1.0,2009-08-04,08,JJA,IT-Noe +1687,2043,20090805,18.202,1.0,26.0742,1.0,2009-08-05,08,JJA,IT-Noe +1688,2044,20090806,18.208,1.0,29.4547,1.0,2009-08-06,08,JJA,IT-Noe +1689,2045,20090807,18.228,1.0,22.2488,1.0,2009-08-07,08,JJA,IT-Noe +1690,2046,20090808,18.216,1.0,20.0819,1.0,2009-08-08,08,JJA,IT-Noe +1691,2047,20090809,18.2,1.0,17.521,1.0,2009-08-09,08,JJA,IT-Noe +1692,2048,20090810,18.165,1.0,19.5969,1.0,2009-08-10,08,JJA,IT-Noe +1693,2049,20090811,18.156,1.0,29.5449,1.0,2009-08-11,08,JJA,IT-Noe +1694,2050,20090812,18.092,1.0,22.3184,1.0,2009-08-12,08,JJA,IT-Noe +1695,2051,20090813,18.055,1.0,18.9419,1.0,2009-08-13,08,JJA,IT-Noe +1696,2052,20090814,18.146,1.0,26.4423,1.0,2009-08-14,08,JJA,IT-Noe +1697,2053,20090815,18.172,1.0,29.7908,1.0,2009-08-15,08,JJA,IT-Noe +1698,2054,20090816,18.165,1.0,21.5412,1.0,2009-08-16,08,JJA,IT-Noe +1699,2055,20090817,18.099,1.0,23.8558,1.0,2009-08-17,08,JJA,IT-Noe +1700,2056,20090818,18.06,1.0,18.5233,1.0,2009-08-18,08,JJA,IT-Noe +1701,2057,20090819,18.071,1.0,28.2236,1.0,2009-08-19,08,JJA,IT-Noe +1702,2058,20090820,18.073,1.0,34.4218,1.0,2009-08-20,08,JJA,IT-Noe +1703,2059,20090821,18.068,1.0,19.5789,1.0,2009-08-21,08,JJA,IT-Noe +1704,2060,20090822,18.024,1.0,17.0893,1.0,2009-08-22,08,JJA,IT-Noe +1705,2061,20090823,18.027,1.0,21.7637,1.0,2009-08-23,08,JJA,IT-Noe +1706,2062,20090824,18.001,1.0,27.8045,1.0,2009-08-24,08,JJA,IT-Noe +1707,2063,20090825,18.014,1.0,32.3364,1.0,2009-08-25,08,JJA,IT-Noe +1708,2064,20090826,18.029,1.0,12.2746,1.0,2009-08-26,08,JJA,IT-Noe +1709,2065,20090827,18.0,1.0,21.9937,1.0,2009-08-27,08,JJA,IT-Noe +1710,2066,20090828,17.969,1.0,16.0313,1.0,2009-08-28,08,JJA,IT-Noe +1711,2067,20090829,17.96,1.0,28.5514,1.0,2009-08-29,08,JJA,IT-Noe +1712,2068,20090830,17.905,1.0,24.4381,1.0,2009-08-30,08,JJA,IT-Noe +1713,2069,20090831,17.852,1.0,18.1004,1.0,2009-08-31,08,JJA,IT-Noe +1927,2343,20100601,26.288,1.0,42.7314,1.0,2010-06-01,06,JJA,IT-Noe +1928,2344,20100602,25.747,1.0,34.6493,1.0,2010-06-02,06,JJA,IT-Noe +1929,2345,20100603,25.32,1.0,30.3995,1.0,2010-06-03,06,JJA,IT-Noe +1930,2346,20100604,24.932,1.0,22.1567,1.0,2010-06-04,06,JJA,IT-Noe +1931,2347,20100605,24.726,1.0,20.5852,1.0,2010-06-05,06,JJA,IT-Noe +1932,2348,20100606,24.523,1.0,40.5771,1.0,2010-06-06,06,JJA,IT-Noe +1933,2349,20100607,24.342,1.0,49.2457,1.0,2010-06-07,06,JJA,IT-Noe +1934,2350,20100608,24.119,1.0,76.6793,1.0,2010-06-08,06,JJA,IT-Noe +1935,2351,20100609,23.934,1.0,81.3724,1.0,2010-06-09,06,JJA,IT-Noe +1936,2352,20100610,23.783,1.0,63.3276,1.0,2010-06-10,06,JJA,IT-Noe +1937,2353,20100611,23.629,1.0,56.3612,1.0,2010-06-11,06,JJA,IT-Noe +1938,2354,20100612,23.54,1.0,56.2362,1.0,2010-06-12,06,JJA,IT-Noe +1939,2355,20100613,23.389,1.0,50.189,1.0,2010-06-13,06,JJA,IT-Noe +1940,2356,20100614,25.933,1.0,60.0009,1.0,2010-06-14,06,JJA,IT-Noe +1941,2357,20100615,45.141,1.0,59.9366,1.0,2010-06-15,06,JJA,IT-Noe +1942,2358,20100616,43.626,1.0,125.474,1.0,2010-06-16,06,JJA,IT-Noe +1943,2359,20100617,42.058,1.0,90.9628,1.0,2010-06-17,06,JJA,IT-Noe +1944,2360,20100618,40.343,1.0,89.9082,1.0,2010-06-18,06,JJA,IT-Noe +1945,2361,20100619,38.664,1.0,90.5581,1.0,2010-06-19,06,JJA,IT-Noe +1946,2362,20100620,36.636,1.0,142.533,0.958333,2010-06-20,06,JJA,IT-Noe +1947,2363,20100621,34.963,1.0,51.3066,1.0,2010-06-21,06,JJA,IT-Noe +1948,2364,20100622,33.828,1.0,67.6042,1.0,2010-06-22,06,JJA,IT-Noe +1949,2365,20100623,32.796,1.0,47.2776,1.0,2010-06-23,06,JJA,IT-Noe +1950,2366,20100624,31.613,1.0,46.983,0.875,2010-06-24,06,JJA,IT-Noe +1951,2367,20100625,30.491,1.0,38.9641,0.8125,2010-06-25,06,JJA,IT-Noe +1952,2368,20100626,29.391,1.0,67.4332,1.0,2010-06-26,06,JJA,IT-Noe +1953,2369,20100627,28.367,1.0,68.2168,1.0,2010-06-27,06,JJA,IT-Noe +1954,2370,20100628,27.446,1.0,53.4932,1.0,2010-06-28,06,JJA,IT-Noe +1955,2371,20100629,26.759,1.0,24.6736,1.0,2010-06-29,06,JJA,IT-Noe +1956,2372,20100630,26.228,1.0,26.8023,1.0,2010-06-30,06,JJA,IT-Noe +1957,2375,20100703,25.02,1.0,49.7606,1.0,2010-07-03,07,JJA,IT-Noe +1958,2376,20100704,24.701,1.0,57.2174,1.0,2010-07-04,07,JJA,IT-Noe +1959,2377,20100705,24.485,1.0,22.6685,1.0,2010-07-05,07,JJA,IT-Noe +1960,2378,20100706,24.272,1.0,61.1404,1.0,2010-07-06,07,JJA,IT-Noe +1961,2379,20100707,24.113,1.0,75.6022,1.0,2010-07-07,07,JJA,IT-Noe +1962,2380,20100708,23.919,1.0,73.7757,1.0,2010-07-08,07,JJA,IT-Noe +1963,2381,20100709,23.865,1.0,75.0533,1.0,2010-07-09,07,JJA,IT-Noe +1964,2382,20100710,23.731,1.0,74.8713,1.0,2010-07-10,07,JJA,IT-Noe +1965,2383,20100711,23.584,1.0,72.0024,1.0,2010-07-11,07,JJA,IT-Noe +1966,2384,20100712,23.411,1.0,75.966,1.0,2010-07-12,07,JJA,IT-Noe +1967,2385,20100713,23.219,1.0,73.7334,1.0,2010-07-13,07,JJA,IT-Noe +1968,2386,20100714,23.133,1.0,62.3162,1.0,2010-07-14,07,JJA,IT-Noe +1969,2387,20100715,23.027,1.0,60.9474,1.0,2010-07-15,07,JJA,IT-Noe +1970,2388,20100716,22.928,1.0,74.511,1.0,2010-07-16,07,JJA,IT-Noe +1971,2389,20100717,22.849,1.0,60.8515,1.0,2010-07-17,07,JJA,IT-Noe +1972,2390,20100718,22.731,1.0,68.802,1.0,2010-07-18,07,JJA,IT-Noe +1973,2391,20100719,22.585,1.0,47.5227,1.0,2010-07-19,07,JJA,IT-Noe +1974,2392,20100720,22.51,1.0,49.3703,1.0,2010-07-20,07,JJA,IT-Noe +1975,2393,20100721,22.453,1.0,59.7527,1.0,2010-07-21,07,JJA,IT-Noe +1976,2394,20100722,22.362,1.0,73.2653,1.0,2010-07-22,07,JJA,IT-Noe +1977,2395,20100723,22.315,1.0,42.3791,1.0,2010-07-23,07,JJA,IT-Noe +1978,2396,20100724,22.124,1.0,47.0461,1.0,2010-07-24,07,JJA,IT-Noe +1979,2397,20100725,21.985,1.0,37.8639,1.0,2010-07-25,07,JJA,IT-Noe +1980,2398,20100726,21.874,1.0,25.2974,1.0,2010-07-26,07,JJA,IT-Noe +1981,2399,20100727,21.768,1.0,20.0609,1.0,2010-07-27,07,JJA,IT-Noe +1982,2400,20100728,21.704,1.0,32.3634,1.0,2010-07-28,07,JJA,IT-Noe +1983,2401,20100729,21.636,1.0,40.1843,1.0,2010-07-29,07,JJA,IT-Noe +1984,2402,20100730,21.536,1.0,45.9892,1.0,2010-07-30,07,JJA,IT-Noe +1985,2403,20100731,21.494,1.0,43.6449,1.0,2010-07-31,07,JJA,IT-Noe +1986,2404,20100801,21.471,1.0,45.9773,1.0,2010-08-01,08,JJA,IT-Noe +1987,2405,20100802,21.466,1.0,33.4099,1.0,2010-08-02,08,JJA,IT-Noe +1988,2406,20100803,21.458,1.0,34.9898,1.0,2010-08-03,08,JJA,IT-Noe +1989,2407,20100804,21.386,1.0,37.6811,1.0,2010-08-04,08,JJA,IT-Noe +1990,2408,20100805,21.282,1.0,33.0465,1.0,2010-08-05,08,JJA,IT-Noe +1991,2409,20100806,21.116,1.0,33.7643,1.0,2010-08-06,08,JJA,IT-Noe +1992,2410,20100807,21.01,1.0,31.7163,1.0,2010-08-07,08,JJA,IT-Noe +1993,2411,20100808,20.956,1.0,16.0893,1.0,2010-08-08,08,JJA,IT-Noe +1994,2412,20100809,20.874,1.0,14.2477,1.0,2010-08-09,08,JJA,IT-Noe +1995,2413,20100810,20.855,1.0,27.7802,1.0,2010-08-10,08,JJA,IT-Noe +1996,2414,20100811,20.931,1.0,28.2684,1.0,2010-08-11,08,JJA,IT-Noe +1997,2415,20100812,20.835,1.0,23.3028,1.0,2010-08-12,08,JJA,IT-Noe +1998,2416,20100813,20.849,1.0,29.5474,1.0,2010-08-13,08,JJA,IT-Noe +1999,2417,20100814,27.186,1.0,24.9564,1.0,2010-08-14,08,JJA,IT-Noe +2000,2418,20100815,30.163,1.0,41.2796,1.0,2010-08-15,08,JJA,IT-Noe +2001,2419,20100816,28.085,1.0,42.2659,1.0,2010-08-16,08,JJA,IT-Noe +2002,2420,20100817,26.245,1.0,46.1072,1.0,2010-08-17,08,JJA,IT-Noe +2003,2421,20100818,24.676,1.0,32.5294,1.0,2010-08-18,08,JJA,IT-Noe +2004,2422,20100819,23.697,1.0,64.3483,1.0,2010-08-19,08,JJA,IT-Noe +2005,2423,20100820,22.945,1.0,50.9634,1.0,2010-08-20,08,JJA,IT-Noe +2006,2424,20100821,22.431,1.0,35.274,1.0,2010-08-21,08,JJA,IT-Noe +2007,2425,20100822,22.193,1.0,42.1337,1.0,2010-08-22,08,JJA,IT-Noe +2008,2426,20100823,21.929,1.0,37.7707,1.0,2010-08-23,08,JJA,IT-Noe +2009,2427,20100824,21.719,1.0,36.0253,1.0,2010-08-24,08,JJA,IT-Noe +2010,2428,20100825,21.591,1.0,34.3678,1.0,2010-08-25,08,JJA,IT-Noe +2011,2429,20100826,21.394,1.0,30.9525,1.0,2010-08-26,08,JJA,IT-Noe +2012,2430,20100827,21.249,1.0,29.5278,1.0,2010-08-27,08,JJA,IT-Noe +2013,2431,20100828,21.195,1.0,39.2161,1.0,2010-08-28,08,JJA,IT-Noe +2014,2432,20100829,21.005,1.0,32.051,1.0,2010-08-29,08,JJA,IT-Noe +2015,2433,20100830,20.823,1.0,35.7789,1.0,2010-08-30,08,JJA,IT-Noe +2016,2434,20100831,20.662,1.0,22.5125,1.0,2010-08-31,08,JJA,IT-Noe +2481,3074,20120601,32.428,1.0,56.1689,1.0,2012-06-01,06,JJA,IT-Noe +2482,3075,20120602,31.242,1.0,66.517,0.979167,2012-06-02,06,JJA,IT-Noe +2483,3076,20120603,30.089,1.0,88.7693,1.0,2012-06-03,06,JJA,IT-Noe +2484,3077,20120604,29.075,1.0,74.9704,1.0,2012-06-04,06,JJA,IT-Noe +2485,3078,20120605,28.114,1.0,64.5109,1.0,2012-06-05,06,JJA,IT-Noe +2486,3079,20120606,27.565,1.0,48.0703,1.0,2012-06-06,06,JJA,IT-Noe +2487,3080,20120607,27.009,1.0,72.9353,1.0,2012-06-07,06,JJA,IT-Noe +2488,3081,20120608,26.51,1.0,55.838,1.0,2012-06-08,06,JJA,IT-Noe +2489,3082,20120609,26.154,1.0,51.132,1.0,2012-06-09,06,JJA,IT-Noe +2490,3083,20120610,25.81,1.0,52.7956,1.0,2012-06-10,06,JJA,IT-Noe +2491,3084,20120611,25.672,1.0,35.9115,1.0,2012-06-11,06,JJA,IT-Noe +2492,3085,20120612,25.561,1.0,52.35,1.0,2012-06-12,06,JJA,IT-Noe +2493,3086,20120613,25.317,1.0,63.4984,1.0,2012-06-13,06,JJA,IT-Noe +2494,3087,20120614,25.009,1.0,57.5851,1.0,2012-06-14,06,JJA,IT-Noe +2495,3088,20120615,24.916,1.0,66.8211,1.0,2012-06-15,06,JJA,IT-Noe +2496,3089,20120616,24.839,1.0,69.2869,1.0,2012-06-16,06,JJA,IT-Noe +2497,3090,20120617,24.69,1.0,50.3736,1.0,2012-06-17,06,JJA,IT-Noe +2498,3091,20120618,24.59,1.0,48.0506,1.0,2012-06-18,06,JJA,IT-Noe +2499,3092,20120619,24.493,1.0,57.2847,1.0,2012-06-19,06,JJA,IT-Noe +2500,3093,20120620,24.434,1.0,50.752,1.0,2012-06-20,06,JJA,IT-Noe +2501,3094,20120621,24.458,1.0,44.9588,1.0,2012-06-21,06,JJA,IT-Noe +2502,3095,20120622,24.401,1.0,46.6133,1.0,2012-06-22,06,JJA,IT-Noe +2503,3096,20120623,24.224,1.0,39.8313,1.0,2012-06-23,06,JJA,IT-Noe +2504,3097,20120624,24.129,1.0,47.847,1.0,2012-06-24,06,JJA,IT-Noe +2505,3098,20120625,24.069,1.0,54.8777,1.0,2012-06-25,06,JJA,IT-Noe +2506,3099,20120626,24.124,1.0,34.9666,1.0,2012-06-26,06,JJA,IT-Noe +2507,3100,20120627,24.053,1.0,23.853,1.0,2012-06-27,06,JJA,IT-Noe +2508,3101,20120628,23.983,1.0,38.1019,1.0,2012-06-28,06,JJA,IT-Noe +2509,3102,20120629,23.965,1.0,64.7724,1.0,2012-06-29,06,JJA,IT-Noe +2510,3103,20120630,23.947,1.0,69.318,1.0,2012-06-30,06,JJA,IT-Noe +2511,3104,20120701,23.919,1.0,64.1966,1.0,2012-07-01,07,JJA,IT-Noe +2512,3105,20120702,23.89,1.0,39.4154,1.0,2012-07-02,07,JJA,IT-Noe +2513,3106,20120703,23.662,1.0,45.5501,1.0,2012-07-03,07,JJA,IT-Noe +2514,3107,20120704,23.568,1.0,39.8267,1.0,2012-07-04,07,JJA,IT-Noe +2515,3108,20120705,23.537,1.0,47.3712,1.0,2012-07-05,07,JJA,IT-Noe +2516,3109,20120706,24.035,1.0,30.0449,1.0,2012-07-06,07,JJA,IT-Noe +2517,3110,20120707,32.139,0.958333,51.1574,1.0,2012-07-07,07,JJA,IT-Noe +2518,3111,20120708,25.783,0.979167,56.6524,0.979167,2012-07-08,07,JJA,IT-Noe +2519,3112,20120709,23.413,1.0,33.237,1.0,2012-07-09,07,JJA,IT-Noe +2520,3113,20120710,23.25,1.0,47.7577,1.0,2012-07-10,07,JJA,IT-Noe +2521,3114,20120711,23.253,1.0,29.7492,1.0,2012-07-11,07,JJA,IT-Noe +2522,3115,20120712,23.241,1.0,28.8607,1.0,2012-07-12,07,JJA,IT-Noe +2523,3116,20120713,23.126,1.0,41.2481,1.0,2012-07-13,07,JJA,IT-Noe +2524,3117,20120714,22.997,1.0,45.8972,1.0,2012-07-14,07,JJA,IT-Noe +2525,3118,20120715,22.972,1.0,32.9456,1.0,2012-07-15,07,JJA,IT-Noe +2526,3119,20120716,22.871,1.0,38.0207,1.0,2012-07-16,07,JJA,IT-Noe +2527,3120,20120717,22.704,1.0,28.8392,1.0,2012-07-17,07,JJA,IT-Noe +2528,3121,20120718,22.628,1.0,23.3116,1.0,2012-07-18,07,JJA,IT-Noe +2529,3122,20120719,22.639,1.0,24.2153,1.0,2012-07-19,07,JJA,IT-Noe +2530,3123,20120720,22.583,1.0,29.6823,1.0,2012-07-20,07,JJA,IT-Noe +2531,3124,20120721,22.579,1.0,26.0238,1.0,2012-07-21,07,JJA,IT-Noe +2532,3125,20120722,22.478,1.0,31.6481,1.0,2012-07-22,07,JJA,IT-Noe +2533,3126,20120723,22.241,1.0,59.2981,1.0,2012-07-23,07,JJA,IT-Noe +2534,3127,20120724,22.128,1.0,37.8508,1.0,2012-07-24,07,JJA,IT-Noe +2535,3128,20120725,22.25,1.0,30.0523,1.0,2012-07-25,07,JJA,IT-Noe +2536,3129,20120726,22.374,1.0,48.815,1.0,2012-07-26,07,JJA,IT-Noe +2537,3130,20120727,22.475,1.0,52.8693,1.0,2012-07-27,07,JJA,IT-Noe +2538,3131,20120728,22.462,1.0,21.0884,1.0,2012-07-28,07,JJA,IT-Noe +2539,3132,20120729,22.498,1.0,25.3438,1.0,2012-07-29,07,JJA,IT-Noe +2540,3133,20120730,22.376,1.0,26.949,1.0,2012-07-30,07,JJA,IT-Noe +2541,3134,20120731,22.277,1.0,28.5595,1.0,2012-07-31,07,JJA,IT-Noe +2542,3135,20120801,22.227,1.0,40.2482,1.0,2012-08-01,08,JJA,IT-Noe +2543,3136,20120802,22.17,1.0,32.247,1.0,2012-08-02,08,JJA,IT-Noe +2544,3137,20120803,22.113,1.0,43.0524,1.0,2012-08-03,08,JJA,IT-Noe +2545,3138,20120804,22.09,1.0,20.551,1.0,2012-08-04,08,JJA,IT-Noe +2546,3139,20120805,22.042,1.0,19.6998,1.0,2012-08-05,08,JJA,IT-Noe +2547,3140,20120806,21.991,1.0,24.6481,1.0,2012-08-06,08,JJA,IT-Noe +2548,3141,20120807,21.946,1.0,28.4546,1.0,2012-08-07,08,JJA,IT-Noe +2549,3142,20120808,21.8,1.0,27.9306,1.0,2012-08-08,08,JJA,IT-Noe +2550,3143,20120809,21.754,1.0,25.1788,1.0,2012-08-09,08,JJA,IT-Noe +2551,3144,20120810,21.727,1.0,23.4577,1.0,2012-08-10,08,JJA,IT-Noe +2552,3145,20120811,21.685,1.0,17.5717,1.0,2012-08-11,08,JJA,IT-Noe +2553,3146,20120812,21.592,1.0,18.6733,1.0,2012-08-12,08,JJA,IT-Noe +2554,3147,20120813,21.57,1.0,16.6516,1.0,2012-08-13,08,JJA,IT-Noe +2555,3148,20120814,21.55,1.0,16.6128,1.0,2012-08-14,08,JJA,IT-Noe +2556,3149,20120815,21.494,1.0,15.0903,1.0,2012-08-15,08,JJA,IT-Noe +2557,3150,20120816,21.535,1.0,11.7384,1.0,2012-08-16,08,JJA,IT-Noe +2558,3151,20120817,21.553,1.0,23.8278,1.0,2012-08-17,08,JJA,IT-Noe +2559,3152,20120818,21.552,1.0,20.2947,1.0,2012-08-18,08,JJA,IT-Noe +2560,3153,20120819,21.549,1.0,31.7209,1.0,2012-08-19,08,JJA,IT-Noe +2561,3154,20120820,21.52,1.0,26.7169,1.0,2012-08-20,08,JJA,IT-Noe +2562,3155,20120821,21.4,1.0,24.3819,1.0,2012-08-21,08,JJA,IT-Noe +2563,3156,20120822,21.321,1.0,25.525,1.0,2012-08-22,08,JJA,IT-Noe +2564,3157,20120823,21.263,1.0,24.9636,1.0,2012-08-23,08,JJA,IT-Noe +2565,3158,20120824,21.254,1.0,42.6191,1.0,2012-08-24,08,JJA,IT-Noe +2566,3159,20120825,21.199,1.0,8.84875,1.0,2012-08-25,08,JJA,IT-Noe +2567,3160,20120826,21.179,1.0,25.8054,1.0,2012-08-26,08,JJA,IT-Noe +2568,3161,20120827,21.063,1.0,28.3794,1.0,2012-08-27,08,JJA,IT-Noe +2569,3162,20120828,20.923,1.0,22.7374,1.0,2012-08-28,08,JJA,IT-Noe +2570,3163,20120829,20.941,1.0,19.0377,1.0,2012-08-29,08,JJA,IT-Noe +2571,3164,20120830,20.958,1.0,25.2274,1.0,2012-08-30,08,JJA,IT-Noe +2572,3165,20120831,20.911,1.0,20.6578,1.0,2012-08-31,08,JJA,IT-Noe +3097,3805,20140602,22.428,0.916667,48.5124,1.0,2014-06-02,06,JJA,IT-Noe +3098,3806,20140603,22.381,1.0,39.7968,1.0,2014-06-03,06,JJA,IT-Noe +3099,3807,20140604,22.461,1.0,36.5785,1.0,2014-06-04,06,JJA,IT-Noe +3100,3808,20140605,22.381,1.0,47.8405,1.0,2014-06-05,06,JJA,IT-Noe +3101,3809,20140606,22.322,1.0,56.2326,1.0,2014-06-06,06,JJA,IT-Noe +3102,3810,20140607,22.33,1.0,58.5057,1.0,2014-06-07,06,JJA,IT-Noe +3103,3811,20140608,22.305,1.0,60.1735,1.0,2014-06-08,06,JJA,IT-Noe +3104,3812,20140609,22.244,1.0,46.8513,1.0,2014-06-09,06,JJA,IT-Noe +3105,3813,20140610,22.176,1.0,64.6798,1.0,2014-06-10,06,JJA,IT-Noe +3106,3814,20140611,22.091,1.0,43.6483,1.0,2014-06-11,06,JJA,IT-Noe +3107,3815,20140612,21.929,1.0,64.4126,1.0,2014-06-12,06,JJA,IT-Noe +3108,3816,20140613,21.906,1.0,28.8369,1.0,2014-06-13,06,JJA,IT-Noe +3109,3817,20140614,21.906,1.0,35.3575,1.0,2014-06-14,06,JJA,IT-Noe +3110,3818,20140615,21.804,1.0,35.5143,1.0,2014-06-15,06,JJA,IT-Noe +3111,3819,20140616,25.971,1.0,56.0168,0.979167,2014-06-16,06,JJA,IT-Noe +3112,3820,20140617,28.198,1.0,67.9861,1.0,2014-06-17,06,JJA,IT-Noe +3113,3821,20140618,27.912,1.0,57.2306,1.0,2014-06-18,06,JJA,IT-Noe +3114,3822,20140619,29.519,1.0,76.493,1.0,2014-06-19,06,JJA,IT-Noe +3115,3823,20140620,28.094,1.0,67.1483,0.979167,2014-06-20,06,JJA,IT-Noe +3116,3824,20140621,27.093,1.0,59.911,0.979167,2014-06-21,06,JJA,IT-Noe +3117,3825,20140622,26.186,1.0,66.0802,1.0,2014-06-22,06,JJA,IT-Noe +3118,3826,20140623,25.301,1.0,60.2254,1.0,2014-06-23,06,JJA,IT-Noe +3119,3827,20140624,24.52,1.0,55.7428,1.0,2014-06-24,06,JJA,IT-Noe +3120,3828,20140625,24.008,1.0,63.6236,1.0,2014-06-25,06,JJA,IT-Noe +3121,3829,20140626,23.596,1.0,59.15,1.0,2014-06-26,06,JJA,IT-Noe +3122,3830,20140627,23.346,1.0,58.7595,1.0,2014-06-27,06,JJA,IT-Noe +3123,3831,20140628,23.097,1.0,66.8426,1.0,2014-06-28,06,JJA,IT-Noe +3124,3832,20140629,22.866,1.0,52.226,1.0,2014-06-29,06,JJA,IT-Noe +3125,3833,20140630,22.664,1.0,53.3286,1.0,2014-06-30,06,JJA,IT-Noe +3126,3834,20140701,22.549,1.0,37.3928,1.0,2014-07-01,07,JJA,IT-Noe +3127,3835,20140702,22.439,1.0,44.4722,1.0,2014-07-02,07,JJA,IT-Noe +3128,3836,20140703,22.405,1.0,56.2733,0.979167,2014-07-03,07,JJA,IT-Noe +3129,3837,20140704,22.253,1.0,23.8408,1.0,2014-07-04,07,JJA,IT-Noe +3130,3838,20140705,22.099,1.0,44.1795,1.0,2014-07-05,07,JJA,IT-Noe +3131,3839,20140706,22.067,1.0,50.4379,1.0,2014-07-06,07,JJA,IT-Noe +3132,3840,20140707,21.9,1.0,29.0876,1.0,2014-07-07,07,JJA,IT-Noe +3133,3841,20140708,21.703,1.0,63.242,1.0,2014-07-08,07,JJA,IT-Noe +3134,3842,20140709,21.621,1.0,40.4085,1.0,2014-07-09,07,JJA,IT-Noe +3135,3843,20140710,21.452,1.0,35.6342,1.0,2014-07-10,07,JJA,IT-Noe +3136,3844,20140711,21.28,1.0,31.4482,1.0,2014-07-11,07,JJA,IT-Noe +3137,3845,20140712,21.249,1.0,40.2726,1.0,2014-07-12,07,JJA,IT-Noe +3138,3846,20140713,21.343,1.0,38.4633,1.0,2014-07-13,07,JJA,IT-Noe +3139,3847,20140714,21.37,1.0,33.8334,0.979167,2014-07-14,07,JJA,IT-Noe +3140,3848,20140715,21.345,1.0,28.8188,0.958333,2014-07-15,07,JJA,IT-Noe +3141,3849,20140716,21.309,1.0,20.2762,0.979167,2014-07-16,07,JJA,IT-Noe +3142,3850,20140717,21.279,1.0,28.5089,0.979167,2014-07-17,07,JJA,IT-Noe +3143,3851,20140718,21.245,1.0,32.9111,0.979167,2014-07-18,07,JJA,IT-Noe +3144,3852,20140719,21.209,1.0,28.5477,1.0,2014-07-19,07,JJA,IT-Noe +3145,3854,20140721,20.979,1.0,13.4847,0.895833,2014-07-21,07,JJA,IT-Noe +3146,3855,20140722,20.844,1.0,10.8961,0.958333,2014-07-22,07,JJA,IT-Noe +3147,3856,20140723,20.782,1.0,19.9632,0.9375,2014-07-23,07,JJA,IT-Noe +3148,3857,20140724,20.822,1.0,18.9657,1.0,2014-07-24,07,JJA,IT-Noe +3149,3858,20140725,20.792,1.0,28.9239,0.979167,2014-07-25,07,JJA,IT-Noe +3150,3859,20140726,20.768,1.0,22.9761,0.916667,2014-07-26,07,JJA,IT-Noe +3151,3860,20140727,20.748,1.0,31.5628,0.958333,2014-07-27,07,JJA,IT-Noe +3152,3861,20140728,20.705,1.0,28.4006,0.8125,2014-07-28,07,JJA,IT-Noe +3153,3862,20140729,20.483,1.0,51.1908,0.895833,2014-07-29,07,JJA,IT-Noe +3154,3863,20140730,20.191,1.0,37.266,0.916667,2014-07-30,07,JJA,IT-Noe +3155,3864,20140731,20.34,1.0,30.2485,0.895833,2014-07-31,07,JJA,IT-Noe +3156,3865,20140801,20.551,1.0,29.7221,0.8125,2014-08-01,08,JJA,IT-Noe +3157,3866,20140802,20.481,1.0,29.1729,0.875,2014-08-02,08,JJA,IT-Noe +3158,3867,20140803,20.487,1.0,46.7792,1.0,2014-08-03,08,JJA,IT-Noe +3159,3868,20140804,20.618,1.0,35.3387,0.9375,2014-08-04,08,JJA,IT-Noe +3160,3869,20140805,20.629,1.0,24.7291,0.958333,2014-08-05,08,JJA,IT-Noe +3161,3870,20140806,20.618,1.0,21.1122,0.958333,2014-08-06,08,JJA,IT-Noe +3162,3871,20140807,20.576,1.0,18.5272,0.958333,2014-08-07,08,JJA,IT-Noe +3163,3872,20140808,20.561,1.0,15.3681,0.958333,2014-08-08,08,JJA,IT-Noe +3164,3873,20140809,20.599,1.0,37.7075,0.979167,2014-08-09,08,JJA,IT-Noe +3165,3874,20140810,20.597,1.0,33.9971,0.9375,2014-08-10,08,JJA,IT-Noe +3166,3875,20140811,20.553,1.0,16.1556,0.958333,2014-08-11,08,JJA,IT-Noe +3167,3876,20140812,20.504,1.0,23.2084,0.958333,2014-08-12,08,JJA,IT-Noe +3168,3877,20140813,20.428,1.0,12.5689,1.0,2014-08-13,08,JJA,IT-Noe +3169,3878,20140814,20.346,1.0,23.2333,1.0,2014-08-14,08,JJA,IT-Noe +3170,3879,20140815,20.233,1.0,20.2831,1.0,2014-08-15,08,JJA,IT-Noe +3171,3880,20140816,20.147,1.0,20.6724,1.0,2014-08-16,08,JJA,IT-Noe +3172,3881,20140817,20.057,1.0,15.2236,1.0,2014-08-17,08,JJA,IT-Noe +3173,3882,20140818,20.012,1.0,18.2294,1.0,2014-08-18,08,JJA,IT-Noe +3174,3883,20140819,20.085,1.0,19.2525,1.0,2014-08-19,08,JJA,IT-Noe +3175,3884,20140820,20.052,1.0,13.2211,0.9375,2014-08-20,08,JJA,IT-Noe +3176,3885,20140821,20.028,1.0,15.5162,0.979167,2014-08-21,08,JJA,IT-Noe +3177,3887,20140823,19.963,1.0,8.12073,0.916667,2014-08-23,08,JJA,IT-Noe +3178,3888,20140824,19.887,1.0,14.6201,1.0,2014-08-24,08,JJA,IT-Noe +3179,3889,20140825,19.878,1.0,7.57013,0.875,2014-08-25,08,JJA,IT-Noe +3180,3891,20140827,19.839,1.0,8.96701,0.833333,2014-08-27,08,JJA,IT-Noe +3181,3893,20140829,19.829,1.0,8.15133,0.8125,2014-08-29,08,JJA,IT-Noe +3182,3894,20140830,19.827,1.0,8.72636,0.8125,2014-08-30,08,JJA,IT-Noe +3183,3895,20140831,19.82,1.0,12.3016,0.958333,2014-08-31,08,JJA,IT-Noe diff --git a/test/data/calc_tci_jja_xarray_input.nc b/test/data/calc_tci_jja_xarray_input.nc new file mode 100644 index 00000000..175e11f5 Binary files /dev/null and b/test/data/calc_tci_jja_xarray_input.nc differ diff --git a/test/data/calc_tci_jja_xarray_output.nc b/test/data/calc_tci_jja_xarray_output.nc new file mode 100644 index 00000000..78d60f42 Binary files /dev/null and b/test/data/calc_tci_jja_xarray_output.nc differ diff --git a/test/data/point_stat/point_stat_GRIB1_NAM_GDAS_MASK_SID_120000L_20120409_120000V_val1l2.txt b/test/data/point_stat/point_stat_GRIB1_NAM_GDAS_MASK_SID_120000L_20120409_120000V_val1l2.txt new file mode 100644 index 00000000..735532d2 --- /dev/null +++ b/test/data/point_stat/point_stat_GRIB1_NAM_GDAS_MASK_SID_120000L_20120409_120000V_val1l2.txt @@ -0,0 +1,9 @@ +VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL UFABAR VFABAR UOABAR VOABAR UVFOABAR UVFFABAR UVOOABAR FA_SPEED_BAR OA_SPEED_BAR TOTAL_DIR DIRA_ME DIRA_MAE DIRA_MSE +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC KDEN NEAREST 1 NA NA NA NA VAL1L2 1 0.028193 2.82935 3.975 1.80126 5.20847 8.00603 19.04515 2.82949 4.36408 1 -65.05155 65.05155 4231.70355 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC SID_CO NEAREST 1 NA NA NA NA VAL1L2 80 0.15363 -0.18967 0.42924 -0.67093 2.82714 4.33289 12.74486 1.86527 3.0602 80 -9.33664 68.33537 7105.99676 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC ALLLATLON NEAREST 1 NA NA NA NA VAL1L2 4474 0.022949 -0.049517 -0.22407 0.099405 1.44868 2.48646 6.53755 1.36863 2.21133 4474 11.82836 65.55116 6780.64383 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC LATGE39 NEAREST 1 NA NA NA NA VAL1L2 2511 0.15753 -0.12932 -0.2034 0.067257 1.44861 2.75812 7.45429 1.42761 2.35083 2511 11.46784 69.61895 7486.54656 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC LATLT39 NEAREST 1 NA NA NA NA VAL1L2 1963 -0.14921 0.05256 -0.25051 0.14053 1.44876 2.13897 5.36487 1.29318 2.03288 1963 12.28952 60.34779 5877.67808 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA ALLLATLON NEAREST 1 NA NA NA NA VAL1L2 666 -0.0061872 -0.088203 0.12263 -0.052885 4.33928 7.35944 14.22557 2.29765 3.2832 666 4.04997 65.97315 6716.40647 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA LATGE39 NEAREST 1 NA NA NA NA VAL1L2 350 -0.15854 0.040702 0.19073 0.28343 5.93602 8.57598 16.59683 2.4931 3.54764 350 0.0076746 59.78505 5673.48854 +V12.0.0 FCST NA 120000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA LATLT39 NEAREST 1 NA NA NA NA VAL1L2 316 0.16256 -0.23098 0.047209 -0.42538 2.57074 6.012 11.59919 2.08116 2.99031 316 8.52719 72.82706 7871.53709 diff --git a/test/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vcnt.txt b/test/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vcnt.txt new file mode 100644 index 00000000..8e0ef2ca --- /dev/null +++ b/test/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vcnt.txt @@ -0,0 +1,9 @@ +VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL FBAR FBAR_BCL FBAR_BCU OBAR OBAR_BCL OBAR_BCU FS_RMS FS_RMS_BCL FS_RMS_BCU OS_RMS OS_RMS_BCL OS_RMS_BCU MSVE MSVE_BCL MSVE_BCU RMSVE RMSVE_BCL RMSVE_BCU FSTDEV FSTDEV_BCL FSTDEV_BCU OSTDEV OSTDEV_BCL OSTDEV_BCU FDIR FDIR_BCL FDIR_BCU ODIR ODIR_BCL ODIR_BCU FBAR_SPEED FBAR_SPEED_BCL FBAR_SPEED_BCU OBAR_SPEED OBAR_SPEED_BCL OBAR_SPEED_BCU VDIFF_SPEED VDIFF_SPEED_BCL VDIFF_SPEED_BCU VDIFF_DIR VDIFF_DIR_BCL VDIFF_DIR_BCU SPEED_ERR SPEED_ERR_BCL SPEED_ERR_BCU SPEED_ABSERR SPEED_ABSERR_BCL SPEED_ABSERR_BCU DIR_ERR DIR_ERR_BCL DIR_ERR_BCU DIR_ABSERR DIR_ABSERR_BCL DIR_ABSERR_BCU ANOM_CORR ANOM_CORR_NCL ANOM_CORR_NCU ANOM_CORR_BCL ANOM_CORR_BCU ANOM_CORR_UNCNTR ANOM_CORR_UNCNTR_BCL ANOM_CORR_UNCNTR_BCU TOTAL_DIR DIR_ME DIR_ME_BCL DIR_ME_BCU DIR_MAE DIR_MAE_BCL DIR_MAE_BCU DIR_MSE DIR_MSE_BCL DIR_MSE_BCU DIR_RMSE DIR_RMSE_BCL DIR_RMSE_BCU +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC DTC165 NEAREST 1 NA NA NA 0.05 VCNT 975 2.63981 NA NA 2.03047 NA NA 2.93123 NA NA 2.94042 NA NA 9.61138 NA NA 3.10022 NA NA 1.27483 NA NA 2.12789 NA NA 110.5957 NA NA 333.26673 NA NA 0.49723 NA NA 0.39057 NA NA 0.82786 NA NA 129.24447 NA NA 0.10666 NA NA 0.10666 NA NA -137.32897 NA NA 137.32897 NA NA NA NA NA NA NA NA NA NA 668 22.84654 NA NA 60.61709 NA NA 6129.41176 NA NA 78.29056 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC DTC166 NEAREST 1 NA NA NA 0.05 VCNT 3167 3.72012 NA NA 2.51923 NA NA 4.27608 NA NA 3.53179 NA NA 6.50614 NA NA 2.55071 NA NA 2.10879 NA NA 2.47568 NA NA 292.16267 NA NA 287.35195 NA NA 2.48109 NA NA 1.61075 NA NA 0.88636 NA NA 300.92889 NA NA 0.87033 NA NA 0.87033 NA NA -4.81072 NA NA 4.81072 NA NA NA NA NA NA NA NA NA NA 2138 13.00804 NA NA 26.14698 NA NA 1477.83177 NA NA 38.44258 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC LMV NEAREST 1 NA NA NA 0.05 VCNT 398 1.79043 NA NA 0.94038 NA NA 2.02986 NA NA 1.58766 NA NA 3.23841 NA NA 1.79956 NA NA 0.9576 NA NA 1.2808 NA NA 233.48821 NA NA 210.53396 NA NA 0.76452 NA NA 0.14935 NA NA 0.62969 NA NA 238.7958 NA NA 0.61516 NA NA 0.61516 NA NA -22.95425 NA NA 22.95425 NA NA NA NA NA NA NA NA NA NA 160 21.39089 NA NA 40.07857 NA NA 3510.11816 NA NA 59.24625 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC TMP_Z2<280 NEAREST 1 NA NA NA 0.05 VCNT 2439 4.38431 NA NA 3.28098 NA NA 4.78583 NA NA 4.17649 NA NA 9.03064 NA NA 3.0051 NA NA 1.91925 NA NA 2.58476 NA NA 292.1434 NA NA 290.69779 NA NA 2.25393 NA NA 1.77684 NA NA 0.47975 NA NA 297.50466 NA NA 0.47709 NA NA 0.47709 NA NA -1.44561 NA NA 1.44561 NA NA NA NA NA NA NA NA NA NA 2000 14.04923 NA NA 30.71628 NA NA 2166.27565 NA NA 46.54327 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA DTC165 NEAREST 1 NA NA NA 0.05 VCNT 195 7.24105 NA NA 7.60994 NA NA 8.05469 NA NA 8.91324 NA NA 15.27021 NA NA 3.90771 NA NA 3.53686 NA NA 4.65249 NA NA 190.28849 NA NA 193.7162 NA NA 4.61202 NA NA 4.29743 NA NA 0.41217 NA NA 151.72461 NA NA 0.31459 NA NA 0.31459 NA NA 3.4277 NA NA 3.4277 NA NA NA NA NA NA NA NA NA NA 192 1.52159 NA NA 26.3225 NA NA 1996.26142 NA NA 44.67954 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA DTC166 NEAREST 1 NA NA NA 0.05 VCNT 359 11.87017 NA NA 12.90323 NA NA 13.76082 NA NA 14.778 NA NA 17.87395 NA NA 4.22776 NA NA 6.97099 NA NA 7.21395 NA NA 308.31404 NA NA 306.44606 NA NA 9.61812 NA NA 10.01643 NA NA 0.51093 NA NA 88.59378 NA NA -0.39831 NA NA 0.39831 NA NA -1.86798 NA NA 1.86798 NA NA NA NA NA NA NA NA NA NA 358 4.02219 NA NA 16.12332 NA NA 774.11779 NA NA 27.82297 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA LMV NEAREST 1 NA NA NA 0.05 VCNT 38 9.20198 NA NA 10.0743 NA NA 9.64259 NA NA 10.64472 NA NA 10.72244 NA NA 3.27451 NA NA 2.92019 NA NA 3.48394 NA NA 304.24928 NA NA 308.97063 NA NA 8.98218 NA NA 9.31837 NA NA 0.82525 NA NA 192.59186 NA NA -0.33618 NA NA 0.33618 NA NA 4.72135 NA NA 4.72135 NA NA NA NA NA NA NA NA NA NA 38 -5.24855 NA NA 11.81144 NA NA 253.41991 NA NA 15.91917 NA NA +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA TMP_Z2<280 NEAREST 1 NA NA NA 0.05 VCNT 338 12.26955 NA NA 13.04549 NA NA 13.70929 NA NA 14.66136 NA NA 19.68895 NA NA 4.43722 NA NA 6.12484 NA NA 6.70102 NA NA 288.85311 NA NA 285.11819 NA NA 5.1092 NA NA 5.16822 NA NA 0.34007 NA NA 26.97498 NA NA -0.059022 NA NA 0.059022 NA NA -3.73492 NA NA 3.73492 NA NA NA NA NA NA NA NA NA NA 337 2.63748 NA NA 15.27596 NA NA 679.74357 NA NA 26.07189 NA NA diff --git a/test/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vl1l2.txt b/test/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vl1l2.txt new file mode 100644 index 00000000..b2841e90 --- /dev/null +++ b/test/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vl1l2.txt @@ -0,0 +1,9 @@ +VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL UFBAR VFBAR UOBAR VOBAR UVFOBAR UVFFBAR UVOOBAR F_SPEED_BAR O_SPEED_BAR TOTAL_DIR DIR_ME DIR_MAE DIR_MSE +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC DTC165 NEAREST 1 NA NA NA NA VL1L2 975 -0.46545 0.17491 0.17569 -0.34882 3.81343 8.59213 8.64609 2.63981 2.03047 668 22.84654 60.61709 6129.41176 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC DTC166 NEAREST 1 NA NA NA NA VL1L2 3167 2.29778 -0.93596 1.53745 -0.48039 12.12615 18.28487 12.47356 3.72012 2.51923 2138 13.00804 26.14698 1477.83177 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC LMV NEAREST 1 NA NA NA NA VL1L2 398 0.61447 0.45488 0.075879 0.12864 1.70128 4.12033 2.52065 1.79043 0.94038 160 21.39089 40.07857 3510.11816 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s Z10 UGRD_VGRD NA Z10 ADPSFC TMP_Z2<280 NEAREST 1 NA NA NA NA VL1L2 2439 2.08769 -0.84956 1.66216 -0.628 15.65831 22.90417 17.44308 4.38431 3.28098 2000 14.04923 30.71628 2166.27565 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA DTC165 NEAREST 1 NA NA NA NA VL1L2 195 0.82373 4.53786 1.01897 4.17487 64.52684 64.87804 79.44585 7.24105 7.60994 192 1.52159 26.3225 1996.26142 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA DTC166 NEAREST 1 NA NA NA NA VL1L2 359 7.54661 -5.96296 8.05738 -5.95042 194.93784 189.36022 218.38941 11.87017 12.90323 358 4.02219 16.12332 774.11779 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA LMV NEAREST 1 NA NA NA NA VL1L2 38 7.42465 -5.05512 7.24474 -5.86053 97.78354 92.97952 113.31 9.20198 10.0743 38 -5.24855 11.81144 253.41991 +V12.0.0 FCST NA 150000 20120409_120000 20120409_120000 000000 20120409_113000 20120409_123000 UGRD_VGRD m/s P850-700 UGRD_VGRD NA P850-700 ADPUPA TMP_Z2<280 NEAREST 1 NA NA NA NA VL1L2 338 4.83509 -1.651 4.98935 -1.34793 191.60558 187.94454 214.95556 12.26955 13.04549 337 2.63748 15.27596 679.74357 diff --git a/test/data/stat_analysis/ensemble_stat_OBSERR_20120410_120000V_ecnt.txt b/test/data/stat_analysis/ensemble_stat_OBSERR_20120410_120000V_ecnt.txt new file mode 100644 index 00000000..4fbb32d3 --- /dev/null +++ b/test/data/stat_analysis/ensemble_stat_OBSERR_20120410_120000V_ecnt.txt @@ -0,0 +1,19 @@ +VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_ENS CRPS CRPSS IGN ME RMSE SPREAD ME_OERR RMSE_OERR SPREAD_OERR SPREAD_PLUS_OERR CRPSCL CRPS_EMP CRPSCL_EMP CRPSS_EMP CRPS_EMP_FAIR SPREAD_MD MAE MAE_OERR BIAS_RATIO N_GE_OBS ME_GE_OBS N_LT_OBS ME_LT_OBS IGN_CONV_OERR IGN_CORR_OERR +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC FULL NEAREST 1 NA NA NA NA ECNT 311 5 0.4123 NA -0.47478 0.031537 1.19757 1.50732 0.029588 1.20309 1.50883 1.50908 NA 0.38706 NA NA 0.29711 0.89956 0.56568 0.5677 0.20442 1308 0.46155 247 -2.25789 -0.50798 -0.50758 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC FULL NEAREST 1 NA >0 NA NA ECNT 66 5 1.15837 NA 2.86941 -1.09933 2.06699 2.44838 -1.10852 2.08203 2.45276 2.45348 NA 1.36849 NA NA 1.14274 2.25749 1.41764 1.42714 1.02393 83 2.31192 247 -2.25789 2.71301 2.71488 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC FULL NEAREST 1 NA >=2.54 NA NA ECNT 33 5 1.69793 NA 3.15482 -2.16824 2.81092 2.83549 -2.17071 2.82789 2.83326 2.84254 NA 2.07298 NA NA 1.79916 2.73827 2.21297 2.21717 0.955 27 3.04818 138 -3.19179 3.1135 3.11543 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC NWC NEAREST 1 NA NA NA NA ECNT 226 5 0.52368 NA 0.068372 0.064292 1.36402 1.73303 0.065922 1.35115 1.72285 1.73506 NA 0.48707 NA NA 0.371 1.16077 0.72679 0.72475 0.28247 907 0.63371 223 -2.24343 0.086178 0.086669 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC NWC NEAREST 1 NA >0 NA NA ECNT 60 5 1.14293 NA 2.51194 -1.0793 2.06935 2.48046 -1.07316 2.03728 2.4536 2.4858 NA 1.34896 NA NA 1.12068 2.28278 1.4161 1.40843 1.03238 77 2.31606 223 -2.24343 2.57901 2.58085 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC NWC NEAREST 1 NA >=2.54 NA NA ECNT 32 5 1.65269 NA 3.07371 -2.09781 2.74538 2.82378 -2.08512 2.70135 2.77654 2.83102 NA 2.01866 NA NA 1.75051 2.68157 2.14394 2.13291 1.00178 26 3.09591 134 -3.09039 3.11579 3.11777 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_103000 20120410_133000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ADPSFC GRB NEAREST 1 NA NA NA NA ECNT 4 5 0.0013961 NA -4.39095 0.002 0.002 0.0044721 0.002 0.002 0.0044721 0.0044721 NA 0.0004 NA NA 0 0.004 0.002 0.002 NA 20 0.002 0 NA -4.39095 -4.39095 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_120000 20120410_120000 TMP K Z2 TMP K Z2 ANALYS FULL NEAREST 1 NA NA NA NA ECNT 26026 5 1.09683 NA 14.40765 0.050665 1.94083 0.69048 NA NA NA NA NA 1.13152 NA NA 1.06521 0.66308 1.30291 NA 0.89279 71098 1.3246 59032 -1.48365 NA NA +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_120000 20120410_120000 TMP K Z2 TMP K Z2 ANALYS NWC NEAREST 1 NA NA NA NA ECNT 2461 5 1.27799 NA 7.30759 0.051261 2.06586 0.96366 NA NA NA NA NA 1.32279 NA NA 1.21628 1.06509 1.59921 NA 1.12559 5969 1.85542 6336 -1.6484 NA NA +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 000000 20120410_120000 20120410_120000 TMP K Z2 TMP K Z2 ANALYS GRB NEAREST 1 NA NA NA NA ECNT 5122 5 2.00862 NA 25.20678 -0.37257 2.92556 0.93067 NA NA NA NA NA 2.05936 NA NA 1.96506 0.94303 2.36412 NA 0.92591 11331 2.3325 14279 -2.51916 NA NA +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS FULL NEAREST 1 NA NA NA NA ECNT 15061 5 2.50686 NA 4.53627 2.95427 6.17982 4.87078 2.95415 6.17837 4.8732 4.87422 NA 2.36711 NA NA 2.00342 3.6369 3.73409 3.73399 1.03024 66528 3.83499 8777 -3.72243 30.14921 9.02334 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS FULL NEAREST 1 NA >0 NA NA ECNT 3495 5 3.46789 NA 14.06362 1.40482 7.83 5.31959 1.4043 7.82509 5.32911 5.33315 NA 3.4818 NA NA 3.06636 4.15441 4.7653 4.76484 1.76702 8698 6.5776 8777 -3.72243 125.64272 35.62575 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS FULL NEAREST 1 NA >=2.54 NA NA ECNT 966 5 5.82926 NA 37.50278 -4.02494 10.51516 6.50613 -4.02793 10.50334 6.53208 6.54429 NA 6.21661 NA NA 5.65453 5.6208 7.57721 7.57829 0.91459 1351 7.93143 3479 -8.67211 384.16223 42.39401 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS NWC NEAREST 1 NA NA NA NA ECNT 1947 5 1.22023 NA 16.85646 -0.50409 3.04868 2.00826 -0.50748 3.07077 2.01235 2.01718 NA 1.1973 NA NA 1.05026 1.47043 1.51531 1.51841 0.67468 4404 1.4125 5331 -2.0936 40.64506 55.76198 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS NWC NEAREST 1 NA >0 NA NA ECNT 1512 5 1.47178 NA 21.98306 -0.81012 3.41859 2.18081 -0.81448 3.44395 2.18566 2.19139 NA 1.47117 NA NA 1.30443 1.66747 1.79027 1.79426 1.07219 2229 2.24474 5331 -2.0936 52.69804 73.75835 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS NWC NEAREST 1 NA >=2.54 NA NA ECNT 386 5 3.80671 NA 63.72563 -4.42939 6.35474 2.39446 -4.4509 6.40956 2.41174 2.42632 NA 4.11052 NA NA 3.90213 2.08389 4.47273 4.49414 0.51667 178 2.67366 1752 -5.17475 83.52307 88.94018 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS GRB NEAREST 1 NA NA NA NA ECNT 121 5 0.0338 NA -1.62013 -0.032949 0.063093 0.0096295 -0.029575 0.067008 0.072769 0.072797 NA 0.030034 NA NA 0.023921 0.061135 0.036155 0.036686 0.33946 282 0.026725 323 -0.078728 19.63736 39.48573 +V12.0.0 FCST OBSERR 240000 20120410_120000 20120410_120000 360000 20120412_000000 20120412_000000 APCP_24 kg/m^2 A24 APCP_24 kg/m^2 A24 ANALYS GRB NEAREST 1 NA >0 NA NA ECNT 84 5 0.051502 NA -0.3278 -0.049771 0.075548 0.0009759 -0.044911 0.080258 0.086574 0.086608 NA 0.042802 NA NA 0.034457 0.083445 0.049771 0.050536 0.85986 97 0.067694 323 -0.078728 33.41424 440.06905 diff --git a/test/data/stat_analysis/met_ecnt_agg.txt b/test/data/stat_analysis/met_ecnt_agg.txt new file mode 100644 index 00000000..7598726f --- /dev/null +++ b/test/data/stat_analysis/met_ecnt_agg.txt @@ -0,0 +1,4 @@ +JOB_LIST: -job aggregate -line_type ECNT +COL_NAME: TOTAL N_ENS CRPS CRPSS IGN ME RMSE SPREAD ME_OERR RMSE_OERR SPREAD_OERR SPREAD_PLUS_OERR CRPSCL CRPS_EMP CRPSCL_EMP CRPSS_EMP CRPS_EMP_FAIR SPREAD_MD MAE MAE_OERR BIAS_RATIO N_GE_OBS ME_GE_OBS N_LT_OBS ME_LT_OBS IGN_CONV_OERR IGN_CORR_OERR + ECNT: 18 5 1.79694 NA 13.23697 0.70583 4.36199 3.04271 1.69983 6.25053 4.61729 4.61991 NA 1.79168 NA NA 1.60754 1.84139 2.38669 3.63251 1.1678 174613 2.68118 114952 -2.29593 60.11017 24.60137 + diff --git a/test/data/stat_analysis/met_val1l2_aggregated.txt b/test/data/stat_analysis/met_val1l2_aggregated.txt new file mode 100644 index 00000000..1e01f6fa --- /dev/null +++ b/test/data/stat_analysis/met_val1l2_aggregated.txt @@ -0,0 +1,4 @@ +JOB_LIST: -job aggregate -line_type VAL1L2 +COL_NAME: TOTAL UFABAR VFABAR UOABAR VOABAR UVFOABAR UVFFABAR UVOOABAR FA_SPEED_BAR OA_SPEED_BAR TOTAL_DIR DIRA_ME DIRA_MAE DIRA_MSE + VAL1L2: 10361 0.020211 -0.055296 -0.17405 0.074044 1.8313 3.12772 7.57505 1.49204 2.35589 10361 10.65754 65.62686 6774.65166 + diff --git a/test/data/stat_analysis/met_vcnt_from_vl1l2.txt b/test/data/stat_analysis/met_vcnt_from_vl1l2.txt new file mode 100644 index 00000000..6bfb3fb2 --- /dev/null +++ b/test/data/stat_analysis/met_vcnt_from_vl1l2.txt @@ -0,0 +1,4 @@ +JOB_LIST: -job aggregate_stat -line_type VL1L2 -out_line_type VCNT +COL_NAME: TOTAL FBAR FBAR_BCL FBAR_BCU OBAR OBAR_BCL OBAR_BCU FS_RMS FS_RMS_BCL FS_RMS_BCU OS_RMS OS_RMS_BCL OS_RMS_BCU MSVE MSVE_BCL MSVE_BCU RMSVE RMSVE_BCL RMSVE_BCU FSTDEV FSTDEV_BCL FSTDEV_BCU OSTDEV OSTDEV_BCL OSTDEV_BCU FDIR FDIR_BCL FDIR_BCU ODIR ODIR_BCL ODIR_BCU FBAR_SPEED FBAR_SPEED_BCL FBAR_SPEED_BCU OBAR_SPEED OBAR_SPEED_BCL OBAR_SPEED_BCU VDIFF_SPEED VDIFF_SPEED_BCL VDIFF_SPEED_BCU VDIFF_DIR VDIFF_DIR_BCL VDIFF_DIR_BCU SPEED_ERR SPEED_ERR_BCL SPEED_ERR_BCU SPEED_ABSERR SPEED_ABSERR_BCL SPEED_ABSERR_BCU DIR_ERR DIR_ERR_BCL DIR_ERR_BCU DIR_ABSERR DIR_ABSERR_BCL DIR_ABSERR_BCU ANOM_CORR ANOM_CORR_NCL ANOM_CORR_NCU ANOM_CORR_BCL ANOM_CORR_BCU ANOM_CORR_UNCNTR ANOM_CORR_UNCNTR_BCL ANOM_CORR_UNCNTR_BCU TOTAL_DIR DIR_ME DIR_ME_BCL DIR_ME_BCU DIR_MAE DIR_MAE_BCL DIR_MAE_BCU DIR_MSE DIR_MSE_BCL DIR_MSE_BCU DIR_RMSE DIR_RMSE_BCL DIR_RMSE_BCU + VCNT: 7909 4.54312 NA NA 3.69744 NA NA 5.85878 NA NA 5.75927 NA NA 8.81873 NA NA 2.96963 NA NA 3.6996 NA NA 4.41594 NA NA 291.5452 NA NA 290.64735 NA NA 2.30357 NA NA 1.91564 NA NA 0.38933 NA NA 295.96716 NA NA 0.38793 NA NA 0.38793 NA NA -0.89785 NA NA 0.89785 NA NA NA NA NA NA NA NA NA NA 5891 13.07336 NA NA 30.66754 NA NA 2214.79231 NA NA 47.06158 NA NA + diff --git a/test/data/stat_analysis/met_vl1l2_aggregated.txt b/test/data/stat_analysis/met_vl1l2_aggregated.txt new file mode 100644 index 00000000..fccc8a0d --- /dev/null +++ b/test/data/stat_analysis/met_vl1l2_aggregated.txt @@ -0,0 +1,4 @@ +JOB_LIST: -job aggregate -line_type VL1L2 +COL_NAME: TOTAL UFBAR VFBAR UOBAR VOBAR UVFOBAR UVFFBAR UVOOBAR F_SPEED_BAR O_SPEED_BAR TOTAL_DIR DIR_ME DIR_MAE DIR_MSE + VL1L2: 7909 2.14262 -0.84595 1.79259 -0.67548 29.33787 34.32529 33.16919 4.54312 3.69744 5891 13.07336 30.66754 2214.79231 + diff --git a/test/ecnt_agg_stat.yaml b/test/ecnt_agg_stat.yaml new file mode 100644 index 00000000..4354cc53 --- /dev/null +++ b/test/ecnt_agg_stat.yaml @@ -0,0 +1,29 @@ +agg_stat_input: !ENV "${TEST_DIR}/data/stat_analysis/ensemble_stat_OBSERR_20120410_120000V_ecnt.txt" +agg_stat_output: !ENV "${TEST_DIR}/calcpy_ecnt_agg.txt" +alpha: 0.05 +append_to_file: null +circular_block_bootstrap: True +derived_series_1: [] +derived_series_2: [] +event_equal: False +fcst_var_val_1: + APCP_24: + - ECNT_IGN_CONV_OERR + - ECNT_IGN_CORR_OERR +fcst_var_val_2: {} +indy_vals: +- '240000' +indy_var: fcst_lead +line_type: ecnt +list_stat_1: + - ECNT_IGN_CONV_OERR + - ECNT_IGN_CORR_OERR +list_stat_2: [] +method: perc +num_iterations: 1 +num_threads: -1 +random_seed: null +series_val_1: + model: + - FCST +series_val_2: {} diff --git a/test/rrfs_ecnt_config_agg_stat.yaml b/test/rrfs_ecnt_config_agg_stat.yaml index 7480d8a9..b659034a 100644 --- a/test/rrfs_ecnt_config_agg_stat.yaml +++ b/test/rrfs_ecnt_config_agg_stat.yaml @@ -1,5 +1,5 @@ -agg_stat_input: ./data/rrfs_ecnt_for_agg.data -agg_stat_output: ./rrfs_ecnt_aggregated.data +agg_stat_input: !ENV "${TEST_DIR}/data/rrfs_ecnt_for_agg.data" +agg_stat_output: !ENV "${TEST_DIR}/rrfs_ecnt_aggregated.data" alpha: 0.05 append_to_file: null circular_block_bootstrap: True diff --git a/test/run_all_nco.sh b/test/run_all_nco.sh index 99651758..262262f6 100755 --- a/test/run_all_nco.sh +++ b/test/run_all_nco.sh @@ -1,6 +1,7 @@ #!/bin/bash python3 -m pytest test_agg_eclv.py +python3 -m pytest test_agg_ratio.py python3 -m pytest test_agg_stats_and_boot.py python3 -m pytest test_agg_stats_with_groups.py python3 -m pytest test_calc_difficulty_index.py @@ -14,5 +15,6 @@ python3 -m pytest test_scorecard.py python3 -m pytest test_spacetime.py python3 -m pytest test_statistics.py python3 -m pytest test_tost_paired.py +python3 -m pytest test_agg_stat.py python3 -m pytest test_utils.py python3 -m pytest test_reformatted_for_agg.py diff --git a/test/test_agg_eclv.py b/test/test_agg_eclv.py index 0119c5c4..339ab153 100644 --- a/test/test_agg_eclv.py +++ b/test/test_agg_eclv.py @@ -1,8 +1,10 @@ +import os import numpy as np import pytest from metcalcpy.agg_eclv import AggEclv, pd +cwd = os.path.dirname(__file__) def test_calculate_value_and_ci(settings): agg_eclv = settings['agg_stat'] @@ -31,8 +33,8 @@ def settings(): params = {'random_seed': 1, 'indy_var': '', 'method': 'perc', 'num_iterations': 100, 'event_equal': 'False', - 'agg_stat_input': 'data/agg_eclv_data.data', - 'agg_stat_output': 'data/agg_eclv_data_output.data', + 'agg_stat_input': f'{cwd}/data/agg_eclv_data.data', + 'agg_stat_output': f'{cwd}/data/agg_eclv_data_output.data', 'fixed_vars_vals_input': {}, 'series_val_1': {'model': ['WRF'], 'fcst_lev': ['Z10', 'P850-700']}, 'alpha': 0.05, 'line_type': 'ctc', diff --git a/test/test_agg_ratio.py b/test/test_agg_ratio.py index 31a83370..05254db2 100644 --- a/test/test_agg_ratio.py +++ b/test/test_agg_ratio.py @@ -1,8 +1,10 @@ +import os import numpy as np import pytest from metcalcpy.agg_stat import AggStat, pd +cwd = os.path.dirname(__file__) def test_agg_ratio(settings): agg_stat = settings['agg_stat'] @@ -30,8 +32,8 @@ def settings(): params = {'random_seed': 1, 'indy_var': 'fcst_lead', 'method': 'perc', 'num_iterations': 10, 'event_equal': 'True', - 'agg_stat_input': 'data/agg_ratio.data', - 'agg_stat_output': 'data/agg_ratio_data_output.data', + 'agg_stat_input': f'{cwd}/data/agg_ratio.data', + 'agg_stat_output': f'{cwd}/data/agg_ratio_data_output.data', 'fixed_vars_vals_input': { 'obtype': { 'obtype_0' : ['CCPA'] diff --git a/test/test_agg_stat.py b/test/test_agg_stat.py new file mode 100644 index 00000000..6d06cc32 --- /dev/null +++ b/test/test_agg_stat.py @@ -0,0 +1,307 @@ +import os +import pandas as pd +import yaml +import pytest + +from metcalcpy.util.utils import get_met_version + +from metcalcpy.agg_stat import AggStat +from metcalcpy.util.read_env_vars_in_config import parse_config + +cwd = os.path.dirname(__file__) + +def get_parms(config_file): + ''' + + :param config_file: + :return: dictionary representation of the yaml config file settings + ''' + os.environ['TEST_DIR'] = cwd + return parse_config(config_file) + +def cleanup(filename): + ''' + Clean up temporary agg_stat.py output generated during the test + :param filename: file to remove + :return: None + ''' + + try: + os.remove(filename) + except FileNotFoundError: + # if file has already been cleaned or didn't + # get created, ignore this error + pass + +def aggregate(parms): + ''' + Calculate all the weighted averages and CI for the columns in the VAL1L2 .txt/.stat file + from the MET point-stat tool. + + Returns: + parms: the dictionary representation of the configuration settings in the YAML config file. + The agg_stat.py script creates an output file. The name and location are defined in + the config file. + ''' + + agg_stat_obj = AggStat(parms) + agg_stat_obj.calculate_stats_and_ci() + + +def test_val1l2(): + ''' + Compare MET stat_analysis tool output with + METcalcpy agg_stat.py result for the DIRA_ME, + DIRA_MAE, and DIRA_MSE additions to the linetype. + + ''' + + # Read in the output generated by the MET stat-analysis tool to retrieve the DIRA_ME, DIRA_MAE, + # and DIRA_MSE values. + # + # Use the MET stat_analysis tool to generate the output: + # stat_analysis -lookin path-to-MET-val1l2-data -job aggregate -linetype VAL1L2 + # -v 5 -out filename-for-output-file + + # skip the first row of the file, it contains joblist information from stat-analysis + agg_from_met: pd.DataFrame = pd.read_csv(f"{cwd}/data/stat_analysis/met_val1l2_aggregated.txt", sep=r'\s+', + skiprows=1) + + # convert all the column names to lower case + cols = agg_from_met.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in cols] + agg_from_met.columns = lc_cols + met_dira_me = float(agg_from_met['dira_me']) + met_dira_mae = float(agg_from_met['dira_mae']) + met_dira_mse = float(agg_from_met['dira_mse']) + + # Retrieve the same stat values above from the METcalcpy agg_stat.py output + # Read in the yaml config file + config_file = f'{cwd}/val1l2_agg_stat.yaml' + + parms = get_parms(config_file) + # change the headers of the input data + # to lower case, the agg_stat.py code is looking for lower case header names + raw_df: pd.DataFrame = pd.read_csv(parms['agg_stat_input'], sep=r'\s+') + uc_cols = raw_df.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in uc_cols] + raw_df.columns = lc_cols + # create a temporary file with lower case headers, which is what + # agg_stat.py is expecting + lc_df_name = "./val1l2.txt" + raw_df.to_csv(lc_df_name, sep='\t', index=False) + parms['agg_stat_input'] = lc_df_name + aggregate(parms) + calcpy_df = pd.read_csv(parms['agg_stat_output'], sep=r'\s+|\t', engine='python') + calcpy_dira_me_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VAL1L2_DIRA_ME']) + calcpy_dira_mae_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VAL1L2_DIRA_MAE']) + calcpy_dira_mse_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VAL1L2_DIRA_MSE']) + calcpy_dira_me = float(calcpy_dira_me_df['stat_value'].to_list()[0]) + calcpy_dira_mae = float(calcpy_dira_mae_df['stat_value'].to_list()[0]) + calcpy_dira_mse = float(calcpy_dira_mse_df['stat_value'].to_list()[0]) + + calcpy_dira_me_val = round(calcpy_dira_me, 5) + calcpy_dira_mae_val = round(calcpy_dira_mae, 5) + calcpy_dira_mse_val = round(calcpy_dira_mse, 5) + assert calcpy_dira_me_val == met_dira_me + assert calcpy_dira_mae_val == met_dira_mae + assert calcpy_dira_mse_val == met_dira_mse + + # clean up + output_file = parms['agg_stat_output'] + cleanup(output_file) + cleanup(lc_df_name) + +def test_vl1l2(): + ''' + Compare MET stat_analysis tool output with + METcalcpy agg_stat.py result for the DIR_ME, + DIR_MAE, and DIR_MSE additions to the linetype. + + ''' + + # Read in the output generated by the MET stat-analysis tool to retrieve the DIR_ME, DIR_MAE, + # and DIR_MSE values. + # + # Use the MET stat_analysis tool to generate the output: + # stat_analysis -lookin path-to-MET-vl1l2-data -job aggregate -linetype VL1L2 + # -v 5 -out filename-for-output-file + + # skip the first row of the file, it contains joblist information from stat-analysis + agg_from_met: pd.DataFrame = pd.read_csv(f"{cwd}/data/stat_analysis/met_vl1l2_aggregated.txt", sep=r'\s+|\t', + engine='python', skiprows=1) + + # convert all the column names to lower case + cols = agg_from_met.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in cols] + agg_from_met.columns = lc_cols + met_dir_me = float(agg_from_met['dir_me']) + met_dir_mae = float(agg_from_met['dir_mae']) + met_dir_mse = float(agg_from_met['dir_mse']) + + # Retrieve the same stat values above from the METcalcpy agg_stat.py output + # Read in the yaml config file + config_file = f"{cwd}/vl1l2_agg_stat_met_v12.yaml" + + parms = get_parms(config_file) + # change the headers of the input data + # to lower case, the agg_stat.py code is looking for lower case header names + raw_df: pd.DataFrame = pd.read_csv(parms['agg_stat_input'], sep=r'\s+') + uc_cols = raw_df.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in uc_cols] + raw_df.columns = lc_cols + # create a temporary file with lower case headers, which is what + # agg_stat.py is expecting + lc_df_name = "./vl1l2.txt" + raw_df.to_csv(lc_df_name, sep='\t', index=False) + parms['agg_stat_input'] = lc_df_name + # invoking aggregate, now the output dataframe corresponds to the agg_stat_output value + # defined in the config file + aggregate(parms) + calcpy_df = pd.read_csv(parms['agg_stat_output'], sep=r'\s+|\t', engine='python') + calcpy_dir_me_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VL1L2_DIR_ME']) + calcpy_dir_mae_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VL1L2_DIR_MAE']) + calcpy_dir_mse_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VL1L2_DIR_MSE']) + calcpy_dir_me = float(calcpy_dir_me_df['stat_value'].to_list()[0]) + calcpy_dir_mae = float(calcpy_dir_mae_df['stat_value'].to_list()[0]) + calcpy_dir_mse = float(calcpy_dir_mse_df['stat_value'].to_list()[0]) + + calcpy_dir_me_val = round(calcpy_dir_me, 5) + calcpy_dir_mae_val = round(calcpy_dir_mae, 5) + calcpy_dir_mse_val = round(calcpy_dir_mse, 5) + # assert calcpy_dir_me_val == met_dir_me + assert calcpy_dir_mae_val == met_dir_mae + assert calcpy_dir_mse_val == met_dir_mse + + # clean up + output_file = parms['agg_stat_output'] + cleanup(output_file) + cleanup(lc_df_name) + +def test_vcnt(): + ''' + Compare MET stat_analysis tool output with + METcalcpy agg_stat.py result for the DIR_ME, + DIR_MAE,DIR_MSE, and DIR_RMSE additions to the linetype. + + ''' + + # Read in the output generated by the MET stat-analysis tool to retrieve the DIR_ME, DIR_MAE, + # DIR_MSE, and DIR_RMSE values. + # + # Use the MET stat_analysis tool to generate the output: + # stat_analysis -lookin path-to-MET-vl1l2-data -job aggregate_stat -linetype VL1L2 + # -out_line_type VCNT -v 5 -out filename-for-output-file + + # skip the first row of the file, it contains joblist information from stat-analysis + agg_from_met: pd.DataFrame = pd.read_csv(f"{cwd}/data/stat_analysis/met_vcnt_from_vl1l2.txt", sep=r'\s+', + skiprows=1) + + # convert all the column names to lower case + cols = agg_from_met.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in cols] + agg_from_met.columns = lc_cols + met_dir_me = float(agg_from_met['dir_me']) + met_dir_mae = float(agg_from_met['dir_mae']) + met_dir_mse = float(agg_from_met['dir_mse']) + met_dir_rmse = float(agg_from_met['dir_rmse']) + + # Retrieve the same stat values above from the METcalcpy agg_stat.py output + # Read in the yaml config file + config_file = f"{cwd}/vcnt_agg_stat.yaml" + + parms = get_parms(config_file) + # change the headers of the input data + # to lower case, the agg_stat.py code is looking for lower case header names + raw_df: pd.DataFrame = pd.read_csv(parms['agg_stat_input'], sep=r'\s+') + uc_cols = raw_df.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in uc_cols] + raw_df.columns = lc_cols + # create a temporary file with lower case headers, which is what + # agg_stat.py is expecting + lc_df_name = "./lc_vcnt.txt" + raw_df.to_csv(lc_df_name, sep='\t', index=False) + parms['agg_stat_input'] = lc_df_name + aggregate(parms) + calcpy_df = pd.read_csv(parms['agg_stat_output'], sep=r'\s+|\t', engine='python') + calcpy_dir_me_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VCNT_DIR_ME']) + calcpy_dir_mae_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VCNT_DIR_MAE']) + calcpy_dir_mse_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VCNT_DIR_MSE']) + calcpy_dir_rmse_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'VCNT_DIR_RMSE']) + calcpy_dir_me = float(calcpy_dir_me_df['stat_value'].to_list()[0]) + calcpy_dir_mae = float(calcpy_dir_mae_df['stat_value'].to_list()[0]) + calcpy_dir_mse = float(calcpy_dir_mse_df['stat_value'].to_list()[0]) + calcpy_dir_rmse = float(calcpy_dir_rmse_df['stat_value'].to_list()[0]) + + calcpy_dir_me_val = round(calcpy_dir_me, 5) + calcpy_dir_mae_val = round(calcpy_dir_mae, 5) + calcpy_dir_mse_val = round(calcpy_dir_mse, 5) + calcpy_dir_rmse_val = round(calcpy_dir_rmse, 5) + assert calcpy_dir_me_val == met_dir_me + assert calcpy_dir_mae_val == met_dir_mae + assert calcpy_dir_mse_val == met_dir_mse + assert calcpy_dir_rmse_val == met_dir_rmse + + # clean up + output_file = parms['agg_stat_output'] + cleanup(output_file) + cleanup(lc_df_name) + +def test_ecnt(): + ''' + Compare MET stat_analysis tool output with + METcalcpy agg_stat.py result for the IGN_CONV_OERR + and IGN_CORR_OERR additions to the linetype. + + ''' + + # Read in the output generated by the MET stat-analysis tool to retrieve the IGN_CONV_OERR and + # IGN_CORR_OERR values + # + # Use the MET stat_analysis tool to generate the output: + # stat_analysis -lookin path-to-MET-ecnt-data -job aggregate -linetype ECNT + # -v 5 -out filename-for-output-file + + # skip the first row of the file, it contains joblist information from stat-analysis + agg_from_met: pd.DataFrame = pd.read_csv(f"{cwd}/data/stat_analysis/met_ecnt_agg.txt", sep=r'\s+', + skiprows=1) + + # convert all the column names to lower case + cols = agg_from_met.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in cols] + agg_from_met.columns = lc_cols + met_ign_conv_oerr = float(agg_from_met['ign_conv_oerr']) + met_ign_corr_oerr = float(agg_from_met['ign_corr_oerr']) + + # Retrieve the same stat values above from the METcalcpy agg_stat.py output + # Read in the yaml config file + config_file = f"{cwd}/ecnt_agg_stat.yaml" + + parms = get_parms(config_file) + # change the headers of the input data + # to lower case, the agg_stat.py code is looking for lower case header names + raw_df: pd.DataFrame = pd.read_csv(parms['agg_stat_input'], sep=r'\s+') + uc_cols = raw_df.columns.to_list() + lc_cols = [lc_cols.lower() for lc_cols in uc_cols] + raw_df.columns = lc_cols + # create a temporary file with lower case headers, which is what + # agg_stat.py is expecting + lc_df_name = f"{cwd}/lc_ecnt.txt" + raw_df.to_csv(lc_df_name, sep='\t', index=False) + parms['agg_stat_input'] = lc_df_name + aggregate(parms) + calcpy_df = pd.read_csv(parms['agg_stat_output'], sep=r'\s+|\t', engine='python') + calcpy_ign_conv_oerr_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'ECNT_IGN_CONV_OERR']) + calcpy_ign_corr_oerr_df = (calcpy_df.loc[calcpy_df['stat_name'] == 'ECNT_IGN_CORR_OERR']) + calcpy_ign_conv_oerr = float(calcpy_ign_conv_oerr_df['stat_value'].to_list()[0]) + calcpy_ign_corr_oerr = float(calcpy_ign_corr_oerr_df['stat_value'].to_list()[0]) + + calcpy_ign_conv_oerr_val = round(calcpy_ign_conv_oerr, 5) + calcpy_ign_corr_oerr_val = round(calcpy_ign_corr_oerr, 5) + assert calcpy_ign_conv_oerr_val == met_ign_conv_oerr + assert calcpy_ign_corr_oerr_val == met_ign_corr_oerr + + # clean up + output_file = parms['agg_stat_output'] + cleanup(output_file) + cleanup(lc_df_name) diff --git a/test/test_agg_stats_and_boot.py b/test/test_agg_stats_and_boot.py index 1609053a..deaa82e4 100644 --- a/test/test_agg_stats_and_boot.py +++ b/test/test_agg_stats_and_boot.py @@ -1,5 +1,6 @@ import numpy as np import pytest +import os import math import statistics @@ -10,6 +11,7 @@ TEST_LENGTH = 1000 +cwd = os.path.dirname(__file__) def lossdiff_ml(data, ): if len(data.shape) < 3: @@ -51,7 +53,7 @@ def lossdiff_msl(data): def test_cboot(): et = np.loadtxt( - "./data/et.txt" ) + f"{cwd}/data/et.txt" ) # create an array for accepted/rejected flags ml_reject = [1] * TEST_LENGTH @@ -277,10 +279,10 @@ def settings(): 'derived_series_1': [ ['ENS001v3.6.1_d01 DPT FBAR', 'ENS001v3.6.1_d02 DPT FBAR', 'DIFF']], 'derived_series_2': [], - 'agg_stat_input': 'data/agg_stat_and_boot_data.data', + 'agg_stat_input': f'{cwd}/data/agg_stat_and_boot_data.data', 'fcst_var_val_1': {'DPT': ['FBAR']}, 'fcst_var_val_2': {}, - 'agg_stat_output': 'data/agg_stat_and_boot_output.data', + 'agg_stat_output': f'{cwd}/data/agg_stat_and_boot_output.data', 'fixed_vars_vals_input': {'fcst_lev': {'fcst_lev_0': ['P100']}}, 'series_val_1': {'model': ['ENS001v3.6.1_d01', 'ENS001v3.6.1_d02']}, 'series_val_2': {}, @@ -307,10 +309,10 @@ def settings_pstd(): 'num_iterations': 1, 'event_equal': 'False', 'derived_series_1': [], 'derived_series_2': [], - 'agg_stat_input': 'data/pstd.data.agg_stat', + 'agg_stat_input': f'{cwd}/data/pstd.data.agg_stat', 'fcst_var_val_1': {'DPT_ENS_FREQ_ge288': ['PSTD_ROC_AUC']}, 'fcst_var_val_2': {}, - 'agg_stat_output': 'data/pstd.data', + 'agg_stat_output': f'{cwd}/data/pstd.data', 'fixed_vars_vals_input': {}, 'series_val_1': {'model': ['RRFSE_CONUS_ICperts_nostoch.rrfs_conuscompact_3km_prob', 'RRFSE_CONUS_ICperts_stoch.rrfs_conuscompact_3km_prob']}, 'series_val_2': {}, diff --git a/test/test_agg_stats_with_groups.py b/test/test_agg_stats_with_groups.py index 91372b33..8c87f9ec 100644 --- a/test/test_agg_stats_with_groups.py +++ b/test/test_agg_stats_with_groups.py @@ -4,6 +4,7 @@ from metcalcpy import GROUP_SEPARATOR from metcalcpy.agg_stat import AggStat +cwd = os.path.dirname(__file__) def test_groups(): # prepare parameters @@ -13,10 +14,10 @@ def test_groups(): 'derived_series_1': [ ['Group_y1_1 TMP ME', 'Group_y1_2 TMP ME', 'DIFF']], 'derived_series_2': [], - 'agg_stat_input': 'data/agg_stat_with_groups_data.data', + 'agg_stat_input': f'{cwd}/data/agg_stat_with_groups_data.data', 'fcst_var_val_1': {'TMP': ['ME']}, 'fcst_var_val_2': {}, - 'agg_stat_output': 'data/agg_stat_with_groups_output.data', + 'agg_stat_output': f'{cwd}/data/agg_stat_with_groups_output.data', 'fixed_vars_vals_input': {'fcst_lev': {'fcst_lev_0': ['Z02']}}, 'series_val_1': {'model': ['GTS+RAIN3mm' + GROUP_SEPARATOR + 'GTS+RAIN4mm', 'GTS+RAIN50p' + GROUP_SEPARATOR + 'GTS+RAIN5mm']}, diff --git a/test/test_compare_images.py b/test/test_compare_images.py index 46bc133f..0bb6212c 100644 --- a/test/test_compare_images.py +++ b/test/test_compare_images.py @@ -1,12 +1,14 @@ import pytest +import os from metcalcpy.compare_images import CompareImages +cwd = os.path.dirname(__file__) @pytest.fixture def settings(): - compare_diff = CompareImages('data/img_1.png', 'data/img_2.png') - compare_same = CompareImages('data/img_1.png', 'data/img_1.png') + compare_diff = CompareImages(f'{cwd}/data/img_1.png', f'{cwd}/data/img_2.png') + compare_same = CompareImages(f'{cwd}/data/img_1.png', f'{cwd}/data/img_1.png') settings_dict = dict() settings_dict['compare_diff'] = compare_diff settings_dict['compare_same'] = compare_same diff --git a/test/test_ctc_statistics.py b/test/test_ctc_statistics.py index f4bef250..f888f4d9 100644 --- a/test/test_ctc_statistics.py +++ b/test/test_ctc_statistics.py @@ -1,9 +1,12 @@ import pytest import pandas as pd import sys +import os sys.path.append("../../") from metcalcpy.util import ctc_statistics as ctc +cwd = os.path.dirname(__file__) + def test_asc_sort_by_ctc_fcst_thresh(): """ Test that the pandas dataframe is correctly sorting the @@ -12,7 +15,7 @@ def test_asc_sort_by_ctc_fcst_thresh(): :return: """ - df = pd.read_csv("./data/threshold.csv") + df = pd.read_csv(f"{cwd}/data/threshold.csv") sorted_df = ctc.sort_by_thresh(df) expected_fcst_thresh_list = ['NA','0', '>=0','>=0','>=0', '>0.01', '<=1', '>=1&<=22.2', '>=1', '==3', '<5', '20', '>35&&<100.0', '>35', '100'] expected_fcst_thresh = pd.Series(expected_fcst_thresh_list) @@ -26,7 +29,7 @@ def test_desc_sort_by_ctc_fcst_thresh(): :return: """ - df = pd.read_csv("./data/threshold.csv") + df = pd.read_csv(f"{cwd}/data/threshold.csv") sorted_df = ctc.sort_by_thresh(df, ascending=False) expected_fcst_thresh_list = ['100', '>35', '>35&&<100.0', '20', '<5','==3', '>=1','>=1&<=22.2', '<=1', '>0.01', '>=0', '>=0', '>=0', '0', 'NA'] expected_fcst_thresh = pd.Series(expected_fcst_thresh_list) @@ -44,7 +47,7 @@ def test_calculate_ctc_roc_ascending(): """ # read in the CTC input data - df = pd.read_csv("./data/ROC_CTC.data", sep='\t', header='infer') + df = pd.read_csv(f"{cwd}/data/ROC_CTC.data", sep='\t', header='infer') expected_pody_list = [0.8457663, 0.7634846, 0.5093934, 0.1228585] expected_pody = pd.Series(expected_pody_list) expected_thresh_list = ['>=1','>=2','>=3','>=4'] @@ -84,7 +87,7 @@ def test_calculate_ctc_roc_descending(): """ # read in the CTC input data - df = pd.read_csv("./data/ROC_CTC.data", sep='\t', header='infer') + df = pd.read_csv(f"{cwd}/data/ROC_CTC.data", sep='\t', header='infer') ascending = False expected_pody_list = [0.1228585,0.5093934,0.7634846,0.8457663] expected_pody = pd.Series(expected_pody_list) @@ -109,7 +112,7 @@ def test_calculate_ctc_roc_descending(): def test_CTC_ROC_thresh(): # read in the CTC input data - df = pd.read_csv("./data/ROC_CTC_SFP.data", sep='\t', header='infer') + df = pd.read_csv(f"{cwd}/data/ROC_CTC_SFP.data", sep='\t', header='infer') ascending = False # All fcst_thresh values are >SFP30, so we expect only diff --git a/test/test_diagnostics_land_surface.py b/test/test_diagnostics_land_surface.py new file mode 100644 index 00000000..70c0fdf9 --- /dev/null +++ b/test/test_diagnostics_land_surface.py @@ -0,0 +1,60 @@ +"""Tests the functions in diagnostics/land_surface.py""" + +from metcalcpy.diagnostics.land_surface import calc_tci +from xarray.testing import assert_equal +import xarray as xr +import pandas as pd +import numpy as np + +import os + +__author__ = "Daniel Adriaansen (NCAR)" + +cwd = os.path.dirname(__file__) + +def test_calc_tci(): + """ + Test that the output of the calc_tci function is correct. + + Returns + ------- + None. + """ + + doXarray = True + doPandas = True + + if doXarray: + ###### Xarray DataArray case + # Input data for Xarray case + xr_input = xr.open_dataset(f'{cwd}/data/calc_tci_jja_xarray_input.nc') + + # Output data for Xarray case + xr_truth_var = '__xarray_dataarray_variable__' + xr_truth = xr.open_dataset(f'{cwd}/data/calc_tci_jja_xarray_output.nc') + + # Compute TCI + xr_test = calc_tci(xr_input['SOILWATER_10CM'],xr_input['LHFLX']) + + # Validate Xarray case + assert_equal(xr_truth[xr_truth_var],xr_test) + + if doPandas: + ###### Pandas DataFrame case + # Input data for Pandas case + pd_input = pd.read_csv(f'{cwd}/data/calc_tci_jja_pandas_input.csv') + + # There are three sites in the test data, each should have its own TCI value + pd_test = np.array([]) + for name,site in pd_input.groupby('station_id'): + pd_test = np.append(pd_test,calc_tci(site['SWC_F_MDS_1'],site['LE_F_MDS'])) + + # The truth values + pd_truth = np.array([-1.851168960504201,11.861239905560712,-2.0781980819945076]) + + # Validate Pandas case + for test,truth in tuple(zip(pd_test,pd_truth)): + assert test==truth + +if __name__ == "__main__": + test_calc_tci() diff --git a/test/test_event_equalize.py b/test/test_event_equalize.py index 395b9ecf..ba452fa5 100755 --- a/test/test_event_equalize.py +++ b/test/test_event_equalize.py @@ -2,6 +2,7 @@ import itertools import time import re +import os import pandas as pd import pytest @@ -11,6 +12,8 @@ from metcalcpy.util.utils import equalize_axis_data from metcalcpy import GROUP_SEPARATOR, DATE_TIME_REGEX +cwd = os.path.dirname(__file__) + def test_event_equalize(): """Tests event equalization.""" @@ -22,7 +25,7 @@ def test_event_equalize(): }) fcst_var_val = dict({'TCDC': ["BASER"]}) - input_data_file = 'data/event_equalize_input.data' + input_data_file = f'{cwd}/data/event_equalize_input.data' # read the input data file into a data frame input_data = pd.read_csv(input_data_file, header=[0], sep='\t') @@ -41,7 +44,7 @@ def test_event_equalize(): fixed_vars_vals_input = dict() fcst_var_val = dict({'TMP': ["ME"]}) - input_data_file = 'data/event_equalize_group_input.data' + input_data_file = f'{cwd}/data/event_equalize_group_input.data' # read the input data file into a data frame input_data = pd.read_csv(input_data_file, header=[0], sep='\t') @@ -153,7 +156,7 @@ def test_equalize_axis_data_no_fix_val(settings_no_fix_vals): ''' print("Testing equalize_axis_data with ROC CTC threshold data...") - input_file_list = ["data/ROC_CTC_thresh.data", "data/ROC_CTC.data"] + input_file_list = [f"{cwd}/data/ROC_CTC_thresh.data", f"{cwd}/data/ROC_CTC.data"] for input_file in input_file_list: cur_df = pd.read_csv(input_file, sep='\t') fix_vals_keys = [] @@ -189,7 +192,7 @@ def test_equalize_axis_data_no_fcst_var(settings_no_fcst_var_vals): ''' print("Testing equalize_axis_data with ROC CTC threshold data...") - input_file_list = ["data/ROC_CTC_thresh.data", "data/ROC_CTC.data"] + input_file_list = [f"{cwd}/data/ROC_CTC_thresh.data", f"{cwd}/data/ROC_CTC.data"] for input_file in input_file_list: cur_df = pd.read_csv(input_file, sep='\t') fix_vals_keys = [] diff --git a/test/test_event_equalize_against_values.py b/test/test_event_equalize_against_values.py index 6b0d9675..393993e9 100644 --- a/test/test_event_equalize_against_values.py +++ b/test/test_event_equalize_against_values.py @@ -1,9 +1,11 @@ """Tests the operation of METcalcpy's event_equalize_against_values code.""" +import os import pandas as pd from metcalcpy.event_equalize_against_values import event_equalize_against_values +cwd = os.path.dirname(__file__) def test_event_equalize_against_values(): """Tests event equalization against values.""" @@ -12,9 +14,9 @@ def test_event_equalize_against_values(): series_val = dict({'model': ["AFWAOCv3.5.1_d01", "NoahMPv3.5.1_d01"]}) fcst_var_val = dict({'APCP_03': ["RATIO_FSA_ASA"]}) - input_data_file = 'data/ee_av_input.data' - stats_input_data_file = 'data/stats_ee_av_input.data' - output_data_file = 'data/ee_av_output_py.data' + input_data_file = f'{cwd}/data/ee_av_input.data' + stats_input_data_file = f'{cwd}/data/stats_ee_av_input.data' + output_data_file = f'{cwd}/data/ee_av_output_py.data' # read the input data file into a data frame input_data = pd.read_csv(input_data_file, header=[0], sep='\t') diff --git a/test/test_future_warnings.py b/test/test_future_warnings.py index c2ed362d..391ab948 100644 --- a/test/test_future_warnings.py +++ b/test/test_future_warnings.py @@ -1,4 +1,5 @@ import pytest +import os import itertools import re import pandas as pd @@ -11,6 +12,8 @@ from metcalcpy.agg_stat_eqz import AggStatEventEqz from metcalcpy import GROUP_SEPARATOR, DATE_TIME_REGEX +cwd = os.path.dirname(__file__) + @pytest.fixture def settings(): """Initialise values for testing. @@ -41,7 +44,7 @@ def test_equalize_axis_data(settings): Test that the FutureWarning is no longer generated when invoking the util.utils.equalize_axis_data() function ''' print("Testing equalize_axis_data with 'dummy' event equalize data for FutureWarning...") - input_file = "data/event_equalize_dummy.data" + input_file = f"{cwd}/data/event_equalize_dummy.data" cur_df = pd.read_csv(input_file, sep='\t') fix_vals_keys = [] fix_vals_permuted_list = [] @@ -67,10 +70,10 @@ def settings_agg_stat(): 'derived_series_1': [ ['ENS001v3.6.1_d01 DPT FBAR', 'ENS001v3.6.1_d02 DPT FBAR', 'DIFF']], 'derived_series_2': [], - 'agg_stat_input': 'data/agg_stat_and_boot_data.data', + 'agg_stat_input': f'{cwd}/data/agg_stat_and_boot_data.data', 'fcst_var_val_1': {'DPT': ['FBAR']}, 'fcst_var_val_2': {}, - 'agg_stat_output': 'data/agg_stat_and_boot_output.data', + 'agg_stat_output':f'{cwd}/data/agg_stat_and_boot_output.data', 'fixed_vars_vals_input': {'fcst_lev': {'fcst_lev_0': ['P100']}}, 'series_val_1': {'model': ['ENS001v3.6.1_d01', 'ENS001v3.6.1_d02']}, 'series_val_2': {'model': ['ENS001v3.6.1_d01', 'ENS001v3.6.1_d02']}, @@ -132,8 +135,8 @@ def test_calculate_pstd_roc_auc(): ''' columns = np.array(['fcst_var','thresh_i','on_i', 'oy_i']) # 'thresh_i': [], 'oy_i': [], 'on_i': [] - # input_file = "data/reliability.data" - input_file = "data/roc_sample.data" + # input_file = f"{cwd}/data/reliability.data" + input_file = f"{cwd}/data/roc_sample.data" cur_df = pd.read_csv(input_file, sep='\t') input_data = np.array(cur_df) try: @@ -161,7 +164,7 @@ def test_aggregate_field_values(settings_ee_dummy): Test aggregation on field value that is NOT fcst_lead (to exercise one branch of the "if") to ensure no FutureWarnings are present (~line 513) ''' - input_file = "data/event_equalize_dummy.data" + input_file = f"{cwd}/data/event_equalize_dummy.data" cur_df = pd.read_csv(input_file, sep='\t') series_var_val = {} series_var_val['series_val_1'] = settings_ee_dummy['series_val_1'] @@ -193,7 +196,7 @@ def test_aggregate_field_values_agg_by_fcst_lead(settings_ee_dummy2): Test with aggregation based on fcst_lead to exercise the "else" to ensure no FutureWarnings are present (~line 562) ''' - input_file = "data/event_equalize_group_input.data" + input_file = f"{cwd}/data/event_equalize_group_input.data" cur_df = pd.read_csv(input_file, sep='\t') series_var_val = {} series_var_val['series_val_1'] = settings_ee_dummy2['series_val_1'] diff --git a/test/test_no_ARIMA_utils.py b/test/test_no_ARIMA_utils.py index f3dfc7ff..4fb10d7d 100644 --- a/test/test_no_ARIMA_utils.py +++ b/test/test_no_ARIMA_utils.py @@ -1,11 +1,12 @@ +import os import numpy as np import pandas as pd import metcalcpy.util.utils as utils - +cwd = os.path.dirname(__file__) def test_no_arima(): - data_file = "./data/scorecard.csv" + data_file = f"{cwd}/data/scorecard.csv" df = pd.read_csv(data_file) stat_values:pd.Series = df['stat_value'] diff --git a/test/test_reformatted_for_agg.py b/test/test_reformatted_for_agg.py index 322b9655..e5532614 100644 --- a/test/test_reformatted_for_agg.py +++ b/test/test_reformatted_for_agg.py @@ -3,6 +3,9 @@ import pytest import yaml from metcalcpy.agg_stat import AggStat +from metcalcpy.util.read_env_vars_in_config import parse_config + +cwd = os.path.dirname(__file__) def test_reformatted_input(): ''' @@ -15,14 +18,8 @@ def test_reformatted_input(): ''' # Read in the YAML config file - config_file = "./rrfs_ecnt_config_agg_stat.yaml" - - with open(config_file, 'r') as stream: - try: - parms: dict = yaml.load(stream, Loader=yaml.FullLoader) - - except yaml.YAMLError as exc: - print(exc) + config_file = f"{cwd}/rrfs_ecnt_config_agg_stat.yaml" + parms = parse_config(config_file) # Calculate the aggregation statistics using the specified YAML config file and reformatted # ECNT linetype data (reformatted via the METdataio METreformat module) @@ -44,7 +41,7 @@ def test_reformatted_input(): # dataframes. If any exist, the total number of rows will be reduced and the test fails, as this # input data should only produce valid stat_name values. clean_rmse = rmse_only[rmse_only['stat_value'].notna()] - clean_spread_plus_oerr = spread_plus_oerr_only[ spread_plus_oerr_only['stat_value'].notna()] + clean_spread_plus_oerr = spread_plus_oerr_only[spread_plus_oerr_only['stat_value'].notna()] num_cleaned_rmse = clean_rmse.shape[0] num_cleaned_spread_plus_oerr = clean_spread_plus_oerr.shape[0] diff --git a/test/test_scorecard.py b/test/test_scorecard.py index d06e33b8..e94ae094 100644 --- a/test/test_scorecard.py +++ b/test/test_scorecard.py @@ -1,8 +1,10 @@ import pytest +import os import numpy as np from metcalcpy.scorecard import Scorecard, pd +cwd = os.path.dirname(__file__) def test_calculate_scorecard_data(settings): scorecard = settings['scorecard'] @@ -81,8 +83,8 @@ def settings(): ['AFWAOCv3.5.1_d01', 'NoahMPv3.5.1_d01']}, 'stat_flag': 'NCAR', - 'sum_stat_input': 'data/scorecard.data', - 'sum_stat_output': 'data/scorecard_output.data' + 'sum_stat_input': f'{cwd}/data/scorecard.data', + 'sum_stat_output': f'{cwd}/data/scorecard_output.data' } scorecard = Scorecard(params) diff --git a/test/test_spacetime.py b/test/test_spacetime.py index 91ae7040..c4662f08 100644 --- a/test/test_spacetime.py +++ b/test/test_spacetime.py @@ -8,7 +8,8 @@ local scripts, if loading from a different directory include that with a '.' between directory name and script name """ -sys.path.append("../metcalcpy/contributed/spacetime") +cwd = os.path.dirname(__file__) +sys.path.append(f"{cwd}/../metcalcpy/contributed/spacetime") from spacetime import mjo_cross from spacetime import get_symmasymm from spacetime_utils import save_Spectra diff --git a/test/test_utils.py b/test/test_utils.py index 3d4cd87f..a4df95f3 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -2,12 +2,14 @@ import numpy as np import pandas as pd import pytest +import os from metcalcpy.util.utils import represents_int, is_string_integer, get_derived_curve_name, calc_derived_curve_value, \ unique, intersection, is_derived_point, parse_bool, round_half_up, sum_column_data_by_name, \ nrow_column_data_by_name_value, create_permutations_mv, column_data_by_name, calculate_mtd_revision_stats, \ - autocor_coef, is_string_strictly_float + autocor_coef, is_string_strictly_float, get_met_version +cwd = os.path.dirname(__file__) @pytest.fixture def settings(): @@ -194,7 +196,7 @@ def test_create_permutations_mv_list(): def test_calculate_mtd_revision_stats(): - df = pd.read_csv('data/mtd_revision.data', index_col=0) + df = pd.read_csv(f'{cwd}/data/mtd_revision.data', index_col=0) stats = calculate_mtd_revision_stats(df) assert stats.get("ww_run") == 0 assert stats.get("auto_cor_p") == 0 @@ -221,3 +223,73 @@ def test_autocor_coef(): test_sum_column_data_by_name() test_calculate_mtd_revision_stats() test_autocor_coef() + + +def test_get_met_versions_np(): + """ + Verify the get_met_versions code behaves as expected for + numpy input data. + """ + data = [["V12.0", "FCST", "1.2"], ["V12.0", "FCST", "3.2"]] + uc_column_names = ["VERSION", "MODEL", "SOME_VALUE"] + pd_dummy = pd.DataFrame(data, columns=uc_column_names) + + np_dummy = pd_dummy.to_numpy() + + major_expected = int(12) + minor_expected = int(0) + bugfix_expected = int(0) + # test with numpy array and upper case column names + np_version = get_met_version(np_dummy, uc_column_names) + assert major_expected == int(np_version.major) + assert minor_expected == int(np_version.minor) + assert bugfix_expected == int(np_version.bugfix) + + + + +def test_get_met_versions_np_no_cols(): + """ + Verify the get_met_versions code behaves as expected for + numpy input data and missing column names by raising a + ValueError + """ + + data = [["V12.0", "FCST", "1.2"], ["V12.0", "FCST", "3.2"]] + uc_column_names = ["VERSION", "MODEL", "SOME_VALUE"] + pd_dummy = pd.DataFrame(data, columns=uc_column_names) + + np_dummy = pd_dummy.to_numpy() + + # test with numpy array missing the column names + with pytest.raises(ValueError): + get_met_version(np_dummy) + +def test_get_met_versions_pandas(): + """ + Verify the get_met_versions code behaves as expected for + pandas input data. + """ + data = [["V12.1.1", "FCST", "0.1"], ["V12.0", "FCST", "13.2"]] + uc_column_names = ["VERSION", "MODEL", "SOME_STAT"] + pd_dummy = pd.DataFrame(data, columns=uc_column_names) + + # Verify pandas input produces correct results + major_expected = int(12) + minor_expected = int(1) + bugfix_expected = int(1) + pd_version = get_met_version(pd_dummy) + assert major_expected == int(pd_version.major) + assert minor_expected == int(pd_version.minor) + assert bugfix_expected == int(pd_version.bugfix) + +def test_get_met_versions_pandas(): + """ + Verify the get_met_versions code behaves as expected for + data that isn't pandas or numpy by raising a ValueError + """ + + data = ["A", 1, "Z"] + # Verify that any other input raises an error + with pytest.raises(ValueError): + get_met_version(data) diff --git a/test/val1l2_agg_stat.yaml b/test/val1l2_agg_stat.yaml new file mode 100644 index 00000000..4fbcd881 --- /dev/null +++ b/test/val1l2_agg_stat.yaml @@ -0,0 +1,43 @@ +agg_stat_input: !ENV "${TEST_DIR}/data/point_stat/point_stat_GRIB1_NAM_GDAS_MASK_SID_120000L_20120409_120000V_val1l2.txt" +agg_stat_output: !ENV "${TEST_DIR}/calcpy_val1l2_agg.txt" +alpha: 0.05 +append_to_file: null +circular_block_bootstrap: True +derived_series_1: [] +derived_series_2: [] +event_equal: False +fcst_var_val_1: + UGRD_VGRD: + - VAL1L2_DIRA_ME + - VAL1L2_DIRA_MAE + - VAL1L2_DIRA_MSE +fcst_var_val_2: {} +indy_vals: +#- '30000' +#- '40000' +#- '60000' +#- '90000' +- '120000' +#- '150000' +#- '160000' +#- '170000' +#- '180000' +#- '200000' +#- '240000' +#- '270000' + +indy_var: fcst_lead +line_type: val1l2 +list_stat_1: + - VAL1L2_DIRA_ME + - VAL1L2_DIRA_MAE + - VAL1L2_DIRA_MSE +list_stat_2: [] +method: perc +num_iterations: 1 +num_threads: -1 +random_seed: null +series_val_1: + model: + - FCST +series_val_2: {} diff --git a/test/vcnt_agg_stat.yaml b/test/vcnt_agg_stat.yaml new file mode 100644 index 00000000..aded8e42 --- /dev/null +++ b/test/vcnt_agg_stat.yaml @@ -0,0 +1,45 @@ +agg_stat_input: !ENV "${TEST_DIR}/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vcnt.txt" +agg_stat_output: !ENV "${TEST_DIR}/calcpy_vcnt_agg.txt" +alpha: 0.05 +append_to_file: null +circular_block_bootstrap: True +derived_series_1: [] +derived_series_2: [] +event_equal: False +fcst_var_val_1: + UGRD_VGRD: + - VCNT_DIR_ME + - VCNT_DIR_MAE + - VCNT_DIR_MSE + - VCNT_DIR_RMSE +fcst_var_val_2: {} +indy_vals: +#- '30000' +#- '40000' +#- '60000' +#- '90000' +#- '120000' +- '150000' +#- '160000' +#- '170000' +#- '180000' +#- '200000' +#- '240000' +#- '270000' + +indy_var: fcst_lead +line_type: val1l2 +list_stat_1: + - VCNT_DIR_ME + - VCNT_DIR_MAE + - VCNT_DIR_MSE + - VCNT_DIR_RMSE +list_stat_2: [] +method: perc +num_iterations: 1 +num_threads: -1 +random_seed: null +series_val_1: + model: + - FCST +series_val_2: {} diff --git a/test/vl1l2_agg_stat_met_v12.yaml b/test/vl1l2_agg_stat_met_v12.yaml new file mode 100644 index 00000000..c74458e1 --- /dev/null +++ b/test/vl1l2_agg_stat_met_v12.yaml @@ -0,0 +1,43 @@ +agg_stat_input: !ENV "${TEST_DIR}/data/point_stat/point_stat_GRIB2_SREF_GDAS_150000L_20120409_120000V_vl1l2.txt" +agg_stat_output: !ENV "${TEST_DIR}/met_v12_v1l1l2_agg.txt" +alpha: 0.05 +append_to_file: null +circular_block_bootstrap: True +derived_series_1: [] +derived_series_2: [] +event_equal: False +fcst_var_val_1: + UGRD_VGRD: + - VL1L2_DIR_ME + - VL1L2_DIR_MAE + - VL1L2_DIR_MSE +fcst_var_val_2: {} +indy_vals: +#- '30000' +#- '40000' +#- '60000' +#- '90000' +#- '120000' +- '150000' +#- '160000' +#- '170000' +#- '180000' +#- '200000' +#- '240000' +#- '270000' + +indy_var: fcst_lead +line_type: vl1l2 +list_stat_1: + - VL1L2_DIR_ME + - VL1L2_DIR_MAE + - VL1L2_DIR_MSE +list_stat_2: [] +method: perc +num_iterations: 1 +num_threads: -1 +random_seed: null +series_val_1: + model: + - FCST +series_val_2: {}