diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d4a2c44 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# http://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true +charset = utf-8 +end_of_line = lf + +[*.bat] +indent_style = tab +end_of_line = crlf + +[LICENSE] +insert_final_newline = false + +[Makefile] +indent_style = tab diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..c89fc62 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug Report +about: Create a bug report to help us improve +labels: bug +--- + + + +### Environment Information + +- hydromodel version: +- Python version: +- Operating System: + +### Description + +Describe what you were trying to get done. +Tell us what happened, what went wrong, and what you expected to happen. + +### What I Did + +``` +Paste the command(s) you ran and the output. +If there was a crash, please include the traceback here. +``` diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..de46af5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,10 @@ +contact_links: + - name: Ask questions + url: https://github.com/OuyangWenyu/hydro-model-xaj/discussions/categories/q-a + about: Please ask and answer questions here. + - name: Ideas + url: https://github.com/OuyangWenyu/hydro-model-xaj/discussions/categories/ideas + about: Please share your ideas here. + - name: Ask questions from the GIS community + url: https://gis.stackexchange.com + about: To get answers from questions in the GIS community, please ask and answer questions here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..cf7acb9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,18 @@ +--- +name: Feature Request +about: Submit a feature request to help us improve +labels: Feature Request +--- + + + +### Description + +Describe the feature (e.g., new functions/tutorials) you would like to propose. +Tell us what can be achieved with this new feature and what's the expected outcome. + +### Source code + +``` +Paste your source code here if have sample code to share. +``` diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml new file mode 100644 index 0000000..876561c --- /dev/null +++ b/.github/workflows/docs-build.yml @@ -0,0 +1,51 @@ +name: docs-build +on: + pull_request: + branches: + - master + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install GDAL + run: | + python -m pip install --upgrade pip + pip install --find-links=https://girder.github.io/large_image_wheels --no-cache GDAL pyproj + - name: Test GDAL installation + run: | + python -c "from osgeo import gdal" + gdalinfo --version + - name: Install dependencies + run: | + pip install --no-cache-dir Cython + pip install -r requirements.txt -r requirements_dev.txt -r requirements_docs.txt + pip install . + - name: Discover typos with codespell + run: codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff,*.pdf,./.git" --ignore-words-list="aci,acount,acounts,fallow,hart,hist,nd,ned,ois,wqs" + - name: PKG-TEST + run: | + python -m unittest discover tests/ + - name: Build docs + run: | + mkdocs build + # - name: Deploy to Netlify + # uses: nwtgck/actions-netlify@v2.0 + # with: + # publish-dir: "./site" + # production-branch: master + # github-token: ${{ secrets.GITHUB_TOKEN }} + # deploy-message: "Deploy from GitHub Actions" + # enable-pull-request-comment: true + # enable-commit-comment: false + # overwrites-pull-request-comment: true + # env: + # NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + # NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + # timeout-minutes: 10 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..6ea88e5 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,28 @@ +name: docs +on: + push: + branches: + - master +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: 3.9 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install --user --no-cache-dir Cython + pip install --user -r requirements.txt + pip install . + - name: Discover typos with codespell + run: | + pip install codespell + codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff,./.git" --ignore-words-list="aci,acount,acounts,fallow,hart,hist,nd,ned,ois,wqs,watermask" + - name: PKG-TEST + run: | + python -m unittest discover tests/ + - run: pip install -r requirements_docs.txt + - run: mkdocs gh-deploy --force diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..4b3ed55 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,38 @@ +on: + push: + branches: + - master + pull_request: + branches: + - master + +name: macOS build +jobs: + test-macOS: + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} (${{ matrix.python-version}}) + strategy: + fail-fast: false + matrix: + os: ["macOS-latest"] + python-version: ["3.10"] + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version}} + - name: Install GDAL + run: | + brew install gdal + - name: Test GDAL installation + run: | + gdalinfo --version + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install --no-cache-dir Cython + pip install -r requirements.txt + pip install . diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi-token.yml similarity index 79% rename from .github/workflows/publish-to-pypi.yml rename to .github/workflows/publish-to-pypi-token.yml index 11a4285..ef3c9e2 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi-token.yml @@ -1,19 +1,21 @@ name: Publish Python distributions to PyPI -on: push +on: + push: + workflow_dispatch: jobs: build-n-publish: name: Build and publish Python distributions to PyPI runs-on: ubuntu-latest - + steps: - uses: actions/checkout@master - name: Set up Python 3.9 uses: actions/setup-python@v1 with: python-version: 3.9 - + - name: Install pypa/build run: >- python -m @@ -28,9 +30,8 @@ jobs: --wheel --outdir dist/ . - - name: Publish distribution to PyPI - if: startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@master + uses: pypa/gh-action-pypi-publish@release/v1 with: - password: ${{ secrets.PYPI_API_TOKEN }} + user: __token__ + password: ${{ secrets.HYDRO_XAJ_TOKEN }} diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml new file mode 100644 index 0000000..2bbb0c0 --- /dev/null +++ b/.github/workflows/pypi.yml @@ -0,0 +1,30 @@ +# This workflows will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: pypi + +on: + release: + types: [created] + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.x" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERS }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist bdist_wheel + twine upload dist/* diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml new file mode 100644 index 0000000..6cb7c0c --- /dev/null +++ b/.github/workflows/ubuntu.yml @@ -0,0 +1,48 @@ +on: + push: + branches: + - master + - dev + pull_request: + branches: + - master + - dev + +name: Linux build +jobs: + py-check: + runs-on: ${{ matrix.config.os }} + name: ${{ matrix.config.os }} (${{ matrix.config.py }}) + strategy: + fail-fast: false + matrix: + config: + - { os: ubuntu-latest, py: "3.8" } + - { os: ubuntu-latest, py: "3.9" } + - { os: ubuntu-latest, py: "3.10" } + - { os: ubuntu-latest, py: "3.11" } + steps: + - name: Checkout Code + uses: actions/checkout@v3 + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.config.py }} + - name: Install GDAL + run: | + python -m pip install --upgrade pip + pip install --no-cache-dir Cython + pip install --find-links=https://girder.github.io/large_image_wheels --no-cache GDAL + - name: Test GDAL installation + run: | + python -c "from osgeo import gdal" + gdalinfo --version + - name: Install dependencies + run: | + pip install --user -r requirements.txt + pip install --user -r requirements_dev.txt + pip install . + - name: PKG-TEST + run: | + python -m unittest discover tests/ + diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..9e9deaa --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,33 @@ +on: + push: + branches: + - master + - dev + pull_request: + branches: + - master + - dev + +name: Windows build +jobs: + test-windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Install miniconda + uses: conda-incubator/setup-miniconda@v2 + with: + auto-activate-base: true + python-version: "3.10" + - name: Install GDAL + run: conda install -c conda-forge gdal --yes + - name: Test GDAL installation + run: | + python -c "from osgeo import gdal" + gdalinfo --version + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install --no-cache-dir Cython + pip install -r requirements.txt + pip install . diff --git a/AUTHORS.rst b/AUTHORS.rst new file mode 100644 index 0000000..a199192 --- /dev/null +++ b/AUTHORS.rst @@ -0,0 +1,13 @@ +======= +Credits +======= + +Development Lead +---------------- + +* Wenyu Ouyang + +Contributors +------------ + +None yet. Why not be the first? diff --git a/MANIFEST.in b/MANIFEST.in index 57fdc18..89411aa 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1,7 @@ -recursive-include XXX *.csv *.txt # 打包需包含csv、txt为后缀的文件;XXX为包名 \ No newline at end of file +include LICENSE +include README.md +include requirements.txt + +recursive-exclude * __pycache__ +recursive-exclude * *.py[co] + diff --git a/environment-dev.yml b/environment-dev.yml index 81764f5..d6be0cb 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -13,9 +13,18 @@ dependencies: - spotpy=1.5.14 - seaborn - tqdm + - yaml + - bmipy + # for dev - sphinx - pytest - black + - flake8 + # pip - pip - pip: + - setuptools + - wheel + - twine + - bump2version - hydrodataset diff --git a/environment.yml b/environment.yml index 02544ac..da831b9 100644 --- a/environment.yml +++ b/environment.yml @@ -13,7 +13,8 @@ dependencies: - spotpy=1.5.14 - seaborn - tqdm - - pytest + - yaml + - bmipy - pip - pip: - hydrodataset diff --git a/hydromodel/app/dockerfile b/hydromodel/app/dockerfile new file mode 100644 index 0000000..af94fa3 --- /dev/null +++ b/hydromodel/app/dockerfile @@ -0,0 +1,13 @@ +FROM ewatercycle/wflow-grpc4bmi +MAINTAINER wangjingyi <1160527180@qq.com> + +# Install grpc4bmi +RUN pip install grpc4bmi==0.2.8 + +# Set environment +WORKDIR /home +ENV BMI_MODULE=bmixaj +ENV BMI_CLASS=Bmixaj +ENV BMI_PORT=55555 +ENTRYPOINT ["run-bmi-server", "--name", "xaj.xaj_bmi.xajBmi", "--path", "/home/wangjingyi/code/hydro-model-xaj/xaj"] +EXPOSE 55555 \ No newline at end of file diff --git a/hydromodel/calibrate/calibrate_ga_xaj_bmi.py b/hydromodel/calibrate/calibrate_ga_xaj_bmi.py new file mode 100644 index 0000000..71dd54a --- /dev/null +++ b/hydromodel/calibrate/calibrate_ga_xaj_bmi.py @@ -0,0 +1,381 @@ +"""Calibrate XAJ model using DEAP""" +import os +import pickle +import random +import sys +from pathlib import Path + +import numpy as np +import pandas as pd +from deap import base, creator +from deap import tools +from tqdm import tqdm + +sys.path.append(os.path.dirname(Path(os.path.abspath(__file__)).parent.parent)) +import definitions +from hydromodel.models.model_config import MODEL_PARAM_DICT +from hydromodel.utils import hydro_constant, hydro_utils +from hydromodel.utils import stat +from hydromodel.utils.stat import statRmse +from hydromodel.visual.hydro_plot import plot_sim_and_obs, plot_train_iteration +from hydromodel.models.xaj_bmi import xajBmi + + +def evaluate(individual, x_input, y_true, warmup_length, model): + """ + Calculate fitness for optimization + + Parameters + ---------- + individual + individual is the params of XAJ (see details in xaj.py); we initialize all parameters in range [0,1] + x_input + input of XAJ + y_true + observation data; we use the part after warmup period + warmup_length + the length of warmup period + model + model's name: "xaj", "xaj_mz", "gr4j", or "hymod" + + Returns + ------- + float + fitness + """ + # print("Calculate fitness:") + # NOTE: Now only support one basin's calibration for once now + params = np.array(individual).reshape(1, -1) + if model["name"] in ["xaj", "xaj_mz"]: + # xaj model's output include streamflow and evaporation now, + # but now we only calibrate the model with streamflow + model = xajBmi() + model.initialize(os.path.relpath('runxaj.yaml'), params, x_input) + while model.get_current_time() <= model.get_end_time('train'): + model.update() + sim = model.get_value("discharge") + sim = np.expand_dims(sim, 0) + sim = np.expand_dims(sim, 1) + sim = np.transpose(sim, [2, 1, 0]) + else: + raise NotImplementedError("We don't provide this model now") + rmses = statRmse(y_true[warmup_length:, :, :], sim) + rmse = rmses.mean(axis=0) + # print(f"-----------------RMSE: {str(rmse)}------------------------") + return rmse + + +def checkBounds(min, max): + """ + A decorator to set bounds for individuals in a population + + Parameters + ---------- + min + the lower bound of individuals + max + the upper bound of individuals + + Returns + ------- + Function + a wrapper for clipping data into a given bound + """ + + def decorator(func): + def wrapper(*args, **kargs): + offspring = func(*args, **kargs) + for child in offspring: + for i in range(len(child)): + if child[i] > max: + child[i] = max + elif child[i] < min: + child[i] = min + return offspring + + return wrapper + + return decorator + + +MIN = 0 +MAX = 1 + + +def calibrate_by_ga( + input_data, observed_output, deap_dir, warmup_length=30, model=None, ga_param=None +): + """ + Use GA algorithm to find optimal parameters for hydrologic models + + Parameters + ---------- + input_data + the input data for model + observed_output + the "true" values, i.e. observations + deap_dir + the directory to save the results + warmup_length + the length of warmup period + model + the model setting + ga_param + random_seed: 1234 + run_counts: int = 40, running counts + pop_num: int = 50, the number of individuals in the population + cross_prob: float = 0.5, the probability with which two individuals are crossed + mut_prob: float=0.5, the probability for mutating an individual + + Returns + ------- + toolbox.population + optimal_params + """ + if model is None: + model = { + "name": "xaj_mz", + "source_type": "sources", + "source_book": "HF", + } + if ga_param is None: + ga_param = { + "random_seed": 1234, + "run_counts": 5, + "pop_num": 50, + "cross_prob": 0.5, + "mut_prob": 0.5, + "save_freq": 1, + } + np.random.seed(ga_param["random_seed"]) + param_num = len(MODEL_PARAM_DICT[model["name"]]["param_name"]) + creator.create("FitnessMin", base.Fitness, weights=(-1.0,)) + creator.create("Individual", list, fitness=creator.FitnessMin) + toolbox = base.Toolbox() + toolbox.register("attribute", random.random) + toolbox.register( + "individual", + tools.initRepeat, + creator.Individual, + toolbox.attribute, + n=param_num, + ) + toolbox.register("population", tools.initRepeat, list, toolbox.individual) + + toolbox.register("mate", tools.cxTwoPoint) + toolbox.register("mutate", tools.mutGaussian, mu=0, sigma=1, indpb=0.1) + toolbox.register("select", tools.selTournament, tournsize=3) + toolbox.register( + "evaluate", + evaluate, + x_input=input_data, + y_true=observed_output, + warmup_length=warmup_length, + model=model, + ) + + toolbox.decorate("mate", checkBounds(MIN, MAX)) + toolbox.decorate("mutate", checkBounds(MIN, MAX)) + pop = toolbox.population(n=ga_param["pop_num"]) + # cxpb is the probability with which two individuals are crossed + # mutpb is the probability for mutating an individual + cxpb, mutpb = ga_param["cross_prob"], ga_param["mut_prob"] + + # save the best individual + halloffame = tools.HallOfFame(maxsize=1) + logbook = tools.Logbook() + stats = tools.Statistics(lambda ind: ind.fitness.values) + stats.register("avg", np.mean) + stats.register("min", np.min) + + # Evaluate the entire population for the first time + print("Initiliazing population...") + fitnesses = map(toolbox.evaluate, pop) + for ind, fit in zip(pop, fitnesses): + ind.fitness.values = fit + halloffame.update(pop) + record = stats.compile(pop) + logbook.record(gen=0, evals=len(pop), **record) + cp = dict( + population=pop, + generation=0, + halloffame=halloffame, + logbook=logbook, + rndstate=random.getstate(), + ) + with open(os.path.join(deap_dir, "epoch0.pkl"), "wb") as cp_file: + pickle.dump(cp, cp_file) + + for gen in tqdm(range(ga_param["run_counts"]), desc="GA calibrating"): + + print(f"Generation {gen} started...") + # Select the next generation individuals + offspring = toolbox.select(pop, len(pop)) + # Clone the selected individuals + offspring = list(map(toolbox.clone, offspring)) + + # Apply crossover and mutation on the offspring + for child1, child2 in zip(offspring[::2], offspring[1::2]): + if random.random() < cxpb: + toolbox.mate(child1, child2) + del child1.fitness.values + del child2.fitness.values + + for mutant in offspring: + if random.random() < mutpb: + toolbox.mutate(mutant) + del mutant.fitness.values + + # Evaluate the individuals with an invalid fitness + invalid_ind = [ind for ind in offspring if not ind.fitness.valid] + fitnesses = map(toolbox.evaluate, invalid_ind) + for ind, fit in tqdm( + zip(invalid_ind, fitnesses), + desc=f"{str(gen + 1)} generation fitness calculating", + ): + ind.fitness.values = fit + + halloffame.update(offspring) + record = stats.compile(offspring) + # +1 means start from 1, 0 means initial generation + logbook.record(gen=gen + 1, evals=len(invalid_ind), **record) + # The population is entirely replaced by the offspring + pop[:] = offspring + print( + f"Best individual of {str(gen + 1)}" + + f" generation is: {halloffame[0]}, {halloffame[0].fitness.values}" + ) + if gen % ga_param["save_freq"] == 0: + # Fill the dictionary using the dict(key=value[, ...]) constructor + cp = dict( + population=pop, + generation=gen + 1, + halloffame=halloffame, + logbook=logbook, + rndstate=random.getstate(), + ) + + with open( + os.path.join(deap_dir, f"epoch{str(gen + 1)}.pkl"), "wb" + ) as cp_file: + pickle.dump(cp, cp_file) + print(f"Files of generation {gen} saved.") + top10 = tools.selBest(pop, k=10) + return pop + + +def show_ga_result( + deap_dir, + warmup_length, + basin_id, + the_data, + the_period, + basin_area, + model_info, + result_unit="mm/day", + train_mode=True, +): + """ + show the result of GA + """ + # https://stackoverflow.com/questions/61065222/python-deap-and-multiprocessing-on-windows-attributeerror + creator.create("FitnessMin", base.Fitness, weights=(-1.0,)) + creator.create("Individual", list, fitness=creator.FitnessMin) + with open(os.path.join(deap_dir, "epoch2.pkl"), "rb") as cp_file: + cp = pickle.load(cp_file) + pop = cp["population"] + logbook = cp["logbook"] + halloffame = cp["halloffame"] + print(f"Best individual is: {halloffame[0]}, {halloffame[0].fitness.values}") + train_test_flag = "train" if train_mode else "test" + + model = xajBmi() + model.initialize("runxaj.yaml", np.array(list(halloffame[0])).reshape(1, -1), the_data[:, :, 0:2]) + while model.get_current_time() <= model.get_end_time('train'): + model.update() + best_simulation = model.get_value("discharge") + + convert_unit_sim = hydro_constant.convert_unit( + np.array(best_simulation).reshape(1, -1), + # best_simulation, + result_unit, + hydro_constant.unit["streamflow"], + basin_area=basin_area, + ) + convert_unit_obs = hydro_constant.convert_unit( + np.array(the_data[warmup_length:, :, -1:]).reshape(1, -1), + result_unit, + hydro_constant.unit["streamflow"], + basin_area=basin_area, + ) + # save calibrated results of calibration period + the_result_file = os.path.join( + deap_dir, + f"{train_test_flag}_qsim_" + model_info["name"] + "_" + str(basin_id) + ".csv", + ) + pd.DataFrame(convert_unit_sim.reshape(-1, 1)).to_csv( + the_result_file, + sep=",", + index=False, + header=False, + ) + # calculation rmse、nashsutcliffe and bias for training period + stat_error = stat.statError( + convert_unit_obs, + convert_unit_sim, + ) + print(f"{train_test_flag}ing metrics:", basin_id, stat_error) + hydro_utils.serialize_json_np( + stat_error, os.path.join(deap_dir, f"{train_test_flag}_metrics.json") + ) + t_range = pd.to_datetime(the_period[warmup_length:]).values.astype("datetime64[D]") + save_fig = os.path.join(deap_dir, f"{train_test_flag}_results.png") + if train_mode: + save_param_file = os.path.join(deap_dir, basin_id + "_calibrate_params.txt") + pd.DataFrame(list(halloffame[0])).to_csv( + save_param_file, sep=",", index=False, header=True + ) + fit_mins = logbook.select("min") + plot_train_iteration(fit_mins, os.path.join(deap_dir, "train_iteration.png")) + plot_sim_and_obs( + t_range, + convert_unit_sim.flatten(), + convert_unit_obs.flatten(), + save_fig, + ) + + +if __name__ == "__main__": + data_dir = os.path.join( + definitions.ROOT_DIR, + "hydromodel", + "example", + "exp004", + ) + deap_dir = os.path.join( + data_dir, + "Dec25_16-33-56_LAPTOP-DNQOPPMS_fold0_HFsources", + "60668", + ) + train_data_info_file = os.path.join(data_dir, "data_info_fold0_train.json") + train_data_file = os.path.join(data_dir, "basins_lump_p_pe_q_fold0_train.npy") + data_train = hydro_utils.unserialize_numpy(train_data_file) + data_info_train = hydro_utils.unserialize_json_ordered(train_data_info_file) + model_info = { + "name": "xaj_mz", + "source_type": "sources", + "source_book": "HF", + } + train_period = data_info_train["time"] + basin_area = data_info_train["area"][0] + + show_ga_result( + deap_dir, + 365, + "60668", + data_train[:, 0:1, :], + train_period, + basin_area, + model_info, + result_unit="mm/day", + ) diff --git a/hydromodel/calibrate/calibrate_sceua_xaj_bmi.py b/hydromodel/calibrate/calibrate_sceua_xaj_bmi.py new file mode 100644 index 0000000..404cd4b --- /dev/null +++ b/hydromodel/calibrate/calibrate_sceua_xaj_bmi.py @@ -0,0 +1,209 @@ +from typing import Union +import numpy as np +import spotpy +from spotpy.parameter import Uniform, ParameterSet +from spotpy.objectivefunctions import rmse +from hydromodel.models.model_config import MODEL_PARAM_DICT +from hydromodel.models.xaj_bmi import xajBmi + + +class SpotSetup(object): + def __init__( + self, + p_and_e, + qobs, + warmup_length=30, + model={ + "name": "xaj_mz", + "source_type": "sources", + "source_book": "HF", + }, + obj_func=None, + ): + """ + Set up for Spotpy + + Parameters + ---------- + p_and_e + inputs of model + qobs + observation data + warmup_length + GR4J model need warmup period + model + we support "gr4j", "hymod", and "xaj" + model_func_param + parameters of model function + obj_func + objective function, typically RMSE + """ + self.parameter_names = MODEL_PARAM_DICT[model["name"]]["param_name"] + self.model = model + self.params = [] + for par_name in self.parameter_names: + # All parameters' range are [0,1], we will transform them to normal range in the model + self.params.append(Uniform(par_name, low=0.0, high=1.0)) + # Just a way to keep this example flexible and applicable to various examples + self.obj_func = obj_func + # Load Observation data from file + self.p_and_e = p_and_e + # chose observation data after warmup period + self.true_obs = qobs[warmup_length:, :, :] + self.warmup_length = warmup_length + + def parameters(self): + return spotpy.parameter.generate(self.params) + + def simulation(self, x: ParameterSet) -> Union[list, np.array]: + """ + run xaj model + + Parameters + ---------- + x + the parameters of xaj. This function only has this one parameter. + + Returns + ------- + Union[list, np.array] + simulated result from xaj + """ + # Here the model is started with one parameter combination + # parameter, 2-dim variable: [basin=1, parameter] + params = np.array(x).reshape(1, -1) + model = xajBmi() + # xaj model's output include streamflow and evaporation now, + # but now we only calibrate the model with streamflow + + model.initialize('runxaj.yaml', params, self.p_and_e) + while model.get_current_time() <= model.get_end_time('train'): + model.update() + sim=model.get_value("discharge") + sim = np.expand_dims(sim, 0) + sim = np.expand_dims(sim, 1) + sim = np.transpose(sim, [2,1,0]) + return sim[:, 0, 0] + + def evaluation(self) -> Union[list, np.array]: + """ + read observation values + + Returns + ------- + Union[list, np.array] + observation + """ + # TODO: we only support one basin's calibration now + + return self.true_obs[:, 0, 0] + + def objective_function( + self, + simulation: Union[list, np.array], + evaluation: Union[list, np.array], + params=None, + ) -> float: + """ + A user defined objective function to calculate fitness. + + Parameters + ---------- + simulation: + simulation results + evaluation: + evaluation results + params: + parameters leading to the simulation + + Returns + ------- + float + likelihood + """ + # SPOTPY expects to get one or multiple values back, + # that define the performance of the model run + print(simulation.shape, evaluation.shape) + if not self.obj_func: + # This is used if not overwritten by user + like = rmse(evaluation, simulation) + else: + # Way to ensure flexible spot setup class + like = self.obj_func(evaluation, simulation) + return like + + +def calibrate_by_sceua( + p_and_e, + qobs, + dbname, + warmup_length=30, + model={ + "name": "xaj_mz", + "source_type": "sources", + "source_book": "HF", + }, + algorithm={ + "name": "SCE_UA", + "random_seed": 1234, + "rep": 1000, + "ngs": 1000, + "kstop": 500, + "peps": 0.001, + "pcento": 0.001, + }, +): + """ + Function for calibrating model by SCE-UA + + Now we only support one basin's calibration in one sampler + + Parameters + ---------- + p_and_e + inputs of model + qobs + observation data + dbname + where save the result file of sampler + warmup_length + the length of warmup period + model + we support "gr4j", "hymod", and "xaj", parameters for hydro model + calibrate_algo + calibrate algorithm. For example, if you want to calibrate xaj model, + and use sce-ua algorithm -- random seed=2000, rep=5000, ngs=7, kstop=3, peps=0.1, pcento=0.1 + + Returns + ------- + None + """ + random_seed = algorithm["random_seed"] + rep = algorithm["rep"] + ngs = algorithm["ngs"] + kstop = algorithm["kstop"] + peps = algorithm["peps"] + pcento = algorithm["pcento"] + np.random.seed(random_seed) # Makes the results reproduceable + + # Initialize the xaj example + # In this case, we tell the setup which algorithm we want to use, so + # we can use this exmaple for different algorithms + spot_setup = SpotSetup( + p_and_e, + qobs, + warmup_length=warmup_length, + model=model, + obj_func=spotpy.objectivefunctions.rmse, + ) + # Select number of maximum allowed repetitions + sampler = spotpy.algorithms.sceua( + spot_setup, + dbname=dbname, + dbformat="csv", + random_state=random_seed, + ) + # Start the sampler, one can specify ngs, kstop, peps and pcento id desired + sampler.sample(rep, ngs=ngs, kstop=kstop, peps=peps, pcento=pcento) + print("Calibrate Finished!") + return sampler diff --git a/hydromodel/example/__init__.py b/hydromodel/example/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/hydromodel/example/division_flow.csv b/hydromodel/example/division_flow.csv new file mode 100644 index 0000000..23dddb9 --- /dev/null +++ b/hydromodel/example/division_flow.csv @@ -0,0 +1,9132 @@ +flow +0.571000 +0.623000 +1.202000 +1.342000 +0.898000 +0.809000 +1.246000 +1.352000 +1.295000 +1.079000 +2.093000 +2.941000 +1.445000 +1.013000 +0.889000 +1.128000 +2.489000 +1.490000 +1.161000 +2.640000 +1.253000 +1.134000 +1.556000 +2.974000 +1.834000 +5.458000 +2.490000 +3.318000 +3.036000 +6.627000 +7.136000 +5.402000 +4.535000 +3.582000 +2.730000 +4.550000 +2.556000 +2.157000 +5.923000 +4.910000 +2.828000 +2.263000 +2.398000 +2.180000 +2.633000 +2.563000 +2.032000 +1.613000 +3.662000 +2.329000 +6.635000 +7.500000 +3.195000 +1.987000 +1.600000 +2.795000 +3.957000 +5.038000 +3.106000 +2.626000 +2.191000 +1.884000 +2.408000 +3.148000 +2.185000 +1.609000 +1.420000 +1.328000 +1.323000 +1.217000 +1.086000 +0.957000 +1.127000 +1.003000 +0.903000 +1.054000 +0.814000 +0.737000 +0.691000 +0.664000 +0.628000 +0.600000 +0.576000 +0.625000 +0.610000 +0.574000 +0.544000 +0.512000 +0.497000 +0.480000 +0.466000 +0.460000 +0.468000 +0.462000 +0.444000 +0.437000 +0.558000 +0.489000 +0.440000 +0.432000 +0.423000 +0.408000 +0.408000 +0.402000 +0.398000 +0.443000 +0.466000 +0.547000 +0.601000 +0.693000 +0.540000 +0.532000 +0.513000 +0.448000 +0.408000 +0.370000 +0.357000 +0.442000 +0.370000 +0.340000 +0.325000 +0.308000 +0.288000 +0.282000 +0.264000 +0.264000 +0.269000 +0.271000 +0.288000 +0.324000 +0.336000 +0.326000 +0.329000 +0.302000 +0.301000 +0.343000 +0.523000 +0.439000 +0.367000 +0.326000 +0.300000 +0.281000 +0.264000 +0.253000 +0.240000 +0.233000 +0.234000 +0.221000 +0.216000 +0.221000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.217000 +0.216000 +0.250000 +0.275000 +0.281000 +0.252000 +0.240000 +0.219000 +0.216000 +0.211000 +0.192000 +0.192000 +0.192000 +0.192000 +0.193000 +0.192000 +0.357000 +0.510000 +0.430000 +0.331000 +0.283000 +0.273000 +0.274000 +0.243000 +0.233000 +0.340000 +0.518000 +0.387000 +0.361000 +0.871000 +1.293000 +0.594000 +0.520000 +0.770000 +0.459000 +0.360000 +0.297000 +0.264000 +0.248000 +0.231000 +0.224000 +0.216000 +0.214000 +0.192000 +0.192000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.164000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.132000 +0.120000 +0.120000 +0.141000 +0.130000 +0.143000 +0.136000 +0.140000 +0.129000 +0.128000 +0.144000 +0.144000 +0.144000 +0.144000 +0.168000 +0.203000 +0.256000 +0.197000 +0.169000 +0.235000 +0.384000 +0.257000 +0.195000 +0.171000 +0.169000 +0.182000 +0.179000 +0.168000 +0.168000 +0.168000 +0.168000 +0.151000 +0.154000 +0.152000 +0.154000 +0.189000 +0.168000 +0.145000 +0.144000 +0.144000 +0.144000 +0.137000 +0.132000 +0.144000 +0.144000 +0.144000 +0.385000 +0.291000 +0.345000 +0.239000 +0.194000 +0.211000 +0.282000 +0.245000 +0.211000 +0.192000 +0.237000 +0.382000 +0.350000 +0.268000 +0.608000 +0.434000 +1.169000 +2.291000 +0.816000 +0.448000 +0.383000 +0.560000 +1.638000 +0.723000 +0.455000 +0.361000 +0.322000 +0.354000 +0.354000 +0.337000 +1.057000 +1.089000 +0.710000 +0.490000 +0.391000 +0.355000 +0.448000 +1.001000 +0.611000 +1.467000 +1.183000 +2.243000 +1.524000 +0.812000 +0.601000 +0.489000 +0.442000 +0.404000 +0.369000 +0.360000 +0.348000 +0.336000 +0.313000 +0.362000 +0.377000 +0.364000 +0.483000 +0.633000 +3.105000 +1.603000 +1.282000 +1.179000 +0.810000 +0.610000 +0.522000 +0.462000 +0.446000 +1.296000 +1.478000 +0.920000 +0.668000 +0.555000 +0.485000 +0.439000 +0.405000 +0.381000 +0.360000 +0.336000 +0.354000 +2.367000 +3.967000 +3.237000 +3.337000 +4.229000 +3.028000 +1.545000 +1.176000 +0.991000 +1.268000 +1.093000 +0.900000 +0.792000 +2.635000 +2.359000 +4.112000 +2.081000 +1.580000 +3.850000 +5.786000 +2.820000 +5.538000 +3.642000 +2.301000 +3.005000 +6.235000 +6.114000 +3.000000 +2.490000 +4.822000 +6.084000 +2.895000 +3.212000 +3.763000 +4.021000 +3.327000 +2.638000 +1.911000 +1.543000 +1.332000 +1.181000 +1.836000 +3.473000 +2.817000 +3.001000 +1.742000 +1.315000 +1.162000 +1.261000 +1.136000 +0.997000 +0.926000 +0.873000 +0.823000 +0.775000 +0.748000 +0.717000 +0.686000 +0.671000 +0.635000 +0.610000 +0.600000 +0.600000 +0.600000 +0.607000 +0.596000 +0.576000 +0.587000 +0.564000 +0.741000 +1.955000 +2.023000 +1.875000 +1.658000 +1.807000 +4.145000 +6.295000 +6.887000 +10.533000 +9.859000 +5.826000 +3.800000 +4.019000 +4.712000 +3.131000 +2.322000 +2.329000 +5.529000 +5.185000 +3.128000 +3.143000 +3.401000 +2.721000 +2.370000 +1.915000 +1.640000 +1.489000 +1.372000 +1.260000 +1.745000 +2.309000 +3.532000 +5.635000 +3.643000 +2.994000 +1.920000 +1.522000 +1.304000 +1.196000 +1.097000 +1.015000 +0.938000 +0.891000 +0.851000 +0.829000 +1.406000 +3.599000 +1.519000 +1.891000 +1.694000 +1.794000 +2.036000 +1.307000 +1.027000 +0.894000 +0.814000 +0.753000 +0.694000 +0.656000 +0.629000 +0.596000 +0.576000 +0.592000 +0.608000 +0.632000 +0.623000 +0.584000 +0.571000 +0.544000 +0.515000 +0.493000 +0.467000 +0.456000 +0.477000 +0.537000 +0.503000 +0.450000 +0.469000 +0.480000 +0.480000 +0.462000 +0.453000 +0.428000 +0.408000 +0.385000 +0.373000 +0.364000 +0.360000 +0.360000 +0.360000 +0.360000 +0.360000 +0.360000 +0.348000 +0.336000 +0.316000 +0.312000 +0.312000 +0.297000 +0.300000 +0.293000 +0.288000 +0.288000 +0.288000 +0.288000 +0.287000 +0.280000 +0.317000 +0.300000 +0.288000 +0.279000 +0.269000 +0.264000 +0.269000 +1.053000 +1.092000 +0.691000 +0.789000 +0.662000 +0.659000 +0.510000 +0.483000 +0.487000 +0.463000 +0.637000 +0.638000 +0.549000 +0.949000 +0.701000 +0.509000 +0.438000 +0.445000 +0.383000 +0.354000 +0.322000 +0.295000 +0.300000 +0.288000 +0.309000 +0.340000 +0.295000 +0.264000 +0.271000 +0.264000 +0.396000 +0.376000 +0.294000 +0.264000 +0.244000 +0.240000 +0.237000 +0.216000 +0.216000 +0.216000 +0.216000 +0.246000 +0.232000 +0.216000 +0.216000 +0.216000 +0.252000 +0.277000 +0.231000 +0.206000 +0.192000 +0.192000 +0.192000 +0.192000 +0.181000 +0.168000 +0.168000 +0.182000 +0.225000 +0.324000 +0.247000 +0.226000 +0.213000 +0.230000 +0.222000 +0.194000 +0.192000 +0.176000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.199000 +0.215000 +0.177000 +0.168000 +0.168000 +0.168000 +0.153000 +0.145000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.146000 +0.162000 +0.168000 +0.193000 +0.193000 +0.168000 +0.168000 +0.168000 +0.188000 +0.318000 +0.732000 +0.460000 +0.402000 +0.338000 +0.322000 +0.688000 +0.401000 +0.304000 +0.360000 +0.614000 +0.409000 +0.724000 +0.464000 +0.462000 +1.067000 +0.505000 +0.396000 +0.352000 +0.315000 +0.426000 +0.505000 +0.376000 +0.452000 +0.947000 +0.672000 +0.408000 +0.330000 +0.294000 +0.264000 +0.262000 +0.240000 +0.240000 +0.240000 +0.240000 +0.230000 +0.367000 +1.306000 +3.442000 +2.623000 +3.005000 +2.477000 +2.348000 +1.120000 +0.849000 +2.746000 +1.666000 +0.848000 +3.304000 +2.662000 +1.713000 +1.758000 +1.655000 +1.859000 +1.114000 +0.962000 +3.271000 +4.272000 +1.714000 +2.366000 +1.754000 +1.176000 +0.959000 +0.877000 +0.793000 +0.718000 +0.725000 +0.689000 +0.614000 +0.563000 +0.532000 +0.513000 +0.481000 +0.456000 +0.449000 +0.428000 +0.397000 +0.384000 +0.375000 +0.327000 +0.352000 +0.364000 +0.361000 +0.360000 +0.344000 +0.638000 +1.396000 +2.971000 +1.252000 +5.531000 +4.166000 +4.817000 +1.870000 +1.270000 +1.069000 +0.897000 +0.792000 +0.717000 +0.663000 +0.634000 +0.626000 +0.701000 +1.691000 +1.495000 +4.334000 +3.044000 +1.608000 +2.392000 +2.337000 +1.400000 +1.144000 +1.029000 +0.915000 +0.817000 +0.749000 +0.701000 +0.666000 +0.633000 +0.609000 +0.576000 +0.544000 +0.498000 +0.480000 +0.471000 +0.456000 +0.439000 +0.419000 +0.415000 +0.403000 +0.408000 +0.394000 +0.385000 +0.609000 +1.485000 +2.219000 +1.190000 +0.831000 +0.684000 +0.614000 +0.584000 +0.593000 +0.614000 +0.669000 +0.787000 +0.886000 +1.000000 +0.694000 +0.597000 +0.600000 +0.623000 +0.994000 +1.149000 +3.151000 +1.673000 +0.986000 +0.799000 +0.694000 +0.693000 +0.758000 +0.619000 +0.718000 +0.709000 +0.679000 +0.598000 +0.532000 +0.484000 +0.495000 +0.522000 +0.562000 +1.413000 +1.241000 +2.837000 +1.827000 +0.992000 +0.872000 +0.920000 +0.719000 +0.897000 +0.814000 +1.189000 +1.786000 +1.227000 +0.894000 +0.735000 +0.696000 +0.691000 +0.633000 +0.582000 +0.863000 +3.373000 +6.672000 +3.420000 +3.401000 +2.571000 +1.935000 +1.576000 +1.307000 +1.276000 +1.221000 +0.931000 +0.806000 +0.772000 +0.734000 +0.988000 +3.695000 +3.850000 +2.520000 +2.403000 +1.634000 +1.161000 +0.977000 +0.872000 +0.820000 +0.778000 +0.796000 +0.798000 +0.865000 +1.118000 +0.876000 +0.748000 +1.297000 +1.026000 +0.710000 +0.613000 +0.560000 +0.551000 +0.519000 +0.502000 +0.579000 +0.641000 +0.554000 +0.783000 +1.730000 +0.795000 +0.555000 +0.453000 +0.410000 +0.388000 +0.367000 +0.343000 +0.336000 +0.336000 +0.329000 +0.326000 +0.343000 +0.324000 +0.297000 +0.288000 +0.311000 +0.314000 +0.318000 +0.289000 +0.288000 +0.282000 +0.312000 +0.345000 +0.358000 +0.394000 +0.341000 +0.308000 +0.281000 +0.264000 +0.250000 +0.233000 +0.216000 +0.228000 +0.216000 +0.216000 +0.206000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.173000 +0.168000 +0.168000 +0.172000 +0.245000 +0.203000 +0.192000 +0.198000 +0.301000 +0.543000 +0.384000 +0.278000 +0.245000 +0.298000 +0.312000 +0.297000 +0.268000 +0.439000 +0.324000 +0.260000 +0.235000 +0.221000 +0.216000 +0.217000 +0.565000 +0.381000 +0.315000 +0.316000 +0.265000 +0.233000 +0.216000 +0.255000 +0.308000 +0.239000 +0.210000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.209143 +0.226286 +0.468522 +0.766000 +0.471000 +0.329000 +1.010000 +0.724000 +0.399000 +0.307000 +0.264000 +0.245538 +0.240000 +0.225231 +0.214286 +0.199500 +0.216000 +0.216000 +0.216000 +0.252571 +0.544000 +1.156000 +0.939000 +0.655636 +2.666000 +1.120000 +0.619000 +1.120000 +0.804000 +0.482000 +0.380727 +0.958000 +1.158000 +0.683000 +0.806000 +0.506000 +0.481043 +1.206261 +1.275000 +0.736000 +0.654000 +0.510000 +0.404870 +0.384000 +0.364235 +0.406909 +1.580870 +3.152000 +1.241000 +0.787000 +0.655636 +0.600000 +0.535304 +0.482182 +0.457091 +0.731000 +0.655000 +1.364000 +2.010000 +1.113000 +0.776000 +0.621000 +0.534261 +0.482182 +0.439200 +0.405600 +0.384000 +0.368571 +0.360000 +0.384000 +0.480000 +0.397895 +0.369600 +0.355200 +0.336000 +0.336000 +0.314400 +0.312000 +0.312000 +0.370435 +0.598909 +1.122783 +3.213000 +1.902000 +1.286000 +0.878000 +0.703000 +1.870000 +3.358000 +1.279000 +0.915000 +0.736000 +0.747000 +1.072000 +0.722087 +2.470957 +1.835000 +2.095000 +1.341000 +0.926000 +0.793000 +0.999000 +1.478000 +1.104000 +1.301000 +1.187000 +1.672000 +2.298000 +2.909000 +2.665000 +2.170000 +2.755000 +2.249000 +2.060000 +1.656000 +1.518000 +3.928000 +7.559000 +9.963000 +6.200000 +3.454000 +2.372000 +3.319000 +3.686000 +2.463000 +1.857000 +1.556000 +1.808000 +1.587000 +1.356000 +1.264696 +1.218000 +1.150000 +1.760000 +7.064000 +3.545000 +1.948000 +1.404000 +1.190000 +1.061000 +0.953000 +0.865043 +0.844000 +0.923000 +0.849333 +0.762783 +0.701053 +0.684632 +0.651200 +0.614667 +0.606000 +0.712000 +2.522000 +1.407000 +1.332522 +1.473000 +2.651000 +4.211000 +2.474000 +2.200000 +4.987000 +3.316000 +6.465000 +3.958000 +2.584000 +2.955000 +3.076000 +2.477000 +3.792000 +2.491000 +5.135000 +5.309000 +2.621000 +2.145000 +2.106000 +2.327000 +1.846000 +1.524000 +1.365000 +1.242783 +1.137000 +1.058087 +0.985143 +0.980571 +1.030957 +0.990261 +0.948000 +0.960000 +0.944571 +0.893714 +0.827478 +0.783000 +0.753000 +0.709895 +0.688000 +0.653714 +0.650087 +0.614667 +0.588000 +0.545143 +0.559500 +0.552000 +0.534000 +0.553143 +0.606000 +0.567273 +0.544000 +0.663273 +0.824348 +0.740000 +0.677538 +1.238000 +1.149000 +0.837000 +0.707478 +0.641455 +0.591000 +0.576000 +0.582667 +0.589714 +0.532571 +0.501000 +0.583000 +0.569143 +0.710182 +0.564000 +0.505200 +0.604364 +0.539000 +0.494118 +0.525600 +0.483429 +0.438667 +0.421895 +0.408000 +0.409200 +0.437333 +0.500000 +0.477333 +0.430000 +0.559000 +0.668000 +2.867000 +2.244000 +1.042000 +1.355000 +4.157000 +2.239000 +1.369000 +2.038000 +1.527000 +1.069000 +0.895000 +0.816000 +0.741000 +1.348364 +1.484000 +1.051000 +1.035000 +0.808000 +0.968000 +1.286000 +3.891000 +2.038000 +1.264000 +0.999000 +0.845000 +0.751636 +0.682105 +0.625043 +0.582667 +0.543429 +0.524800 +0.504000 +0.480000 +0.458400 +0.477818 +0.542182 +0.557000 +0.504000 +2.663000 +8.637000 +5.222000 +5.092000 +5.287000 +3.063000 +1.804000 +2.208000 +2.190000 +1.423000 +1.128000 +0.965000 +0.864000 +0.812000 +0.797333 +0.757333 +0.737143 +2.186286 +4.308000 +NaN +NaN +0.864000 +NaN +NaN +0.562667 +0.538667 +0.512727 +0.502154 +0.524000 +0.538435 +0.521333 +0.537333 +0.590182 +0.562000 +0.498545 +0.480000 +0.648000 +0.603000 +0.497000 +0.442286 +0.415385 +0.421895 +0.400800 +0.414667 +0.392842 +0.366545 +0.349091 +0.336000 +0.328000 +0.332000 +0.323368 +0.312000 +0.306000 +0.288000 +0.279000 +0.264000 +0.264000 +0.347478 +0.306286 +0.284308 +0.264000 +0.270857 +0.310588 +0.361333 +0.607000 +0.452000 +0.400941 +0.805091 +0.606261 +0.508000 +0.382000 +0.710182 +0.644000 +0.429913 +0.443368 +0.403636 +0.413217 +0.346435 +0.312000 +0.293143 +0.288000 +0.276800 +0.560000 +1.146000 +4.646000 +1.444000 +0.832696 +0.821000 +1.200000 +0.810000 +1.851000 +1.189000 +0.817000 +0.722000 +0.850435 +0.653000 +0.542000 +0.473739 +0.424364 +0.388800 +0.358286 +0.360000 +0.352000 +0.336000 +0.331636 +0.312000 +0.306000 +0.288000 +0.288000 +0.280000 +0.264000 +0.265500 +0.264000 +0.264000 +0.264000 +0.264000 +0.259200 +0.262154 +1.681091 +1.352000 +1.569000 +0.886957 +1.216000 +8.365000 +7.939000 +7.141000 +3.761000 +2.222000 +1.417000 +1.139429 +1.104000 +0.954000 +0.828000 +0.742957 +0.673043 +0.605714 +0.573600 +0.534857 +0.517714 +0.504000 +0.577043 +1.158000 +3.200000 +1.701000 +1.407000 +3.292000 +4.549000 +4.951000 +2.714000 +2.134000 +1.608000 +1.489043 +3.094000 +2.424000 +1.619000 +1.274000 +1.070000 +0.941714 +0.868235 +0.840000 +0.824400 +0.854609 +0.771000 +0.734667 +0.689684 +0.660000 +0.621000 +0.592000 +0.571200 +0.552000 +0.537000 +0.540000 +0.528000 +0.528000 +0.514286 +0.520000 +0.498462 +0.480000 +0.482400 +0.485538 +0.573818 +0.720000 +0.579429 +0.532800 +2.285000 +3.703000 +1.920000 +1.221000 +0.953000 +0.808000 +0.721091 +0.679304 +0.678857 +0.661500 +0.619429 +0.586435 +0.817000 +0.941000 +0.910957 +0.953000 +1.184000 +1.762000 +2.386000 +2.509000 +2.496000 +2.963000 +1.299000 +1.904000 +1.939000 +5.214000 +3.619000 +3.104000 +1.869000 +2.943000 +4.361000 +3.395000 +4.561000 +3.637000 +3.194000 +7.207000 +6.624000 +2.440000 +1.612000 +2.269000 +2.013000 +2.239304 +1.583000 +1.323000 +1.250400 +2.174000 +5.258000 +3.665000 +2.206000 +2.325000 +4.154000 +6.394000 +4.489043 +4.325000 +3.495000 +2.810000 +2.200000 +3.788000 +3.487000 +2.766000 +4.784000 +5.222000 +3.949000 +2.577000 +1.902000 +1.663000 +2.956000 +2.175000 +1.670000 +1.575000 +1.825000 +2.545000 +1.738000 +3.682000 +4.403000 +6.801000 +3.462000 +3.658000 +2.629000 +1.880348 +3.630000 +2.161000 +3.213000 +3.799000 +2.546000 +2.265000 +1.839000 +1.980000 +1.751000 +1.372000 +1.218000 +1.100870 +1.008000 +0.939600 +0.901500 +0.862154 +0.861818 +0.842400 +0.804000 +0.773333 +0.755294 +0.729818 +0.724800 +0.705882 +1.613000 +4.121000 +7.064000 +6.523000 +3.760000 +3.055000 +4.461000 +2.602000 +2.980000 +2.271000 +2.177000 +3.342000 +1.863000 +1.319000 +1.978000 +2.400000 +2.469000 +2.658000 +1.494000 +1.228364 +1.132364 +1.238609 +1.141091 +0.984000 +0.931636 +1.807000 +6.491000 +2.664000 +1.940000 +1.239000 +1.100870 +1.212000 +1.092000 +1.069091 +2.674000 +2.864000 +1.395000 +1.556000 +1.619000 +1.788000 +1.695000 +1.842000 +2.433000 +1.571000 +1.352348 +1.151000 +1.520000 +1.177000 +0.931000 +0.821455 +0.753143 +0.713600 +0.696000 +0.674400 +0.768000 +0.909913 +1.630000 +2.543000 +1.383000 +1.094857 +1.054000 +0.846545 +1.601000 +1.029000 +0.760000 +0.673043 +0.634909 +0.609231 +0.694500 +0.992348 +0.954000 +0.678261 +0.589565 +0.545143 +0.520000 +0.500308 +0.475200 +0.456000 +0.471158 +0.647000 +0.609000 +0.501714 +0.462000 +0.459692 +0.456000 +0.459429 +1.497000 +0.806000 +0.590000 +0.506087 +0.462667 +0.432000 +0.410182 +0.394667 +0.384000 +0.360000 +0.374400 +0.384000 +0.423000 +0.618545 +0.475000 +0.399273 +0.417000 +0.372000 +0.346909 +0.336000 +0.322667 +0.312000 +0.302769 +0.288000 +0.288000 +0.288000 +0.288000 +0.288000 +0.329600 +0.356400 +0.560000 +0.501000 +0.354545 +0.332571 +0.344000 +0.329000 +0.351600 +0.330000 +0.276000 +0.259200 +0.240000 +0.240000 +0.240000 +0.240000 +0.237333 +0.240000 +0.240000 +0.240000 +0.232000 +0.216000 +0.216000 +0.216000 +0.216000 +0.208000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.192000 +0.212000 +0.282286 +0.248727 +0.235500 +0.248471 +0.220364 +0.204000 +0.242824 +0.282783 +0.255158 +0.217600 +0.221143 +0.335000 +0.308000 +0.243692 +0.225600 +0.216000 +0.195692 +0.201231 +0.216000 +0.195000 +0.192000 +0.192000 +0.185143 +0.202909 +0.249333 +0.428000 +0.284000 +0.235765 +0.216000 +0.196364 +0.224000 +0.531273 +0.988000 +0.429000 +0.363600 +0.317000 +0.276000 +0.253895 +0.361000 +0.857000 +0.416000 +0.312000 +0.288000 +0.336000 +0.315429 +0.406957 +0.378545 +0.486857 +1.080000 +1.306000 +2.024000 +1.362783 +1.600000 +2.312000 +1.028000 +0.635000 +0.516522 +0.475765 +0.569333 +0.800000 +0.531000 +0.426000 +0.665739 +2.004000 +0.907000 +0.617000 +0.500000 +0.432000 +0.394000 +0.435000 +1.338000 +1.901000 +0.885000 +0.672000 +0.545739 +0.476400 +0.457263 +0.421333 +0.392000 +0.364500 +0.346909 +0.336000 +0.322667 +0.312000 +0.322286 +0.325333 +0.312000 +0.429000 +1.155000 +0.981000 +2.642000 +3.444000 +1.419130 +1.323000 +1.208000 +0.909000 +0.754909 +0.702000 +0.926182 +1.928000 +1.130000 +0.788400 +1.348000 +1.982000 +3.420000 +1.749000 +1.146000 +0.980727 +1.586000 +1.407000 +1.243826 +3.009000 +5.018000 +5.158000 +3.455000 +2.010000 +1.856000 +2.575000 +3.927000 +3.371000 +1.911000 +1.387000 +1.180000 +1.082000 +0.956727 +0.876571 +0.800348 +0.744000 +0.701053 +0.660632 +0.632571 +0.637200 +1.556000 +4.207000 +3.666000 +3.151000 +4.216000 +4.807000 +2.479000 +3.823000 +4.905000 +3.825000 +4.127000 +2.700000 +1.984000 +1.786000 +2.729739 +2.998000 +2.335000 +1.567000 +1.254000 +1.070182 +0.987000 +1.148727 +1.329000 +3.310000 +3.940000 +8.106000 +7.976000 +6.270000 +4.494000 +2.621000 +1.744000 +1.412000 +1.489000 +4.076000 +2.508000 +1.954000 +2.160000 +1.854000 +3.401000 +2.462000 +1.517000 +1.383000 +1.555000 +1.522000 +1.596522 +3.497000 +2.664000 +2.750000 +2.802000 +5.341000 +4.202000 +3.821000 +2.751000 +2.891000 +3.404000 +3.131000 +7.540000 +6.631000 +4.956000 +10.168000 +9.761000 +6.353000 +5.009000 +3.226000 +2.387000 +2.064000 +1.978435 +1.899000 +1.724870 +2.478000 +6.516000 +5.613000 +4.439000 +3.829333 +NaN +4.658400 +3.440000 +3.926000 +3.767000 +3.886000 +3.386000 +8.074000 +6.033000 +3.147000 +2.299000 +1.811000 +2.285000 +3.902000 +3.281000 +1.922000 +1.540364 +1.450286 +2.173000 +1.699000 +1.491130 +1.384800 +1.423304 +2.387000 +3.162000 +1.815273 +1.537000 +1.507826 +1.231000 +1.408364 +2.284000 +2.215000 +1.570000 +1.203000 +1.062545 +1.116522 +1.167652 +1.369000 +1.515000 +2.300000 +1.748000 +1.291636 +1.307000 +2.302000 +1.771000 +1.308000 +1.089000 +0.963000 +0.881600 +0.818286 +0.770667 +0.714667 +0.677143 +0.660800 +0.636000 +0.604235 +0.572308 +0.552000 +0.548308 +0.532800 +0.528000 +0.553333 +0.568800 +0.552000 +0.559579 +0.522000 +0.839000 +1.151000 +0.899478 +0.720000 +0.598957 +0.545455 +0.512000 +0.487200 +0.480000 +0.458182 +0.453333 +0.432000 +0.432000 +0.420000 +0.432000 +0.421091 +0.408000 +0.408000 +0.408000 +0.408000 +0.399429 +0.384000 +0.384000 +0.384000 +0.441000 +0.505200 +0.477176 +0.484500 +0.432000 +0.391200 +0.381000 +0.368000 +0.504000 +0.625091 +0.485455 +0.454737 +0.608348 +0.541000 +0.474667 +0.422182 +0.393143 +0.379200 +0.392842 +0.397714 +0.375000 +0.352000 +0.357000 +0.336000 +0.316000 +0.324000 +0.336000 +0.315429 +0.310588 +0.288000 +0.288000 +0.288000 +0.294400 +0.288000 +0.282000 +0.300706 +0.334957 +0.289043 +0.264000 +0.264000 +0.264000 +0.251294 +0.240000 +0.224000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.225600 +0.229714 +0.216000 +0.266087 +0.246316 +0.219200 +0.216000 +0.222857 +0.309818 +0.276000 +0.242667 +0.240000 +0.240000 +0.240000 +0.240000 +0.241143 +0.228000 +0.216000 +0.216000 +0.209143 +0.192000 +0.192000 +0.192000 +0.184000 +0.168000 +0.168000 +0.168000 +0.168000 +0.162000 +0.147000 +0.153000 +0.168000 +0.162667 +0.160000 +0.144000 +0.144000 +0.146000 +0.151385 +0.168000 +0.168000 +0.160615 +0.146667 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.136800 +0.125143 +0.141600 +0.142400 +0.150545 +0.145714 +0.144000 +0.144000 +0.144000 +0.144000 +0.144000 +0.156923 +0.178800 +0.176727 +0.168000 +0.210947 +0.548000 +0.549913 +0.384000 +0.418286 +0.609391 +0.413000 +0.328421 +0.284727 +0.248842 +0.231429 +0.240000 +0.222857 +0.216000 +0.192000 +0.192000 +0.192000 +0.192000 +0.325895 +0.332000 +0.404870 +0.293714 +0.275368 +0.248842 +0.230400 +0.216000 +0.282545 +0.412000 +0.848727 +0.646000 +1.685000 +0.793000 +0.597000 +0.414000 +0.338087 +0.298800 +0.275077 +0.257455 +0.240000 +0.227200 +0.227294 +0.294667 +0.392000 +0.290286 +0.296000 +0.273143 +0.241412 +0.238800 +0.262588 +0.567000 +0.455000 +0.345333 +0.307429 +0.274105 +0.258000 +0.240000 +0.225600 +0.224000 +0.216000 +0.209143 +0.201600 +0.192000 +0.193846 +0.216000 +0.216000 +0.248348 +1.531000 +1.124000 +0.564000 +0.459000 +1.734000 +2.764000 +1.042000 +0.694000 +0.579130 +0.547826 +0.619000 +0.654261 +0.848000 +2.300000 +1.253217 +0.946000 +0.753818 +0.690286 +0.628800 +0.562000 +0.500727 +0.529714 +0.880696 +1.080000 +0.826000 +0.867000 +0.800000 +0.674000 +0.603429 +1.043478 +0.746000 +0.618545 +0.584727 +0.584000 +0.592615 +0.596571 +0.566000 +0.506526 +0.480000 +0.469714 +0.592364 +3.156000 +2.395000 +1.292000 +0.872000 +0.704348 +0.627000 +0.538435 +0.558857 +0.504000 +0.540706 +0.644000 +0.640000 +0.786286 +1.292727 +2.030857 +2.257000 +3.272000 +3.423000 +2.634000 +1.560000 +1.722783 +2.189000 +3.180000 +1.685000 +1.217000 +1.029000 +0.921391 +0.837000 +0.786667 +0.785143 +0.745200 +0.699429 +0.652571 +0.601091 +0.553333 +0.528000 +0.528000 +0.528000 +0.537000 +0.602000 +0.670400 +0.651692 +0.664000 +0.816000 +0.818000 +0.705391 +0.616500 +0.549913 +0.560842 +1.454000 +3.486000 +5.778000 +7.412000 +5.683000 +3.534000 +3.523000 +4.322000 +3.074000 +3.169000 +1.760000 +1.375000 +1.339429 +2.178000 +2.228000 +3.202000 +2.314000 +1.582000 +1.325000 +1.180800 +1.111200 +1.204364 +1.555000 +1.720696 +1.438000 +1.130000 +1.001739 +0.977600 +0.900706 +0.822857 +0.779294 +0.826667 +0.848471 +0.783600 +0.780000 +0.826909 +1.060571 +1.142118 +1.085143 +1.116706 +1.089000 +1.193739 +1.420000 +1.405565 +1.373714 +1.178526 +1.036174 +0.925714 +0.857684 +0.795000 +0.726316 +0.682500 +0.640941 +0.606400 +0.578000 +0.560000 +0.555200 +0.548211 +0.528000 +0.523200 +0.589714 +0.557714 +0.528000 +0.519429 +0.488000 +0.458400 +0.460800 +0.480000 +0.483789 +0.751579 +0.658000 +0.519652 +0.471529 +0.520000 +1.290000 +1.148727 +0.962286 +0.745000 +0.657818 +0.576000 +0.536400 +0.621818 +2.180000 +2.324000 +1.128000 +0.816000 +0.688364 +0.609391 +0.554286 +0.515077 +0.482526 +0.492000 +0.540800 +0.620211 +0.592364 +0.499826 +0.459200 +0.432000 +0.432000 +0.432000 +0.434667 +0.512400 +0.502000 +0.597176 +0.770000 +0.597714 +0.484174 +0.516706 +0.841000 +0.584000 +0.708000 +0.789818 +0.634000 +0.493565 +0.470609 +0.408000 +0.402000 +0.377333 +0.360000 +0.449739 +0.378783 +0.336000 +0.316000 +0.321600 +0.312000 +0.296571 +0.282667 +0.264000 +0.264000 +0.252000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.233455 +0.216000 +0.216000 +0.234353 +0.246316 +0.262857 +0.240000 +0.252632 +0.282783 +0.271000 +0.354783 +0.809000 +0.530000 +0.358000 +0.339000 +0.305333 +0.274909 +0.246000 +0.240000 +0.222000 +0.216000 +0.208941 +0.192000 +0.192000 +0.192000 +0.188000 +0.171692 +0.168000 +0.168000 +0.160000 +0.216000 +0.234000 +0.192000 +0.192000 +0.168000 +0.192000 +0.192000 +0.213714 +0.205565 +0.192000 +0.189000 +0.168000 +0.168000 +0.177882 +0.210783 +0.209455 +0.198667 +0.213000 +0.266286 +0.353000 +0.271000 +0.227000 +0.202286 +0.192000 +0.180706 +0.168000 +0.168000 +0.168000 +0.168000 +0.181091 +0.213600 +0.218526 +0.305000 +0.276000 +0.475826 +1.170000 +0.889000 +0.618000 +0.415000 +0.334000 +0.298909 +0.301500 +0.288000 +0.264000 +0.248348 +0.231529 +0.216000 +0.216000 +0.193200 +0.192000 +0.192000 +0.192000 +0.177600 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.168000 +0.172571 +0.414000 +1.891000 +0.811000 +0.452000 +0.336000 +0.612000 +0.841000 +0.581000 +0.394000 +0.342545 +0.312000 +0.288000 +0.261000 +0.240000 +0.226667 +0.216000 +0.216000 +0.244571 +0.462000 +0.486000 +0.464000 +0.595000 +0.511000 +0.623000 +0.405000 +0.344000 +0.331200 +0.394000 +2.031000 +2.631000 +1.992000 +1.109000 +0.643000 +0.802000 +0.890000 +1.400000 +1.214000 +2.120000 +3.018000 +3.690000 +1.606000 +1.008000 +0.960000 +0.751000 +1.983000 +3.136000 +1.132000 +0.853000 +0.716870 +0.643826 +0.807000 +0.704348 +0.698000 +0.879000 +0.689455 +0.712696 +0.643826 +0.637565 +1.921000 +1.863000 +1.049000 +0.815000 +1.218000 +2.309000 +3.683000 +2.109000 +2.805000 +2.666000 +1.534000 +1.065000 +0.871000 +1.455000 +1.263000 +0.936000 +0.810000 +0.745143 +0.677000 +0.619000 +0.825000 +0.812870 +0.712696 +2.050000 +5.853000 +3.333000 +1.704000 +1.207000 +1.027000 +0.885000 +0.784696 +0.720000 +0.708522 +0.747000 +0.893000 +1.139000 +0.942000 +0.802435 +0.744000 +0.685000 +0.633818 +0.600000 +0.614857 +0.626400 +0.609143 +0.574857 +0.552000 +1.091000 +4.256000 +2.015000 +1.088000 +0.828000 +0.731000 +0.681818 +0.686609 +0.636571 +0.592000 +0.559304 +0.548727 +0.524400 +0.526400 +0.696000 +0.581000 +0.520800 +0.494400 +0.466667 +0.453176 +0.432000 +0.448000 +0.432000 +1.635130 +4.537000 +1.381000 +1.325000 +1.735000 +0.927000 +1.269000 +3.539000 +2.524000 +4.104000 +2.301000 +1.221000 +0.946000 +1.783000 +5.928000 +6.225000 +7.360000 +9.342000 +8.267000 +3.968000 +3.865000 +4.004000 +5.647000 +3.822000 +3.332000 +3.615000 +3.342000 +4.567000 +1.963000 +1.453000 +1.425000 +1.326000 +1.091000 +0.966000 +0.898000 +0.874435 +0.806609 +0.758000 +0.727000 +0.821000 +0.748000 +0.686857 +0.661000 +0.762000 +0.792000 +0.673000 +0.611478 +0.608400 +0.905000 +0.776348 +0.701000 +1.059000 +1.299000 +1.051000 +0.690000 +0.581000 +0.530087 +0.497000 +0.476727 +0.445714 +0.450783 +0.440571 +0.469895 +0.447600 +0.426667 +0.408000 +0.382000 +0.360000 +0.360000 +0.360000 +0.357176 +0.336000 +0.336000 +0.336000 +0.334667 +0.314000 +0.325333 +0.314182 +0.312000 +0.312000 +0.324632 +0.344471 +0.386087 +0.377455 +0.394000 +0.496000 +0.375273 +0.326609 +0.302182 +0.316174 +0.822000 +3.859000 +1.334000 +0.786545 +0.919000 +0.854000 +0.832000 +1.005000 +1.086000 +1.131000 +0.679000 +0.523000 +0.505000 +0.697000 +0.568000 +0.552000 +0.528000 +0.495000 +0.432000 +0.387000 +0.360000 +0.336000 +0.318316 +0.309176 +0.288000 +0.283765 +0.264000 +0.257684 +0.247636 +0.240000 +0.240000 +0.240000 +0.254609 +0.266400 +0.264000 +0.274286 +0.255273 +0.262588 +0.724364 +0.838000 +0.513000 +0.415000 +0.370667 +0.341647 +0.326667 +0.294667 +0.308727 +0.324000 +0.389455 +0.734000 +0.536000 +0.420000 +2.084000 +4.143000 +2.196000 +4.670000 +3.005000 +2.144000 +1.919000 +1.629000 +1.882000 +1.286000 +0.992000 +0.763000 +0.642000 +0.571429 +1.156000 +0.853000 +0.585000 +0.555000 +0.681000 +0.539000 +0.475826 +0.449739 +0.426286 +0.408000 +0.384000 +0.360000 +0.346286 +0.336000 +0.346800 +0.401000 +0.399000 +0.412174 +0.547000 +0.419478 +0.381714 +0.351652 +0.374182 +0.389217 +0.367200 +0.329739 +0.309600 +0.288000 +0.280800 +0.264000 +0.264000 +0.246857 +0.240000 +0.240000 +0.240000 +0.425739 +0.502000 +0.327000 +0.278400 +0.264000 +0.252000 +0.240000 +0.242824 +0.262957 +0.240000 +0.260000 +0.291429 +0.300522 +0.264000 +0.264000 +0.306000 +0.300522 +0.310857 +0.535000 +0.685000 +0.484000 +0.671000 +0.687000 +0.484000 +0.393000 +0.416000 +0.347000 +0.294857 +0.267600 +0.264000 +0.242526 +0.240000 +0.240000 +0.702000 +1.967000 +1.114000 +0.482000 +0.371000 +0.340174 +0.298909 +0.271500 +0.251200 +0.240000 +0.229714 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.208421 +0.196571 +0.192000 +0.192000 +0.192000 +0.201143 +0.290400 +0.646000 +0.830000 +1.079000 +0.573000 +0.399000 +0.325714 +0.324000 +0.365714 +0.651000 +0.563000 +0.403000 +0.336000 +0.297000 +0.284000 +0.262800 +0.240000 +0.240000 +0.219000 +0.216000 +0.216000 +0.206118 +0.196364 +0.193333 +0.202286 +0.216000 +0.212000 +0.216000 +0.216000 +0.232000 +0.253200 +0.289043 +0.447000 +0.554000 +0.532174 +0.502000 +0.412571 +0.352696 +0.329143 +0.361000 +0.419478 +0.603130 +1.011130 +1.519000 +3.469000 +1.843000 +0.871000 +0.696000 +0.849000 +0.726000 +0.768000 +1.308000 +2.143000 +3.894000 +2.282000 +1.226000 +0.903000 +0.788000 +0.729000 +0.701000 +1.215000 +0.924000 +2.073000 +3.300000 +5.302000 +4.981000 +2.493000 +1.421000 +1.110000 +0.973000 +0.879000 +0.839000 +2.590000 +4.343000 +3.624000 +2.347000 +1.605000 +2.043000 +5.175000 +6.929000 +5.043000 +2.664000 +2.320000 +1.756000 +2.395000 +2.994000 +4.708000 +5.525000 +6.833000 +5.380000 +3.705000 +2.881000 +3.992000 +7.710000 +8.233000 +4.391000 +2.725000 +2.212000 +3.218000 +3.942000 +3.799000 +3.414000 +2.966000 +6.109000 +4.908000 +3.199000 +2.857000 +3.233000 +2.622000 +2.331000 +1.853000 +1.563000 +1.389000 +1.250087 +1.176000 +1.099000 +1.068000 +1.023652 +0.956727 +0.901000 +0.871000 +0.867000 +0.944000 +1.193000 +1.066000 +1.219000 +1.651000 +3.490000 +1.881000 +1.223000 +1.003000 +0.879000 +0.890000 +0.858000 +0.760364 +0.707478 +0.691000 +0.685091 +0.727304 +0.661000 +0.600000 +0.575000 +0.558000 +0.656000 +0.780522 +0.859000 +3.682000 +5.242000 +4.691000 +3.062000 +5.029000 +7.525000 +3.666000 +2.066000 +3.211000 +2.953000 +2.104000 +1.795000 +1.351000 +1.175000 +1.051000 +0.948000 +0.859000 +0.800000 +0.761143 +0.726545 +0.698182 +0.690947 +0.732000 +0.772000 +1.845000 +1.000000 +0.789000 +0.990000 +1.219000 +0.860727 +0.780522 +3.059000 +5.267000 +5.714000 +4.806000 +3.078000 +2.622000 +4.396000 +4.429000 +5.163000 +4.598000 +2.883000 +1.914000 +1.436000 +1.239000 +1.190000 +1.160348 +1.091000 +1.021091 +0.975652 +1.032000 +2.970000 +3.511000 +1.869000 +1.438909 +1.355000 +1.632000 +NaN +1.366000 +1.131000 +0.976364 +0.882783 +0.819429 +0.764727 +0.734118 +0.754909 +0.922000 +1.141000 +0.802000 +0.700800 +0.896000 +0.848000 +0.692000 +0.614400 +0.560842 +0.519529 +0.490667 +0.473143 +0.456000 +0.450857 +0.432000 +0.432000 +0.426353 +0.408000 +0.405600 +0.387692 +0.408000 +0.524870 +0.983000 +0.688696 +0.581000 +0.531692 +NaN +NaN +NaN +NaN +NaN +NaN +1.656000 +NaN +NaN +NaN +NaN +1.296000 +NaN +2.544000 +NaN +NaN +NaN +NaN +NaN +NaN +0.684571 +0.657600 +0.745091 +0.735652 +0.973565 +1.311000 +0.913000 +0.670000 +0.598857 +0.557053 +0.519429 +0.490800 +0.467294 +0.452571 +0.432000 +0.432000 +0.439200 +0.420000 +0.408000 +0.421500 +0.565000 +0.633000 +0.545000 +0.451200 +0.475429 +0.561391 +0.646000 +0.552000 +NaN +NaN +NaN +NaN +NaN +0.474783 +0.429333 +0.408000 +0.416000 +0.433500 +0.708000 +0.984000 +NaN +0.646957 +1.013000 +0.738000 +0.510000 +0.440842 +0.483130 +0.506000 +0.438261 +0.394800 +0.361412 +0.336000 +0.336000 +0.340800 +0.484000 +0.382909 +0.942000 +0.505000 +0.387273 +0.360000 +0.514435 +0.428571 +0.385714 +0.628000 +0.505091 +0.855000 +0.508000 +0.403000 +0.353143 +0.329455 +0.312000 +NaN +NaN +0.563000 +0.455000 +0.398609 +0.372000 +0.354667 +0.640000 +1.545000 +1.610000 +0.726000 +0.595429 +0.546000 +0.443000 +0.394105 +0.352941 +0.336000 +0.316364 +0.325895 +0.312000 +0.297600 +0.288000 +0.288000 +0.288000 +0.282000 +0.276000 +0.288000 +0.330000 +0.376364 +1.062857 +1.202087 +0.919304 +0.620000 +0.660571 +1.499000 +1.136000 +0.693000 +0.544000 +0.489600 +0.502857 +0.463500 +0.605000 +0.881000 +1.120000 +0.645000 +4.220000 +3.791000 +1.529000 +0.969818 +2.144348 +4.662000 +3.761000 +4.173000 +7.679000 +6.399000 +3.097000 +5.942000 +5.238000 +3.921000 +2.885000 +1.632000 +1.246000 +3.488000 +7.261000 +4.290000 +2.904000 +2.258000 +2.322000 +4.115000 +3.952000 +2.589000 +1.778000 +2.921000 +2.680000 +1.826000 +1.548000 +1.229000 +1.096696 +1.200000 +1.231000 +1.050000 +0.974609 +1.150000 +1.239000 +1.199000 +1.070000 +1.429000 +1.156000 +1.929000 +1.199000 +0.989000 +0.930545 +0.885913 +0.895000 +0.947000 +0.795000 +0.705391 +0.828000 +1.459000 +1.226000 +1.179000 +1.167000 +1.848000 +NaN +NaN +NaN +1.144000 +1.001000 +1.111000 +1.274000 +0.922000 +0.777600 +0.745333 +0.892174 +1.180000 +2.130000 +3.534000 +2.840000 +1.958000 +1.625000 +1.966000 +1.287000 +1.341000 +3.416000 +3.083000 +3.117000 +5.654000 +5.323000 +4.142000 +4.820000 +3.245000 +2.120000 +1.534000 +1.348000 +2.128000 +4.390000 +7.970000 +6.484000 +3.281000 +4.161000 +4.884000 +3.409000 +2.375000 +1.759000 +1.579000 +2.941000 +4.433000 +2.961000 +2.379000 +2.545000 +1.811000 +1.632000 +1.394000 +1.244000 +1.141000 +1.085000 +1.332000 +1.096000 +1.003826 +0.922000 +0.810000 +0.730000 +0.691826 +0.683478 +0.699429 +0.696000 +0.701217 +0.713739 +0.678000 +0.786783 +1.343000 +1.234000 +0.828000 +1.166000 +0.834000 +0.686609 +0.633391 +0.632000 +0.783000 +0.774545 +2.757000 +1.990000 +4.319000 +6.753000 +4.696000 +5.028000 +5.198000 +6.329000 +4.339000 +4.657000 +3.731000 +2.749000 +3.187000 +2.642000 +1.859000 +1.474000 +1.374000 +1.187000 +1.044000 +0.941000 +0.918000 +1.577000 +1.083000 +0.953739 +1.083000 +1.367000 +1.099000 +0.899000 +0.805091 +0.973091 +0.827478 +0.721200 +0.672000 +0.631636 +0.606667 +0.585000 +0.619826 +0.870000 +0.673000 +0.594000 +0.563000 +0.613000 +1.005000 +1.378000 +1.044000 +0.841000 +0.857000 +0.933000 +0.839000 +0.825600 +0.960000 +4.558000 +3.533000 +2.874000 +1.580000 +1.276000 +1.047000 +0.897000 +0.819130 +0.748174 +0.694857 +0.648000 +0.609000 +0.580000 +0.557333 +0.533333 +0.540000 +0.550588 +0.677217 +1.268000 +1.399000 +1.479652 +1.502000 +1.934000 +2.137000 +1.207000 +0.846000 +0.703500 +0.629714 +0.580000 +0.540571 +0.511636 +0.481263 +0.474667 +0.462400 +0.491368 +0.493000 +0.446400 +0.456000 +0.980870 +0.842000 +0.538000 +0.465818 +0.461647 +0.594000 +0.629000 +0.554087 +0.660000 +1.081000 +5.209000 +6.215000 +2.774000 +1.529000 +1.000000 +0.836000 +0.801000 +0.665000 +0.598800 +0.543652 +0.500571 +0.478000 +0.456000 +0.644000 +0.499000 +0.445200 +0.427200 +0.408000 +0.390000 +0.427200 +0.505091 +0.723130 +0.746000 +0.511304 +0.549000 +0.532000 +0.480000 +0.482824 +0.652000 +0.632000 +0.448000 +0.396000 +0.366400 +0.349091 +0.336000 +0.336000 +0.315692 +0.312000 +0.312000 +0.312000 +0.312000 +0.326118 +0.372706 +0.500000 +0.514909 +0.438000 +0.364174 +0.320348 +0.292800 +0.288000 +0.272000 +0.264000 +0.264000 +0.264000 +0.264000 +0.264000 +0.247200 +0.240000 +0.240000 +0.256000 +0.264000 +0.286000 +0.314400 +0.383000 +0.338824 +0.308308 +0.288000 +0.353739 +0.343636 +0.393143 +0.379429 +0.328500 +0.404571 +0.512842 +0.432000 +0.346000 +0.302118 +0.278000 +0.264000 +0.297143 +0.534000 +0.421714 +0.334000 +0.292235 +0.282667 +0.274667 +0.264000 +0.250667 +0.240000 +0.240000 +0.225600 +0.236571 +0.297600 +0.335000 +0.268800 +0.240000 +0.240000 +0.236571 +0.235200 +0.225000 +0.216000 +0.216000 +0.216000 +0.216000 +0.270000 +3.373000 +1.368000 +0.775000 +2.316571 +1.624000 +1.008000 +0.694909 +2.062000 +1.870000 +1.879000 +0.980000 +3.671000 +5.287000 +2.854000 +1.388000 +0.917000 +0.754000 +0.669818 +0.695000 +0.685000 +0.646957 +0.660000 +0.532000 +0.481412 +0.448000 +0.432000 +0.411200 +0.387429 +0.377455 +0.360000 +0.358500 +0.413217 +0.790000 +1.025000 +1.885000 +1.943000 +0.896000 +0.685000 +0.708000 +0.597818 +0.749647 +1.039000 +0.786783 +1.050000 +0.780000 +0.645714 +2.695000 +2.039000 +0.983000 +0.811826 +0.741818 +0.644400 +0.602526 +0.598154 +0.651789 +0.704000 +0.755478 +0.645913 +0.569455 +0.739826 +0.843600 +0.763826 +0.659429 +0.608400 +0.576000 +1.082286 +1.006000 +1.442000 +1.016000 +0.889043 +0.874000 +2.035000 +1.620000 +3.801000 +7.831000 +3.417000 +2.867000 +6.729000 +4.500000 +4.825000 +6.809000 +3.346000 +6.257000 +5.169000 +2.845000 +2.243000 +2.294000 +3.348000 +4.766000 +2.010000 +1.322000 +1.134000 +1.139478 +2.912000 +2.918000 +5.730000 +4.722000 +2.568000 +1.784000 +1.356000 +1.192000 +1.964000 +2.215000 +1.552000 +1.284000 +1.675000 +1.225000 +1.224000 +1.561000 +2.032000 +2.012000 +1.232000 +1.783304 +4.635000 +6.578000 +5.160000 +5.476000 +4.162000 +2.916000 +2.247000 +1.728000 +1.450000 +1.245000 +1.156000 +1.076000 +1.005000 +0.968348 +0.937043 +0.882545 +0.864000 +1.912696 +3.468000 +2.982000 +3.865000 +2.548000 +1.326000 +1.054000 +1.936000 +1.372000 +1.546000 +2.428000 +1.981000 +1.286000 +2.507000 +1.986000 +2.913000 +1.451000 +1.240000 +1.211000 +1.105000 +1.014000 +2.524000 +1.555000 +1.056000 +1.285000 +0.988000 +1.040348 +1.044000 +0.854000 +0.826435 +2.992000 +2.282000 +2.035000 +1.122000 +4.205000 +2.878000 +1.121000 +0.926000 +1.158000 +1.083000 +1.404000 +1.229000 +0.854000 +0.736000 +0.668000 +0.625091 +0.596571 +0.568000 +0.547500 +0.518857 +0.499200 +0.480000 +0.480000 +0.464000 +0.460571 +0.563000 +0.774000 +0.618000 +0.534261 +0.528000 +0.530000 +0.480000 +0.452800 +0.432000 +0.444571 +0.867000 +1.998000 +1.207000 +1.027000 +0.993391 +0.853000 +0.763200 +0.673000 +0.698182 +1.040000 +5.212000 +7.798000 +5.539000 +3.110000 +1.907000 +2.327000 +3.078000 +4.050000 +3.640000 +3.257000 +4.294000 +2.764000 +3.325000 +6.691000 +6.795000 +4.654000 +2.688000 +1.840000 +1.435000 +1.230000 +1.094000 +1.001000 +0.928000 +0.875000 +0.820364 +0.770087 +0.733333 +0.698087 +0.665455 +0.642947 +0.617333 +0.598909 +0.582857 +0.558857 +0.571636 +0.587000 +0.622909 +0.738783 +0.811826 +0.877000 +0.706000 +0.601043 +0.619000 +0.560400 +1.394000 +2.363000 +1.430000 +1.239000 +0.821000 +0.686000 +0.708522 +2.044000 +7.026000 +11.042000 +7.917000 +4.966000 +2.942000 +1.896000 +1.357000 +1.140000 +0.992000 +0.903652 +0.864000 +0.816000 +0.746000 +0.687652 +0.644400 +0.609600 +0.582667 +0.576000 +0.576000 +1.044522 +0.744000 +0.609391 +0.576000 +0.542182 +0.506526 +0.504000 +0.486316 +0.467077 +0.464348 +0.456000 +0.451765 +0.432000 +0.432000 +0.432000 +0.411429 +0.408000 +0.441818 +0.567000 +0.527000 +0.432000 +0.402000 +0.429913 +0.400364 +0.384000 +0.360000 +0.358588 +0.336000 +0.336000 +0.315200 +0.312000 +0.319500 +0.325714 +0.312000 +0.313412 +0.318667 +0.362286 +0.354286 +0.420000 +0.458087 +0.408000 +0.416000 +0.404571 +0.371429 +0.337263 +0.313714 +0.312000 +0.312000 +0.312000 +0.292500 +0.288000 +0.288000 +0.308211 +0.329143 +0.316800 +0.820000 +0.786000 +0.901000 +0.580000 +0.483130 +0.523429 +0.641000 +0.458000 +0.378000 +0.347429 +0.372000 +0.453000 +0.400364 +0.379200 +0.342857 +0.362182 +0.727000 +0.925000 +0.595000 +0.446609 +0.396000 +0.552000 +0.539000 +0.540000 +0.433714 +0.700174 +0.913000 +0.778435 +0.639000 +0.517000 +0.777000 +0.941000 +1.143000 +2.490000 +3.911000 +7.039000 +3.065000 +2.012000 +1.267000 +2.152000 +2.597000 +3.048000 +4.301000 +3.507000 +1.777000 +1.387000 +1.107000 +0.978783 +0.904000 +0.941217 +1.299000 +0.949000 +3.691000 +2.771000 +4.896000 +4.306000 +3.129000 +2.155000 +1.469000 +1.396000 +1.321000 +1.066000 +1.106286 +1.707000 +1.085000 +1.108000 +0.999000 +0.866286 +1.651000 +2.279000 +3.327000 +1.384000 +2.061000 +5.723000 +8.179000 +12.204000 +10.202000 +9.368000 +12.204000 +12.937091 +9.818000 +8.416000 +12.065000 +13.183000 +11.899000 +8.588000 +6.750000 +5.445000 +5.418000 +4.615000 +3.517000 +3.019826 +3.136000 +2.976000 +3.231000 +3.301000 +2.284000 +2.295000 +3.209000 +2.756000 +2.336000 +3.981000 +4.551000 +4.005000 +6.641000 +4.522000 +3.208000 +3.865000 +2.849000 +2.510000 +4.803000 +6.062000 +4.404000 +5.127000 +8.353000 +7.999000 +6.359000 +5.285000 +6.238000 +8.104000 +5.220000 +3.157000 +2.458000 +2.156000 +1.851130 +3.719000 +4.162000 +2.748000 +2.295000 +2.462000 +3.682000 +2.748000 +2.057000 +1.580000 +1.389000 +1.263000 +1.149000 +1.631000 +3.624000 +6.027000 +4.539000 +3.796000 +2.504000 +2.065000 +2.026000 +1.764000 +1.442000 +1.303000 +1.208000 +1.152000 +1.094000 +1.029000 +0.997000 +0.955000 +0.915000 +0.873000 +0.868000 +0.896000 +0.977739 +2.223000 +6.131000 +5.574000 +2.675000 +2.348000 +1.778000 +1.414000 +1.230000 +1.158000 +1.108000 +1.365000 +2.342000 +3.899000 +4.190000 +4.651000 +7.937000 +10.456000 +8.712000 +5.373000 +6.116000 +8.140000 +5.450000 +2.987000 +2.333000 +1.937000 +1.624000 +1.454000 +1.343000 +1.255000 +1.196000 +1.138000 +1.099000 +1.030000 +0.976000 +0.945000 +1.255000 +1.923000 +2.419000 +1.535000 +1.226000 +1.092000 +0.973000 +0.942000 +2.169000 +5.886000 +3.524000 +2.352000 +1.999000 +1.700000 +1.466000 +1.192000 +1.047000 +0.956000 +0.895636 +0.858783 +0.846545 +0.810000 +0.801000 +0.837000 +1.007000 +1.388000 +1.359000 +1.244000 +1.123000 +2.066000 +2.982000 +1.672000 +1.276000 +1.405000 +1.134000 +1.116000 +2.367000 +3.692000 +3.581000 +5.327000 +6.942000 +4.137000 +2.512000 +2.138000 +1.527000 +1.295000 +1.177091 +1.111304 +1.044000 +0.972000 +1.030909 +1.076000 +0.977000 +0.888000 +0.846545 +1.005000 +1.574000 +1.203000 +1.602000 +1.835000 +1.534000 +1.665000 +2.387000 +1.650000 +1.131000 +0.985091 +0.912000 +0.835000 +0.761143 +0.712000 +0.684632 +0.662400 +0.642667 +0.617143 +0.595200 +0.578667 +0.569333 +0.574667 +0.580571 +0.579429 +0.614182 +0.560000 +0.539368 +0.510857 +0.501333 +0.480000 +0.461714 +0.456000 +0.456000 +0.456000 +0.461000 +0.446000 +0.432000 +0.418435 +0.408000 +0.408000 +0.398857 +0.390545 +0.384000 +0.389714 +0.519652 +0.608000 +0.516000 +0.585000 +0.537000 +0.444522 +0.410182 +0.393143 +0.501000 +1.668000 +1.219000 +0.787000 +0.589000 +0.508000 +0.457043 +0.426545 +0.406800 +0.384000 +0.367579 +0.360000 +0.354000 +0.336000 +0.330000 +0.325565 +0.318545 +0.316500 +0.314667 +0.312000 +0.291600 +0.288000 +0.291273 +0.312000 +0.312000 +0.296727 +0.308870 +0.289000 +0.325714 +0.312000 +0.366261 +0.408000 +0.402000 +0.357000 +0.336000 +0.318545 +0.297333 +0.288000 +0.288000 +0.324522 +0.296000 +0.271500 +0.264000 +0.264000 +0.244800 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.252000 +0.397565 +0.653000 +0.599000 +0.399652 +0.375000 +0.885000 +0.898000 +0.588000 +0.458000 +0.468000 +0.800000 +0.614000 +1.144000 +0.892000 +0.534000 +0.414000 +0.366000 +0.360000 +0.332571 +0.310857 +0.288000 +0.266824 +0.264000 +0.277091 +0.285818 +0.264000 +0.259429 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.223000 +0.216000 +0.216000 +0.216000 +0.242286 +0.310957 +0.383000 +0.292000 +0.264000 +0.279000 +0.357913 +0.425739 +0.405000 +0.365217 +0.321818 +0.315000 +0.391636 +1.257000 +0.989000 +5.164000 +3.821000 +1.262000 +2.450000 +3.624000 +2.319000 +1.987000 +1.183000 +1.403000 +1.813000 +2.143000 +4.273000 +2.296000 +1.340000 +1.014261 +0.912000 +0.730000 +0.682435 +1.005000 +0.836000 +0.714000 +2.007000 +1.207000 +2.826000 +4.331000 +5.308000 +5.225000 +3.477000 +2.386000 +2.068000 +1.420000 +1.130000 +0.982000 +0.882000 +0.871000 +0.762000 +0.694957 +0.657143 +0.620870 +0.601043 +0.612522 +1.236000 +1.969000 +1.085000 +0.994000 +1.027000 +1.122000 +1.042000 +0.816000 +0.723000 +0.669000 +0.637565 +0.622909 +0.601043 +0.603000 +3.197000 +1.813000 +0.901000 +0.783273 +1.258000 +0.917000 +2.210000 +2.248000 +2.350000 +2.093000 +1.926000 +1.021000 +1.521000 +3.142000 +5.602000 +3.254000 +2.257000 +1.648000 +1.190000 +1.010087 +0.898435 +0.831000 +0.778435 +0.735652 +0.703000 +0.719000 +0.753391 +0.880000 +0.857000 +0.785000 +1.492000 +1.025000 +1.321000 +2.452000 +1.332000 +0.909000 +2.103000 +2.317000 +1.068000 +0.822000 +0.706000 +0.709565 +0.655000 +0.642000 +0.569739 +0.565895 +0.573913 +0.644000 +0.732000 +0.692000 +0.654261 +1.076000 +1.196000 +0.916000 +0.997000 +1.035000 +1.127000 +2.623000 +1.483000 +1.879000 +3.509000 +2.745000 +1.742000 +3.610000 +2.938000 +4.072000 +5.067000 +3.093000 +3.252000 +3.253000 +3.563000 +4.721000 +7.320000 +7.646000 +6.055000 +5.646000 +5.957000 +3.800000 +3.100000 +5.050000 +6.229000 +6.117000 +8.313000 +5.672000 +5.046000 +3.327000 +2.422000 +1.949000 +1.587000 +1.562000 +3.029000 +3.310000 +2.896000 +4.442000 +2.784000 +2.472000 +7.215000 +9.002000 +6.013000 +4.033000 +2.878000 +2.398957 +3.058000 +2.371000 +1.747000 +2.678000 +2.189000 +1.449000 +1.827000 +4.970000 +2.948000 +1.663000 +1.310000 +1.191652 +1.968000 +2.485000 +1.756000 +1.369000 +1.193739 +1.375000 +1.397000 +1.091000 +0.980870 +0.920348 +0.869217 +0.820800 +0.777818 +0.748571 +0.710857 +0.694857 +0.676174 +0.660522 +0.732571 +0.670909 +0.624000 +0.595200 +0.562667 +0.552000 +0.542400 +0.528000 +0.519529 +0.508800 +0.498353 +0.486316 +0.480000 +0.480000 +0.463200 +0.456000 +0.447429 +0.432000 +0.432000 +0.430909 +0.428727 +0.432000 +0.414261 +0.408000 +0.412000 +0.526909 +0.771000 +1.441000 +1.823000 +0.878000 +0.647000 +0.538435 +0.492000 +0.452870 +0.432000 +0.424500 +0.414000 +0.408000 +0.398400 +0.377333 +0.380400 +0.408000 +0.419478 +0.637091 +0.567000 +0.449739 +0.419478 +0.432000 +0.516522 +0.822000 +0.994000 +0.738000 +2.539000 +2.738000 +1.852000 +1.152000 +0.783000 +1.270957 +2.472000 +1.073000 +0.694000 +1.801000 +1.616000 +0.774000 +0.630000 +0.554000 +0.506286 +0.480000 +0.795000 +1.642000 +0.952000 +0.708522 +0.991000 +3.453000 +3.983000 +1.492000 +0.999000 +0.714000 +0.606261 +0.543273 +0.500000 +0.480000 +0.496364 +0.442909 +0.411273 +0.392400 +0.382400 +0.364800 +0.360000 +0.374118 +0.599000 +0.654261 +0.735000 +1.051000 +2.405000 +0.891000 +0.611000 +0.547826 +0.508000 +0.451200 +0.411600 +0.384000 +0.361500 +0.350118 +0.336000 +0.313714 +0.312000 +0.314526 +0.389455 +0.528000 +0.443000 +0.393818 +0.374857 +0.415000 +0.377739 +0.331200 +0.309474 +0.288000 +0.358400 +2.063000 +2.284000 +5.114000 +10.967000 +8.138000 +4.350000 +2.494000 +1.905000 +1.559000 +1.095000 +1.299130 +2.709000 +1.582000 +1.093000 +0.889000 +1.039000 +0.797000 +0.682435 +0.621714 +0.608842 +0.593143 +0.555273 +0.517500 +0.504000 +0.531000 +0.869000 +0.701000 +0.560000 +0.504000 +0.473333 +0.449333 +0.596000 +0.726000 +0.496364 +0.439304 +0.420923 +0.408000 +0.420632 +0.636000 +1.155000 +0.765913 +2.193000 +1.722000 +0.810000 +0.618783 +0.540000 +0.495600 +0.465000 +0.448500 +0.432000 +0.410824 +0.397714 +0.384000 +0.376615 +0.360000 +0.360000 +0.358400 +0.336000 +0.336000 +0.336000 +0.336000 +0.328500 +0.312000 +0.312000 +0.312000 +0.312000 +0.309333 +0.292800 +0.288000 +0.289412 +0.288000 +0.288000 +0.288000 +0.323000 +0.464727 +0.538000 +1.041000 +0.724174 +0.789600 +0.621000 +0.489391 +0.429913 +2.105000 +7.077000 +5.698000 +2.486000 +1.633000 +5.321000 +4.960000 +6.356000 +3.399000 +2.764000 +1.957000 +1.376000 +4.335000 +6.606000 +5.599000 +3.030000 +2.226000 +3.058000 +1.985000 +3.753000 +2.780000 +2.501000 +2.894000 +3.358000 +3.230000 +7.033000 +5.128000 +3.945000 +2.922000 +2.149000 +1.630000 +2.229000 +3.580000 +3.360000 +2.516000 +1.847000 +1.462000 +1.297000 +1.292000 +1.503000 +1.301000 +1.693000 +3.872000 +4.491000 +2.496000 +2.442000 +1.716000 +1.385739 +1.511000 +1.401000 +1.165000 +1.041000 +0.953739 +0.894261 +0.920348 +1.245000 +3.480000 +3.705000 +2.286000 +1.468000 +1.238000 +1.119000 +2.765000 +4.502000 +5.389000 +5.331000 +3.514000 +4.577000 +5.638000 +3.556000 +6.792000 +8.732000 +7.248000 +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +NaN +0.529143 +0.432000 +0.318000 +0.265000 +0.240000 +0.240000 +0.220000 +0.234000 +0.223000 +0.216000 +0.216000 +0.216000 +0.322000 +0.272000 +0.231000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.213000 +0.193000 +0.192000 +0.192000 +0.192000 +0.192000 +0.203000 +0.226000 +0.239000 +0.222000 +0.216000 +0.216000 +0.209000 +0.192000 +0.192000 +0.192000 +0.192000 +0.184000 +0.200000 +0.522000 +1.126000 +0.851000 +1.958000 +0.749000 +0.457000 +0.364000 +0.322000 +0.306000 +0.302000 +0.469000 +0.747000 +0.420000 +0.333000 +0.294000 +0.265000 +0.249000 +0.253000 +0.396000 +0.327000 +0.300000 +0.615000 +0.370000 +0.298000 +0.268000 +0.248000 +0.240000 +0.227000 +0.216000 +0.216000 +0.216000 +0.228000 +0.220000 +0.224000 +0.240000 +0.258000 +0.244000 +0.352000 +0.299000 +0.301000 +0.378000 +0.369000 +0.440000 +0.584000 +1.839000 +1.305000 +0.696000 +0.475000 +0.393000 +0.347000 +0.312000 +0.306000 +0.292000 +0.306000 +0.416000 +0.452000 +0.692000 +0.719000 +0.480000 +0.406000 +0.710000 +1.438000 +2.180000 +0.902000 +0.596000 +0.479000 +0.418000 +0.558000 +1.895000 +1.337000 +0.850000 +2.026000 +1.596000 +3.851000 +5.495000 +2.515000 +1.356000 +0.983000 +0.814000 +0.709000 +0.629000 +0.580000 +0.660000 +0.844000 +0.824000 +1.747000 +1.486000 +0.896000 +0.705000 +0.659000 +0.591000 +0.556000 +1.261000 +1.505000 +0.943000 +2.382000 +1.167000 +1.688000 +4.002000 +1.831000 +0.932000 +0.721000 +0.579000 +0.634000 +1.554000 +2.216000 +1.591000 +2.433000 +3.273000 +3.449000 +1.902000 +4.523000 +4.165000 +2.506000 +4.222000 +4.269000 +5.266000 +2.849000 +3.759000 +4.259000 +2.838000 +2.848000 +3.654000 +3.290000 +2.232000 +1.512000 +1.387000 +1.404000 +1.124000 +1.035000 +1.012000 +0.903000 +0.875000 +3.387000 +8.980000 +9.323000 +6.892000 +8.355000 +7.702000 +4.935000 +2.838000 +2.350000 +2.203000 +1.531000 +2.089000 +1.472000 +1.186000 +1.092000 +1.075000 +1.014000 +1.000000 +1.131000 +1.024000 +0.920000 +0.853000 +0.793000 +0.740000 +0.714000 +0.748000 +0.709000 +0.683000 +0.697000 +0.710000 +0.758000 +0.766000 +0.792000 +1.099000 +1.485000 +1.040000 +0.885000 +0.852000 +0.816000 +0.718000 +0.664000 +0.638000 +0.614000 +0.599000 +1.724000 +1.386000 +1.465000 +0.831000 +0.857000 +2.372000 +4.471000 +3.271000 +1.670000 +1.127000 +0.985000 +0.944000 +0.895000 +0.809000 +0.725000 +0.661000 +0.620000 +0.590000 +0.607000 +0.874000 +1.901000 +1.933000 +1.970000 +1.187000 +0.940000 +0.801000 +0.716000 +0.699000 +0.650000 +0.600000 +0.564000 +0.539000 +0.559000 +0.838000 +1.470000 +4.930000 +3.630000 +2.114000 +1.310000 +1.264000 +0.903000 +0.760000 +0.785000 +0.776000 +0.917000 +1.020000 +0.884000 +0.732000 +0.643000 +0.581000 +0.567000 +1.168000 +0.833000 +0.870000 +0.664000 +0.857000 +0.716000 +0.631000 +0.733000 +0.577000 +0.520000 +0.478000 +0.450000 +0.427000 +0.408000 +0.389000 +0.384000 +0.378000 +0.372000 +0.360000 +0.343000 +0.336000 +0.336000 +0.333000 +0.312000 +0.312000 +0.337000 +0.361000 +0.336000 +0.336000 +0.323000 +0.348000 +0.313000 +0.308000 +0.288000 +0.288000 +0.279000 +0.264000 +0.264000 +0.264000 +0.264000 +0.254000 +0.240000 +0.240000 +0.240000 +0.257000 +0.316000 +0.310000 +0.333000 +0.319000 +0.537000 +1.964000 +0.974000 +0.705000 +0.503000 +0.584000 +0.423000 +0.423000 +0.496000 +0.554000 +1.112000 +1.390000 +1.656000 +1.270000 +0.622000 +0.475000 +0.573000 +0.676000 +0.486000 +0.410000 +0.371000 +0.340000 +0.317000 +0.312000 +0.333000 +0.455000 +0.476000 +0.357000 +0.394000 +0.365000 +0.329000 +0.289000 +0.265000 +0.264000 +0.283000 +0.265000 +0.242000 +0.240000 +0.240000 +0.223000 +0.216000 +0.223000 +0.321000 +0.902000 +0.501000 +0.416000 +0.339000 +0.326000 +3.894000 +9.167000 +7.888000 +6.307000 +4.086000 +1.949000 +1.157000 +0.949000 +1.222000 +2.211000 +4.284000 +5.765000 +2.789000 +1.473000 +2.735000 +3.831000 +2.969000 +1.730000 +1.480000 +1.016000 +1.136000 +1.158000 +0.815000 +0.706000 +0.640000 +0.588000 +0.556000 +0.532000 +0.509000 +0.490000 +0.476000 +0.456000 +0.477000 +0.511000 +1.760000 +2.777000 +1.716000 +1.194000 +0.715000 +0.757000 +0.812000 +1.009000 +3.767000 +3.178000 +1.325000 +0.932000 +0.725000 +0.604000 +0.538000 +0.521000 +0.492000 +0.527000 +0.546000 +0.587000 +1.045000 +1.757000 +3.169000 +2.543000 +1.932000 +0.943000 +0.711000 +0.605000 +0.545000 +0.500000 +0.532000 +1.022000 +1.125000 +0.898000 +1.700000 +2.159000 +1.214000 +1.147000 +4.563000 +7.167000 +8.585000 +9.112000 +7.125000 +5.458000 +3.731000 +2.601000 +2.236000 +2.648000 +2.289000 +1.556000 +1.284000 +1.171000 +1.109000 +1.122000 +1.035000 +1.053000 +1.143000 +1.044000 +0.999000 +0.936000 +0.849000 +0.798000 +0.793000 +0.728000 +0.709000 +0.787000 +0.960000 +0.832000 +0.715000 +0.636000 +0.699000 +1.451000 +0.916000 +0.770000 +0.691000 +0.745000 +0.729000 +0.977000 +0.766000 +0.668000 +0.617000 +0.580000 +0.559000 +0.552000 +0.532000 +0.528000 +0.556000 +0.532000 +0.508000 +0.486000 +0.480000 +0.480000 +0.476000 +0.892000 +1.790000 +1.636000 +1.673000 +0.981000 +0.735000 +0.617000 +0.966000 +2.395000 +3.338000 +3.237000 +1.635000 +0.947000 +2.376000 +2.917000 +1.239000 +2.100000 +3.244000 +2.589000 +2.020000 +1.490000 +2.324000 +2.437000 +2.328000 +7.873000 +9.762000 +7.614000 +6.265000 +4.243000 +3.387000 +2.562000 +1.736000 +1.611000 +1.537000 +3.044000 +2.154000 +2.572000 +2.577000 +1.492000 +1.116000 +0.981000 +1.023000 +1.411000 +1.552000 +1.600000 +1.480000 +1.300000 +1.061000 +0.952000 +0.892000 +0.845000 +0.817000 +0.779000 +0.750000 +0.777000 +0.746000 +0.695000 +1.191000 +1.775000 +1.219000 +2.369000 +1.139000 +0.906000 +0.817000 +0.774000 +0.791000 +0.757000 +0.697000 +0.709000 +0.827000 +1.030000 +1.416000 +3.333000 +3.857000 +4.157000 +3.019000 +2.314000 +1.977000 +1.800000 +1.624000 +2.079000 +1.682000 +1.309000 +1.322000 +1.709000 +1.672000 +2.115000 +3.541000 +1.860000 +1.161000 +1.677000 +4.562000 +3.658000 +2.080000 +1.355000 +1.069000 +0.921000 +0.852000 +0.948000 +0.890000 +0.788000 +0.730000 +0.715000 +2.570000 +3.817000 +1.788000 +1.203000 +1.045000 +0.935000 +0.850000 +0.783000 +0.742000 +0.826000 +2.998000 +1.949000 +1.083000 +0.849000 +0.805000 +0.697000 +0.675000 +0.682000 +1.542000 +4.331000 +6.099000 +4.517000 +5.057000 +3.158000 +2.493000 +1.628000 +1.250000 +1.065000 +0.951000 +0.878000 +1.132000 +1.287000 +1.011000 +0.932000 +0.888000 +0.856000 +1.070000 +2.416000 +1.400000 +0.976000 +0.845000 +0.764000 +0.736000 +0.748000 +0.681000 +0.621000 +0.585000 +0.558000 +0.541000 +0.528000 +0.512000 +0.504000 +0.504000 +0.518000 +0.558000 +0.882000 +0.723000 +0.970000 +1.882000 +1.172000 +0.811000 +0.647000 +0.557000 +0.500000 +0.458000 +0.432000 +0.453000 +0.457000 +0.531000 +0.568000 +0.830000 +0.790000 +0.515000 +0.438000 +0.404000 +0.384000 +0.382000 +0.396000 +0.407000 +0.396000 +0.428000 +0.412000 +0.492000 +0.512000 +2.890000 +0.859000 +0.555000 +0.456000 +0.394000 +0.385000 +0.383000 +0.360000 +0.352000 +0.336000 +0.336000 +0.395000 +0.379000 +0.335000 +0.322000 +0.336000 +0.378000 +0.608000 +0.523000 +0.420000 +0.348000 +0.311000 +0.288000 +0.288000 +0.288000 +0.288000 +0.288000 +0.279000 +0.264000 +0.264000 +0.264000 +0.264000 +0.264000 +0.250000 +0.240000 +0.240000 +0.240000 +0.240000 +0.275000 +0.804000 +0.920000 +0.691000 +0.519000 +0.416000 +0.353000 +0.316000 +0.312000 +0.295000 +0.276000 +0.264000 +0.264000 +0.264000 +0.264000 +0.272000 +0.295000 +0.350000 +0.344000 +0.333000 +0.275000 +0.264000 +0.254000 +0.240000 +0.229000 +0.231000 +0.239000 +0.239000 +0.423000 +0.425000 +0.319000 +0.279000 +0.263000 +0.265000 +0.336000 +0.354000 +0.374000 +0.313000 +0.268000 +0.245000 +0.240000 +0.231000 +0.217000 +0.272000 +2.071000 +1.145000 +0.603000 +0.413000 +0.342000 +0.433000 +1.023000 +0.883000 +0.518000 +0.409000 +0.356000 +0.321000 +0.312000 +0.288000 +0.298000 +0.381000 +0.320000 +0.311000 +0.374000 +0.837000 +0.891000 +1.053000 +1.073000 +0.626000 +0.445000 +0.376000 +0.332000 +0.312000 +0.305000 +0.290000 +0.284000 +0.264000 +0.289000 +0.872000 +0.814000 +0.503000 +0.400000 +0.353000 +0.325000 +0.312000 +0.334000 +0.521000 +1.192000 +1.182000 +1.401000 +7.183000 +6.571000 +4.305000 +2.801000 +1.398000 +1.030000 +1.357000 +1.101000 +1.149000 +3.817000 +4.573000 +4.862000 +2.812000 +3.047000 +2.788000 +6.082000 +4.273000 +3.009000 +3.009000 +2.688000 +1.523000 +1.158000 +0.998000 +0.865000 +0.758000 +0.686000 +0.633000 +0.608000 +0.576000 +0.547000 +0.535000 +0.552000 +0.553000 +0.875000 +2.169000 +2.049000 +1.132000 +0.996000 +1.859000 +4.132000 +4.743000 +3.036000 +2.063000 +2.698000 +1.974000 +1.283000 +1.087000 +1.010000 +0.962000 +0.904000 +0.831000 +0.776000 +0.742000 +0.677000 +0.613000 +0.582000 +0.576000 +0.573000 +0.583000 +0.653000 +0.678000 +0.602000 +0.558000 +0.583000 +0.638000 +0.605000 +0.569000 +1.407000 +4.150000 +2.250000 +1.194000 +0.957000 +0.839000 +0.769000 +0.694000 +0.651000 +0.618000 +0.616000 +3.798000 +4.267000 +1.352000 +0.952000 +0.906000 +0.825000 +0.985000 +1.057000 +1.094000 +1.622000 +1.987000 +1.072000 +0.813000 +0.723000 +0.663000 +0.620000 +0.586000 +0.624000 +0.798000 +0.691000 +0.600000 +0.560000 +0.524000 +0.512000 +0.501000 +0.489000 +0.488000 +0.482000 +0.610000 +0.875000 +0.573000 +0.489000 +0.491000 +0.855000 +0.825000 +2.106000 +3.074000 +2.601000 +1.942000 +1.013000 +0.794000 +1.079000 +1.555000 +1.312000 +2.796000 +4.896000 +2.309000 +1.537000 +1.764000 +1.429000 +1.040000 +0.878000 +0.780000 +0.710000 +0.645000 +0.610000 +0.683000 +2.025000 +2.335000 +2.235000 +1.398000 +1.056000 +1.067000 +4.559000 +4.790000 +2.956000 +1.881000 +1.433000 +1.916000 +2.090000 +1.394000 +1.069000 +1.009000 +2.020000 +4.465000 +5.507000 +6.155000 +6.544000 +3.739000 +5.341000 +6.627000 +5.759000 +6.375000 +4.577000 +2.778000 +2.045000 +1.623000 +1.588000 +1.796000 +1.472000 +1.204000 +1.378000 +1.179000 +1.128000 +1.012000 +0.895000 +0.816000 +0.770000 +0.809000 +0.819000 +0.781000 +0.709000 +0.681000 +0.634000 +0.619000 +0.606000 +0.610000 +0.562000 +0.532000 +0.528000 +0.547000 +0.533000 +0.519000 +0.491000 +0.477000 +0.456000 +0.715000 +0.786000 +0.611000 +0.524000 +0.482000 +0.467000 +0.504000 +0.532000 +0.609000 +1.637000 +1.239000 +1.556000 +1.662000 +1.152000 +1.839000 +4.493000 +7.702000 +5.188000 +3.889000 +2.072000 +1.340000 +1.098000 +0.945000 +0.850000 +0.766000 +0.720000 +0.675000 +0.620000 +0.579000 +0.554000 +0.533000 +0.516000 +0.489000 +0.474000 +0.454000 +0.435000 +0.432000 +0.431000 +0.431000 +0.408000 +0.405000 +0.384000 +0.384000 +0.384000 +0.384000 +0.384000 +0.407000 +0.446000 +0.424000 +0.384000 +0.384000 +0.384000 +0.366000 +0.356000 +0.336000 +0.322000 +0.312000 +0.312000 +0.292000 +0.288000 +0.288000 +0.288000 +0.265000 +0.274000 +0.296000 +0.374000 +0.310000 +0.286000 +0.264000 +0.264000 +0.241000 +0.240000 +0.240000 +0.240000 +0.237000 +0.240000 +0.231000 +0.253000 +0.238000 +0.217000 +0.216000 +0.216000 +0.216000 +0.216000 +0.213000 +0.216000 +0.239000 +0.558000 +1.070000 +0.628000 +0.397000 +0.326000 +0.321000 +0.290000 +0.264000 +0.246000 +0.245000 +0.240000 +0.261000 +0.382000 +0.307000 +0.279000 +0.264000 +0.361000 +2.299000 +2.192000 +1.597000 +1.813000 +0.858000 +0.638000 +0.525000 +0.438000 +0.404000 +0.556000 +0.823000 +0.528000 +0.473000 +0.572000 +1.925000 +4.166000 +3.405000 +1.222000 +0.892000 +1.207000 +0.783000 +0.562000 +0.478000 +0.432000 +0.407000 +0.437000 +0.425000 +1.603000 +1.122000 +0.616000 +0.504000 +0.443000 +0.414000 +0.398000 +0.385000 +0.430000 +0.386000 +0.498000 +0.611000 +0.597000 +0.481000 +0.851000 +0.562000 +0.483000 +0.527000 +0.884000 +1.503000 +0.932000 +1.816000 +2.226000 +1.080000 +0.706000 +0.653000 +0.604000 +1.310000 +1.076000 +0.670000 +0.556000 +0.493000 +0.461000 +0.453000 +0.607000 +1.443000 +1.169000 +0.886000 +1.371000 +0.890000 +0.720000 +3.948000 +4.869000 +2.141000 +1.643000 +1.142000 +0.925000 +1.197000 +0.830000 +0.669000 +0.599000 +0.560000 +0.520000 +0.493000 +0.484000 +0.480000 +0.482000 +0.555000 +1.869000 +1.143000 +0.912000 +0.709000 +1.281000 +1.577000 +1.181000 +1.985000 +2.262000 +3.105000 +2.011000 +1.670000 +3.494000 +4.687000 +6.093000 +3.061000 +2.341000 +2.777000 +2.056000 +1.534000 +1.802000 +1.924000 +6.049000 +6.466000 +9.084000 +8.007000 +7.520000 +7.732000 +3.968000 +4.087000 +7.010000 +4.608000 +4.508000 +7.011000 +6.057000 +3.759000 +2.558000 +1.888000 +1.443000 +1.263000 +1.146000 +1.081000 +1.030000 +0.977000 +0.928000 +0.892000 +0.988000 +1.065000 +3.674000 +7.561000 +5.377000 +3.398000 +3.004000 +3.096000 +2.845000 +2.124000 +2.285000 +4.312000 +5.682000 +9.328000 +9.496000 +10.018000 +8.124000 +6.406000 +4.591000 +2.847000 +2.604000 +4.683000 +7.803000 +6.711000 +7.187000 +5.504000 +3.587000 +2.798000 +2.961000 +2.443000 +2.279000 +2.210000 +1.656000 +1.383000 +1.257000 +1.155000 +1.075000 +1.001000 +0.949000 +0.920000 +0.881000 +0.837000 +0.802000 +0.776000 +0.903000 +2.563000 +5.042000 +5.211000 +3.173000 +2.419000 +1.763000 +2.739000 +2.698000 +1.816000 +1.563000 +1.723000 +2.216000 +3.420000 +3.001000 +2.416000 +1.997000 +1.678000 +3.484000 +4.463000 +3.766000 +2.183000 +1.597000 +3.786000 +4.577000 +3.993000 +2.253000 +1.537000 +1.322000 +1.183000 +1.096000 +0.993000 +0.913000 +0.871000 +0.836000 +0.853000 +1.165000 +1.566000 +1.041000 +0.917000 +0.865000 +1.338000 +1.127000 +0.909000 +0.814000 +0.755000 +0.705000 +0.685000 +0.727000 +0.776000 +0.665000 +0.612000 +0.588000 +0.569000 +0.552000 +0.533000 +0.510000 +0.499000 +0.487000 +0.504000 +0.484000 +0.480000 +0.466000 +0.456000 +0.454000 +0.447000 +0.432000 +0.425000 +0.408000 +0.408000 +0.408000 +0.408000 +0.408000 +0.420000 +0.887000 +0.972000 +0.570000 +0.454000 +0.411000 +0.384000 +0.368000 +0.359000 +0.345000 +0.336000 +0.336000 +0.336000 +0.315000 +0.319000 +0.312000 +0.351000 +0.404000 +0.948000 +1.023000 +1.582000 +2.348000 +0.844000 +0.644000 +0.705000 +0.865000 +1.051000 +0.683000 +0.504000 +0.429000 +0.391000 +0.372000 +0.356000 +0.336000 +0.336000 +0.343000 +0.344000 +0.336000 +0.325000 +0.310000 +0.288000 +0.289000 +0.413000 +0.337000 +0.309000 +0.288000 +0.287000 +0.264000 +0.264000 +0.264000 +0.272000 +0.393000 +3.400000 +8.641000 +7.546000 +4.052000 +2.135000 +2.108000 +5.061000 +2.687000 +2.420000 +2.219000 +2.424000 +6.355000 +4.232000 +2.368000 +1.901000 +2.049000 +2.603000 +5.301000 +4.917000 +5.860000 +3.483000 +2.900000 +3.281000 +2.220000 +1.303000 +1.047000 +0.900000 +0.813000 +0.779000 +1.305000 +1.612000 +1.713000 +1.807000 +1.456000 +1.153000 +2.009000 +2.736000 +2.317000 +1.506000 +1.298000 +1.055000 +0.898000 +1.916000 +1.592000 +1.001000 +0.796000 +0.695000 +0.640000 +0.604000 +0.568000 +0.550000 +0.838000 +0.894000 +0.600000 +0.525000 +0.487000 +0.465000 +0.456000 +0.466000 +0.469000 +0.483000 +1.294000 +2.336000 +1.076000 +0.722000 +0.790000 +1.663000 +0.941000 +0.687000 +0.587000 +0.517000 +0.474000 +0.444000 +0.426000 +0.408000 +0.408000 +0.389000 +0.382000 +0.360000 +0.360000 +0.360000 +0.357000 +0.336000 +0.336000 +0.336000 +0.334000 +0.312000 +0.312000 +0.312000 +0.312000 +0.312000 +0.312000 +0.290000 +0.288000 +0.288000 +0.296000 +0.312000 +0.344000 +0.513000 +0.555000 +0.514000 +0.447000 +1.230000 +0.883000 +0.554000 +0.437000 +0.408000 +0.492000 +0.474000 +0.390000 +0.360000 +0.358000 +0.346000 +0.346000 +0.326000 +0.312000 +0.387000 +0.652000 +0.666000 +0.474000 +0.422000 +0.390000 +0.362000 +0.367000 +0.647000 +0.456000 +0.373000 +0.338000 +0.320000 +0.312000 +0.312000 +0.300000 +0.288000 +0.288000 +0.288000 +0.288000 +1.138000 +0.687000 +0.468000 +0.393000 +0.364000 +0.336000 +0.322000 +0.312000 +0.290000 +0.288000 +0.288000 +0.286000 +0.376000 +0.391000 +0.428000 +0.368000 +0.330000 +0.363000 +0.322000 +0.302000 +0.349000 +1.133000 +2.737000 +2.519000 +2.453000 +1.244000 +0.842000 +0.898000 +0.819000 +0.612000 +0.544000 +0.825000 +1.068000 +2.787000 +3.939000 +4.479000 +2.350000 +1.390000 +3.508000 +3.800000 +3.237000 +3.951000 +5.297000 +3.723000 +1.956000 +1.248000 +1.026000 +0.891000 +0.792000 +0.741000 +0.684000 +0.664000 +0.635000 +0.610000 +0.583000 +0.546000 +0.543000 +0.572000 +0.669000 +0.736000 +3.786000 +7.295000 +7.817000 +4.693000 +2.609000 +5.893000 +4.920000 +3.205000 +4.398000 +6.095000 +3.776000 +3.850000 +4.157000 +5.513000 +9.001000 +6.231000 +3.323000 +3.384000 +4.917000 +5.899000 +5.134000 +5.546000 +5.778000 +4.799000 +5.332000 +10.512000 +10.015000 +8.171000 +6.208000 +3.957000 +3.189000 +2.410000 +1.894000 +2.287000 +2.696000 +5.936000 +3.438000 +2.454000 +3.537000 +3.399000 +5.516000 +3.784000 +2.699000 +2.179000 +1.585000 +1.338000 +1.211000 +1.115000 +1.042000 +0.992000 +0.938000 +0.888000 +0.847000 +0.812000 +0.781000 +0.775000 +0.835000 +2.448000 +1.621000 +1.214000 +1.787000 +2.981000 +1.526000 +1.010000 +4.213000 +3.385000 +1.873000 +1.266000 +1.051000 +0.992000 +1.031000 +1.049000 +3.900000 +1.972000 +2.568000 +3.276000 +4.259000 +3.445000 +2.386000 +1.345000 +1.111000 +0.977000 +0.878000 +0.819000 +0.890000 +1.016000 +1.018000 +1.217000 +1.012000 +0.871000 +0.875000 +1.219000 +3.076000 +5.789000 +6.050000 +3.005000 +3.685000 +2.090000 +1.282000 +1.109000 +1.124000 +1.245000 +1.550000 +1.474000 +1.255000 +1.180000 +2.027000 +1.836000 +1.297000 +1.068000 +1.082000 +0.991000 +0.963000 +1.135000 +0.931000 +0.816000 +0.754000 +0.705000 +0.680000 +0.658000 +0.648000 +0.696000 +0.795000 +0.979000 +2.102000 +5.117000 +3.171000 +1.508000 +1.089000 +0.979000 +0.932000 +0.809000 +0.724000 +0.672000 +0.633000 +0.599000 +0.572000 +0.547000 +0.528000 +0.524000 +0.504000 +0.504000 +0.495000 +0.467000 +0.456000 +0.442000 +0.432000 +0.430000 +0.410000 +0.407000 +0.384000 +0.384000 +0.412000 +0.484000 +0.655000 +0.496000 +0.464000 +0.562000 +0.637000 +0.790000 +0.640000 +0.498000 +0.527000 +0.697000 +0.518000 +0.433000 +0.391000 +0.384000 +0.384000 +0.384000 +0.392000 +0.360000 +0.347000 +0.349000 +0.856000 +1.859000 +0.830000 +1.984000 +4.276000 +2.227000 +0.816000 +0.648000 +0.838000 +0.821000 +0.619000 +0.547000 +0.486000 +0.480000 +0.497000 +0.461000 +0.464000 +0.651000 +2.140000 +3.077000 +1.618000 +2.234000 +4.051000 +5.220000 +3.112000 +1.239000 +0.881000 +0.725000 +0.653000 +0.634000 +0.655000 +0.760000 +0.722000 +0.564000 +0.501000 +0.467000 +0.443000 +0.426000 +0.404000 +0.384000 +0.384000 +0.366000 +0.379000 +0.894000 +2.221000 +1.224000 +0.925000 +0.941000 +0.678000 +0.688000 +0.760000 +0.685000 +1.541000 +3.355000 +2.273000 +2.710000 +1.805000 +1.106000 +0.898000 +2.879000 +7.391000 +5.351000 +6.615000 +4.000000 +2.262000 +1.447000 +1.118000 +0.965000 +1.023000 +1.255000 +1.353000 +0.939000 +0.781000 +0.715000 +0.728000 +0.689000 +1.026000 +2.621000 +2.447000 +6.945000 +12.057000 +12.215000 +9.538000 +7.153000 +5.842000 +4.045000 +2.942000 +2.901000 +2.145000 +1.538000 +1.345000 +1.330000 +1.138000 +1.003000 +0.919000 +0.854000 +0.798000 +0.758000 +0.722000 +0.687000 +0.662000 +0.635000 +0.619000 +0.605000 +0.965000 +1.209000 +0.955000 +0.739000 +3.753000 +3.489000 +1.145000 +2.024000 +1.791000 +1.004000 +2.631000 +2.637000 +1.091000 +0.880000 +2.218000 +2.151000 +1.071000 +0.865000 +0.903000 +1.433000 +5.229000 +3.549000 +1.597000 +2.416000 +2.017000 +2.823000 +4.630000 +1.585000 +1.037000 +0.881000 +0.850000 +1.164000 +1.393000 +1.589000 +1.674000 +1.194000 +1.185000 +1.136000 +1.397000 +3.020000 +6.414000 +6.483000 +4.460000 +2.950000 +1.882000 +1.483000 +1.504000 +1.157000 +1.167000 +1.311000 +1.023000 +0.904000 +0.810000 +0.772000 +0.858000 +1.279000 +1.130000 +1.051000 +1.132000 +1.055000 +0.853000 +0.737000 +0.721000 +0.704000 +0.733000 +0.916000 +1.704000 +2.217000 +2.446000 +5.323000 +2.668000 +1.440000 +1.176000 +2.700000 +8.650000 +6.353000 +3.524000 +3.467000 +2.705000 +2.205000 +3.943000 +3.422000 +2.439000 +1.734000 +1.263000 +1.111000 +1.009000 +0.932000 +0.878000 +0.839000 +0.797000 +0.755000 +0.713000 +0.688000 +0.672000 +0.654000 +0.648000 +0.627000 +0.586000 +0.614000 +0.603000 +0.635000 +0.635000 +4.326000 +6.375000 +2.349000 +1.226000 +1.368000 +1.541000 +2.522000 +3.360000 +4.479000 +2.971000 +2.764000 +5.532000 +3.304000 +2.311000 +3.227000 +2.368000 +2.792000 +4.140000 +2.517000 +1.789000 +1.432000 +1.200000 +2.251000 +2.907000 +2.029000 +1.365000 +1.157000 +1.036000 +0.973000 +1.044000 +1.078000 +0.976000 +1.091000 +1.447000 +2.050000 +4.990000 +4.775000 +3.296000 +2.198000 +1.488000 +1.257000 +1.235000 +1.118000 +1.011000 +0.939000 +0.874000 +0.819000 +0.792000 +0.768000 +0.725000 +0.712000 +0.953000 +1.118000 +0.849000 +0.760000 +1.480000 +2.181000 +1.509000 +1.335000 +0.933000 +0.945000 +0.785000 +0.703000 +0.650000 +0.605000 +0.576000 +0.563000 +0.544000 +0.528000 +0.512000 +0.504000 +0.485000 +0.496000 +0.559000 +0.810000 +0.817000 +0.996000 +0.711000 +0.602000 +0.551000 +0.500000 +0.473000 +0.456000 +0.438000 +0.432000 +0.435000 +0.452000 +0.758000 +0.741000 +0.619000 +0.544000 +0.473000 +0.438000 +0.416000 +0.408000 +0.402000 +0.384000 +0.380000 +0.366000 +0.360000 +0.353000 +0.336000 +0.336000 +0.336000 +0.336000 +0.345000 +0.402000 +1.093000 +1.547000 +0.664000 +0.517000 +0.479000 +0.572000 +0.573000 +0.787000 +1.726000 +1.930000 +1.275000 +0.994000 +0.772000 +0.574000 +0.472000 +0.430000 +0.424000 +0.563000 +0.627000 +0.601000 +0.794000 +0.670000 +0.868000 +1.144000 +0.754000 +0.564000 +0.476000 +0.432000 +0.392000 +0.384000 +0.381000 +0.369000 +0.347000 +0.323000 +0.295000 +0.288000 +0.288000 +0.291000 +0.521000 +1.806000 +0.786000 +0.504000 +0.425000 +0.465000 +0.493000 +0.426000 +0.374000 +0.343000 +0.415000 +0.532000 +0.731000 +0.719000 +0.471000 +0.396000 +0.372000 +0.345000 +0.331000 +0.312000 +0.294000 +0.288000 +0.301000 +0.348000 +0.324000 +0.293000 +0.271000 +0.365000 +0.399000 +0.406000 +0.340000 +0.847000 +0.863000 +0.486000 +0.383000 +0.326000 +0.375000 +0.512000 +0.772000 +1.029000 +1.001000 +1.596000 +8.294000 +8.897000 +4.756000 +2.482000 +1.467000 +2.073000 +1.942000 +2.096000 +0.971000 +0.766000 +0.893000 +0.971000 +2.198000 +1.076000 +0.751000 +0.929000 +0.749000 +0.589000 +0.540000 +0.513000 +0.518000 +0.469000 +0.426000 +0.408000 +0.402000 +0.384000 +0.362000 +0.360000 +0.360000 +0.440000 +0.492000 +0.425000 +0.437000 +0.384000 +0.360000 +0.604000 +0.652000 +0.483000 +0.576000 +0.502000 +1.543000 +1.039000 +0.716000 +0.652000 +0.556000 +2.193000 +2.218000 +2.074000 +3.200000 +1.318000 +0.798000 +0.658000 +0.602000 +0.539000 +0.508000 +0.447000 +0.408000 +0.382000 +0.360000 +0.358000 +0.336000 +0.336000 +0.334000 +0.312000 +0.312000 +0.312000 +0.312000 +0.296000 +0.288000 +0.288000 +0.288000 +0.288000 +0.288000 +0.270000 +0.265000 +0.264000 +0.264000 +0.264000 +0.542000 +0.461000 +0.362000 +0.541000 +0.546000 +0.378000 +0.336000 +0.420000 +0.390000 +0.327000 +0.303000 +0.288000 +0.288000 +0.278000 +0.264000 +0.264000 +0.266000 +0.311000 +0.440000 +0.446000 +0.385000 +0.889000 +2.845000 +1.263000 +0.623000 +0.758000 +0.555000 +0.459000 +1.002000 +5.232000 +3.571000 +2.587000 +2.368000 +1.388000 +0.968000 +2.915000 +5.005000 +1.878000 +1.086000 +0.927000 +1.996000 +4.648000 +5.440000 +2.918000 +4.461000 +6.088000 +9.252000 +7.340000 +5.443000 +4.386000 +4.866000 +4.623000 +5.165000 +7.150000 +7.519000 +5.412000 +3.871000 +10.654000 +12.012000 +8.839000 +7.011000 +6.273000 +4.925000 +5.575000 +7.091000 +6.053000 +4.890000 +3.552000 +2.888000 +2.315000 +1.911000 +1.604000 +2.505000 +3.014000 +3.559000 +3.729000 +2.811000 +2.243000 +1.758000 +1.533000 +1.406000 +1.440000 +1.397000 +1.416000 +2.076000 +3.339000 +2.809000 +2.349000 +2.734000 +2.455000 +1.724000 +1.357000 +1.204000 +1.114000 +1.073000 +0.997000 +0.918000 +0.895000 +0.888000 +1.041000 +2.030000 +2.896000 +2.525000 +2.169000 +4.404000 +7.720000 +6.842000 +7.295000 +4.815000 +2.977000 +3.155000 +5.879000 +4.404000 +3.061000 +2.314000 +1.820000 +2.880000 +2.788000 +2.439000 +1.407000 +1.169000 +1.075000 +1.375000 +1.195000 +1.187000 +2.087000 +1.530000 +1.241000 +1.226000 +1.919000 +1.817000 +1.385000 +1.382000 +1.340000 +1.209000 +1.439000 +1.557000 +1.226000 +1.160000 +1.085000 +0.975000 +0.929000 +0.934000 +0.997000 +1.189000 +2.180000 +6.681000 +5.126000 +3.436000 +2.307000 +1.579000 +1.317000 +1.163000 +1.082000 +1.200000 +1.169000 +1.001000 +0.943000 +0.926000 +0.930000 +1.236000 +1.320000 +1.683000 +1.661000 +1.282000 +1.280000 +1.447000 +1.283000 +1.752000 +1.167000 +1.100000 +1.111000 +2.335000 +4.181000 +4.951000 +2.484000 +1.370000 +2.969000 +5.883000 +5.254000 +2.583000 +2.124000 +2.749000 +1.960000 +2.575000 +1.655000 +1.318000 +1.082000 +0.970000 +0.893000 +0.833000 +0.785000 +0.756000 +0.716000 +0.688000 +0.665000 +0.640000 +0.623000 +0.615000 +0.588000 +0.557000 +0.552000 +0.541000 +0.528000 +0.521000 +0.501000 +0.485000 +0.491000 +0.513000 +0.476000 +0.456000 +0.450000 +0.444000 +0.432000 +0.442000 +0.453000 +0.431000 +0.410000 +0.408000 +0.408000 +0.408000 +0.392000 +0.384000 +0.384000 +0.379000 +0.360000 +0.360000 +0.360000 +0.358000 +0.338000 +0.337000 +0.397000 +0.348000 +0.316000 +0.319000 +0.336000 +0.333000 +0.324000 +0.348000 +0.325000 +0.324000 +0.350000 +0.374000 +0.340000 +0.312000 +0.320000 +0.338000 +0.388000 +0.441000 +0.645000 +0.911000 +0.553000 +0.424000 +0.421000 +0.381000 +0.346000 +0.319000 +0.303000 +0.288000 +0.270000 +0.265000 +0.264000 +0.248000 +0.240000 +0.240000 +0.240000 +0.263000 +0.261000 +0.269000 +0.278000 +0.243000 +0.241000 +0.251000 +0.240000 +0.236000 +0.216000 +0.217000 +0.216000 +0.228000 +0.228000 +0.216000 +0.233000 +0.260000 +0.274000 +0.572000 +0.912000 +0.881000 +0.612000 +0.674000 +1.532000 +3.008000 +3.257000 +0.904000 +0.587000 +0.471000 +0.415000 +0.377000 +0.347000 +0.333000 +0.312000 +0.310000 +0.288000 +0.288000 +0.287000 +0.288000 +0.275000 +0.264000 +0.264000 +0.362000 +0.411000 +0.319000 +0.284000 +0.268000 +0.293000 +0.601000 +0.993000 +0.552000 +0.401000 +0.345000 +0.324000 +0.310000 +2.298000 +1.204000 +0.531000 +0.424000 +0.471000 +0.415000 +0.346000 +0.311000 +0.340000 +0.328000 +0.296000 +0.268000 +0.254000 +0.240000 +0.240000 +0.230000 +0.223000 +0.293000 +0.522000 +0.578000 +0.554000 +0.965000 +2.068000 +0.689000 +0.513000 +0.884000 +0.697000 +0.466000 +0.372000 +0.336000 +0.692000 +1.067000 +0.558000 +0.445000 +1.445000 +0.936000 +0.606000 +0.466000 +0.399000 +0.424000 +0.990000 +0.870000 +2.022000 +1.642000 +3.873000 +2.022000 +1.004000 +1.248000 +0.843000 +0.633000 +0.554000 +0.506000 +0.454000 +0.419000 +0.393000 +0.381000 +0.360000 +0.350000 +0.336000 +0.336000 +0.345000 +0.342000 +0.333000 +1.011000 +1.909000 +0.673000 +0.506000 +0.715000 +1.144000 +0.839000 +0.753000 +1.076000 +0.842000 +0.804000 +4.197000 +3.547000 +6.295000 +5.210000 +1.574000 +0.980000 +2.668000 +4.506000 +2.234000 +5.485000 +5.905000 +2.437000 +1.525000 +1.142000 +1.027000 +0.922000 +0.883000 +1.011000 +0.912000 +1.608000 +2.813000 +2.116000 +1.186000 +0.954000 +0.835000 +0.778000 +0.736000 +0.764000 +0.780000 +0.808000 +0.824000 +0.818000 +0.837000 +0.973000 +0.945000 +0.798000 +0.805000 +0.642000 +3.498000 +4.812000 +2.594000 +2.191000 +2.708000 +2.731000 +2.881000 +1.615000 +1.014000 +0.931000 +0.861000 +0.738000 +0.717000 +0.614000 +0.690000 +0.565000 +0.530000 +0.630000 +1.009000 +1.911000 +2.147000 +1.629000 +1.706000 +1.130000 +0.896000 +0.919000 +1.854000 +1.329000 +1.166000 +2.385000 +2.055000 +4.689000 +6.568000 +4.717000 +4.280000 +3.618000 +7.279000 +7.730000 +3.590000 +1.846000 +1.309000 +1.099000 +0.958000 +0.895000 +0.880000 +0.861000 +0.876000 +1.160000 +1.167000 +0.924000 +0.802000 +0.757000 +0.720000 +0.855000 +1.368000 +3.001000 +7.699000 +9.122000 +8.381000 +7.550000 +4.113000 +3.554000 +2.486000 +2.419000 +3.492000 +4.051000 +4.143000 +3.153000 +3.728000 +2.447000 +1.994000 +2.427000 +2.130000 +1.842000 +1.809000 +2.406000 +1.832000 +2.009000 +3.317000 +2.233000 +1.505000 +1.247000 +1.100000 +1.005000 +0.941000 +0.885000 +0.843000 +0.797000 +0.779000 +1.677000 +4.035000 +2.958000 +2.785000 +1.528000 +1.064000 +0.929000 +0.867000 +0.810000 +0.735000 +0.683000 +0.656000 +0.629000 +0.595000 +0.579000 +0.563000 +0.551000 +0.528000 +0.519000 +0.504000 +0.502000 +0.506000 +0.727000 +1.665000 +1.292000 +0.842000 +1.353000 +3.191000 +1.255000 +0.763000 +0.610000 +0.539000 +0.502000 +0.473000 +0.450000 +0.432000 +0.432000 +0.417000 +0.403000 +0.384000 +0.384000 +0.374000 +0.360000 +0.360000 +0.351000 +0.338000 +0.336000 +0.327000 +0.312000 +0.312000 +0.312000 +0.312000 +0.300000 +0.288000 +0.288000 +0.288000 +0.288000 +0.288000 +0.288000 +0.389000 +0.463000 +0.391000 +0.340000 +0.315000 +0.312000 +0.325000 +0.345000 +0.329000 +0.312000 +0.298000 +0.500000 +0.434000 +0.335000 +0.309000 +0.834000 +1.159000 +0.905000 +0.626000 +0.514000 +0.702000 +0.699000 +0.667000 +0.511000 +0.386000 +0.324000 +0.296000 +0.276000 +0.264000 +0.258000 +0.240000 +0.240000 +0.243000 +0.264000 +0.248000 +0.272000 +0.510000 +1.027000 +0.489000 +0.371000 +0.311000 +0.295000 +0.313000 +0.500000 +0.494000 +0.465000 +1.428000 +1.328000 +0.816000 +0.582000 +0.612000 +0.495000 +0.380000 +0.317000 +0.285000 +0.264000 +0.248000 +0.240000 +0.217000 +0.228000 +0.242000 +0.329000 +1.234000 +1.224000 +0.592000 +0.425000 +0.347000 +0.299000 +0.269000 +0.269000 +0.328000 +0.657000 +1.056000 +0.687000 +1.569000 +1.342000 +0.578000 +0.447000 +0.375000 +0.326000 +0.299000 +0.286000 +0.264000 +0.264000 +0.242000 +0.240000 +0.240000 +0.237000 +0.234000 +0.261000 +0.271000 +0.492000 +0.618000 +0.449000 +0.387000 +0.820000 +4.261000 +2.616000 +1.402000 +0.758000 +0.557000 +0.956000 +0.702000 +0.500000 +0.450000 +0.454000 +0.797000 +0.496000 +0.388000 +0.393000 +0.436000 +0.522000 +0.822000 +0.799000 +0.487000 +0.406000 +0.366000 +0.342000 +0.312000 +0.308000 +0.437000 +0.584000 +3.599000 +1.543000 +0.862000 +0.585000 +0.495000 +0.545000 +1.109000 +0.680000 +0.476000 +0.404000 +0.699000 +2.520000 +0.945000 +0.708000 +1.066000 +1.332000 +1.184000 +0.628000 +0.505000 +0.464000 +0.776000 +0.510000 +0.416000 +0.370000 +0.342000 +0.316000 +0.307000 +0.288000 +0.288000 +0.635000 +1.469000 +0.886000 +0.658000 +1.285000 +2.338000 +3.063000 +5.268000 +2.197000 +0.992000 +0.739000 +0.609000 +0.958000 +1.315000 +0.859000 +0.626000 +0.597000 +0.570000 +0.535000 +0.546000 +0.594000 +0.579000 +0.495000 +0.468000 +0.574000 +1.141000 +0.680000 +0.859000 +0.770000 +1.453000 +1.630000 +1.534000 +0.892000 +0.693000 +0.645000 +0.658000 +0.616000 +0.737000 +1.445000 +0.827000 +0.701000 +0.619000 +0.562000 +0.523000 +0.492000 +0.467000 +0.450000 +0.432000 +0.432000 +0.537000 +1.784000 +2.127000 +1.879000 +2.153000 +0.960000 +1.403000 +1.163000 +1.113000 +1.210000 +2.769000 +2.449000 +1.211000 +1.265000 +3.069000 +7.445000 +6.218000 +2.685000 +4.296000 +3.989000 +5.614000 +3.233000 +2.004000 +1.395000 +1.136000 +0.990000 +1.421000 +2.543000 +3.449000 +2.480000 +2.984000 +2.208000 +3.575000 +2.767000 +2.385000 +2.444000 +2.543000 +2.350000 +2.697000 +3.141000 +3.664000 +7.508000 +6.941000 +6.760000 +3.288000 +2.115000 +1.485000 +1.282000 +1.148000 +1.114000 +1.465000 +1.055000 +0.895000 +0.804000 +0.750000 +0.706000 +0.751000 +0.859000 +1.872000 +2.109000 +1.190000 +0.980000 +1.744000 +2.307000 +2.185000 +1.899000 +1.306000 +1.087000 +0.985000 +0.884000 +0.802000 +0.738000 +0.685000 +0.679000 +0.659000 +0.669000 +0.636000 +0.606000 +0.705000 +0.822000 +0.695000 +0.861000 +1.867000 +1.589000 +1.283000 +0.995000 +0.873000 +2.080000 +0.994000 +0.850000 +1.569000 +5.634000 +2.550000 +1.383000 +0.956000 +0.815000 +0.848000 +0.820000 +0.717000 +0.647000 +0.620000 +0.652000 +1.225000 +1.035000 +0.880000 +1.446000 +0.897000 +0.745000 +0.710000 +0.636000 +0.583000 +0.547000 +0.528000 +0.510000 +0.502000 +0.509000 +0.511000 +0.467000 +0.438000 +0.432000 +0.415000 +0.408000 +0.398000 +0.384000 +0.380000 +0.366000 +0.360000 +0.360000 +0.354000 +0.336000 +0.336000 +0.372000 +0.928000 +1.341000 +1.112000 +1.303000 +1.408000 +1.055000 +0.918000 +1.592000 +1.132000 +1.094000 +1.011000 +0.752000 +0.623000 +0.628000 +1.041000 +3.856000 +5.405000 +3.295000 +2.557000 +2.549000 +1.944000 +1.195000 +4.206000 +9.155000 +7.078000 +3.825000 +5.582000 +4.855000 +2.876000 +1.905000 +1.419000 +1.202000 +1.046000 +0.938000 +1.064000 +1.183000 +2.546000 +8.465000 +7.879000 +4.959000 +2.848000 +2.133000 +1.451000 +1.186000 +1.084000 +1.057000 +1.352000 +1.105000 +0.924000 +0.822000 +0.755000 +0.704000 +0.660000 +0.629000 +0.601000 +0.580000 +0.557000 +0.580000 +0.603000 +0.572000 +0.574000 +0.559000 +0.525000 +0.532000 +0.545000 +1.137000 +4.512000 +5.949000 +3.675000 +1.860000 +1.204000 +0.975000 +1.022000 +4.240000 +5.211000 +3.613000 +1.597000 +1.131000 +0.972000 +2.409000 +5.850000 +5.775000 +3.332000 +1.831000 +1.286000 +1.197000 +2.552000 +2.366000 +1.680000 +1.472000 +1.387000 +1.396000 +1.882000 +3.607000 +6.674000 +7.069000 +3.943000 +2.813000 +3.146000 +4.553000 +3.077000 +2.231000 +1.678000 +1.239000 +1.068000 +1.109000 +2.115000 +2.165000 +1.145000 +0.924000 +0.818000 +0.757000 +0.718000 +0.696000 +0.696000 +0.676000 +0.629000 +0.616000 +0.604000 +0.616000 +0.680000 +0.835000 +0.633000 +1.042000 +2.570000 +1.582000 +1.733000 +1.137000 +0.899000 +0.712000 +0.621000 +0.582000 +0.569000 +0.545000 +1.788000 +1.658000 +2.494000 +2.740000 +1.335000 +1.341000 +1.128000 +0.926000 +0.773000 +0.781000 +1.663000 +1.715000 +1.774000 +1.799000 +1.449000 +2.660000 +1.288000 +0.924000 +0.781000 +0.699000 +0.624000 +0.573000 +0.546000 +0.528000 +0.506000 +0.493000 +0.775000 +0.996000 +0.958000 +0.844000 +1.153000 +0.706000 +0.741000 +0.913000 +0.810000 +0.606000 +0.722000 +1.209000 +0.739000 +0.830000 +8.071000 +13.712000 +14.621000 +12.193000 +9.162000 +7.177000 +6.447000 +5.153000 +4.714000 +5.725000 +4.433000 +3.336000 +2.606000 +2.043000 +1.537000 +1.269000 +1.122000 +3.443000 +5.677000 +3.323000 +2.231000 +2.789000 +4.896000 +5.394000 +4.699000 +3.314000 +2.410000 +1.717000 +1.434000 +1.400000 +1.428000 +1.441000 +1.248000 +1.237000 +1.284000 +1.578000 +1.340000 +2.288000 +2.051000 +2.692000 +2.013000 +1.291000 +1.088000 +1.076000 +1.106000 +1.297000 +1.559000 +1.783000 +1.065000 +0.954000 +1.324000 +1.131000 +0.900000 +1.024000 +1.410000 +1.133000 +2.659000 +3.518000 +5.139000 +4.844000 +4.078000 +5.179000 +9.910000 +12.343000 +13.279000 +11.090000 +8.050000 +6.026000 +4.192000 +3.083000 +2.897000 +2.862000 +2.383000 +2.548000 +3.234000 +3.263000 +4.410000 +2.724000 +2.085000 +1.535000 +1.521000 +5.088000 +6.071000 +4.399000 +3.449000 +2.710000 +3.956000 +9.199000 +9.315000 +8.794000 +7.789000 +5.482000 +4.724000 +5.186000 +6.786000 +6.476000 +8.070000 +7.849000 +9.329000 +7.323000 +4.696000 +3.350000 +2.739000 +2.396000 +2.158000 +1.857000 +1.706000 +1.545000 +1.474000 +1.381000 +1.259000 +1.208000 +1.261000 +1.189000 +1.072000 +1.035000 +1.003000 +0.961000 +0.965000 +0.988000 +1.008000 +1.009000 +0.996000 +1.004000 +3.573000 +8.524000 +8.222000 +9.161000 +8.311000 +5.500000 +3.375000 +2.393000 +1.980000 +2.490000 +2.381000 +2.201000 +1.536000 +1.267000 +1.286000 +1.375000 +1.319000 +1.162000 +2.061000 +4.512000 +3.262000 +2.336000 +1.792000 +1.350000 +1.168000 +1.085000 +1.007000 +0.949000 +0.936000 +0.900000 +0.894000 +0.895000 +0.875000 +0.836000 +0.840000 +0.814000 +0.799000 +0.788000 +0.750000 +0.721000 +0.724000 +1.038000 +2.693000 +1.755000 +1.054000 +0.960000 +0.902000 +0.879000 +1.854000 +3.012000 +5.009000 +4.709000 +3.282000 +2.462000 +1.614000 +1.307000 +1.150000 +1.081000 +1.007000 +0.954000 +0.908000 +0.871000 +0.864000 +0.842000 +0.824000 +0.782000 +0.777000 +0.838000 +0.900000 +0.889000 +1.013000 +1.146000 +1.075000 +0.906000 +0.985000 +1.078000 +1.138000 +2.084000 +3.755000 +2.365000 +1.319000 +1.168000 +2.514000 +1.551000 +0.968000 +0.807000 +0.771000 +0.763000 +0.768000 +0.988000 +0.887000 +0.734000 +0.739000 +0.808000 +0.640000 +0.577000 +0.544000 +0.528000 +0.586000 +0.573000 +0.538000 +0.503000 +0.488000 +0.635000 +1.070000 +0.948000 +0.833000 +0.708000 +0.851000 +2.894000 +1.346000 +1.725000 +5.124000 +2.521000 +1.229000 +1.176000 +0.922000 +0.805000 +0.807000 +0.771000 +0.662000 +0.615000 +0.650000 +0.924000 +0.936000 +0.701000 +0.581000 +0.524000 +0.494000 +0.480000 +0.461000 +0.449000 +0.432000 +0.423000 +0.408000 +0.408000 +0.408000 +0.408000 +0.408000 +0.408000 +0.420000 +0.459000 +0.424000 +0.388000 +0.360000 +0.360000 +0.375000 +0.394000 +0.573000 +0.509000 +0.406000 +0.367000 +0.374000 +0.403000 +0.372000 +0.363000 +0.336000 +0.358000 +0.336000 +0.336000 +0.353000 +0.324000 +0.299000 +0.288000 +0.288000 +0.279000 +0.275000 +0.267000 +0.264000 +0.328000 +0.292000 +0.264000 +0.264000 +0.244000 +0.240000 +0.240000 +0.240000 +0.256000 +0.264000 +0.264000 +0.267000 +0.283000 +0.587000 +3.091000 +1.404000 +0.774000 +0.739000 +1.307000 +0.638000 +0.482000 +0.545000 +4.176000 +2.255000 +0.733000 +0.548000 +0.460000 +0.421000 +0.391000 +0.385000 +0.379000 +0.401000 +0.431000 +0.937000 +0.923000 +1.041000 +0.557000 +0.435000 +0.383000 +0.365000 +0.686000 +0.793000 +0.619000 +0.467000 +0.390000 +0.352000 +0.333000 +0.312000 +0.297000 +0.288000 +0.288000 +0.288000 +0.286000 +0.388000 +1.900000 +1.636000 +0.738000 +0.547000 +0.516000 +0.450000 +0.432000 +0.410000 +0.421000 +0.874000 +1.742000 +0.909000 +0.633000 +0.511000 +0.455000 +0.405000 +0.368000 +0.345000 +0.335000 +0.313000 +0.312000 +0.295000 +0.288000 +0.280000 +0.264000 +0.288000 +0.328000 +0.994000 +2.298000 +1.069000 +0.585000 +0.539000 +0.563000 +0.454000 +0.406000 +0.371000 +0.360000 +0.519000 +2.138000 +3.073000 +2.514000 +1.892000 +0.909000 +2.043000 +2.518000 +2.717000 +4.659000 +6.078000 +3.032000 +4.230000 +3.650000 +4.112000 +4.743000 +2.786000 +1.540000 +1.719000 +1.796000 +3.064000 +5.160000 +2.607000 +2.085000 +1.707000 +1.357000 +2.192000 +1.617000 +1.137000 +1.167000 +1.023000 +0.891000 +1.023000 +0.829000 +0.742000 +0.705000 +0.870000 +0.835000 +4.392000 +5.395000 +3.677000 +2.534000 +1.771000 +1.209000 +1.000000 +0.885000 +0.813000 +0.767000 +0.713000 +0.664000 +0.640000 +0.617000 +0.600000 +2.410000 +1.162000 +0.830000 +1.000000 +1.109000 +0.804000 +0.691000 +0.730000 +0.971000 +1.697000 +2.869000 +4.201000 +1.741000 +3.345000 +4.238000 +4.616000 +6.306000 +5.219000 +7.027000 +7.916000 +5.265000 +3.520000 +6.490000 +5.917000 +3.324000 +5.980000 +4.570000 +5.278000 +5.094000 +4.622000 +3.884000 +5.226000 +6.759000 +5.375000 +5.913000 +7.163000 +5.637000 +3.834000 +3.154000 +3.134000 +2.695000 +3.489000 +3.270000 +3.048000 +3.494000 +4.278000 +2.993000 +3.565000 +4.196000 +3.389000 +3.482000 +4.230000 +5.800000 +5.526000 +6.062000 +5.675000 +3.802000 +4.511000 +5.477000 +5.639000 +3.560000 +3.040000 +5.431000 +5.637000 +4.670000 +5.770000 +6.922000 +4.886000 +3.745000 +6.306000 +7.263000 +7.630000 +8.883000 +6.374000 +4.306000 +4.011000 +3.227000 +3.259000 +3.359000 +4.166000 +4.347000 +4.016000 +2.822000 +2.683000 +3.736000 +2.420000 +1.805000 +2.782000 +2.809000 +1.778000 +1.390000 +1.294000 +2.485000 +1.409000 +1.147000 +1.035000 +0.969000 +0.921000 +0.879000 +0.842000 +0.807000 +0.772000 +0.749000 +0.774000 +0.819000 +1.157000 +1.277000 +1.071000 +0.992000 +0.840000 +0.760000 +0.846000 +1.282000 +3.167000 +2.123000 +1.176000 +1.044000 +2.009000 +1.143000 +1.079000 +1.139000 +1.041000 +1.894000 +2.099000 +1.431000 +0.976000 +0.838000 +0.754000 +0.707000 +0.664000 +0.619000 +0.589000 +0.573000 +0.550000 +0.528000 +0.518000 +0.504000 +0.504000 +0.540000 +0.582000 +0.625000 +0.706000 +0.861000 +0.694000 +0.607000 +0.556000 +0.611000 +1.076000 +0.790000 +0.615000 +0.561000 +0.552000 +0.530000 +0.642000 +1.026000 +1.227000 +3.377000 +3.260000 +3.337000 +2.790000 +1.289000 +0.906000 +0.772000 +0.674000 +0.612000 +0.567000 +0.532000 +0.570000 +0.789000 +1.702000 +3.176000 +3.215000 +1.499000 +1.118000 +3.465000 +3.774000 +1.825000 +1.078000 +0.889000 +0.807000 +0.931000 +2.090000 +1.439000 +0.949000 +1.294000 +1.303000 +0.946000 +0.956000 +0.825000 +0.671000 +0.617000 +0.584000 +0.559000 +0.537000 +0.508000 +0.481000 +0.462000 +0.451000 +0.432000 +0.422000 +0.408000 +0.405000 +0.384000 +0.384000 +0.384000 +0.389000 +0.385000 +0.360000 +0.360000 +0.348000 +0.343000 +0.441000 +0.504000 +0.448000 +0.388000 +0.374000 +0.404000 +0.361000 +0.336000 +0.340000 +0.346000 +0.335000 +0.358000 +0.363000 +0.336000 +0.353000 +0.390000 +0.422000 +0.366000 +0.326000 +0.307000 +0.288000 +0.288000 +0.291000 +0.294000 +0.288000 +0.266000 +0.264000 +0.269000 +0.352000 +0.525000 +0.637000 +0.689000 +0.466000 +0.692000 +0.542000 +0.606000 +0.590000 +0.784000 +1.085000 +0.639000 +0.552000 +0.703000 +0.762000 +0.511000 +0.455000 +0.450000 +0.399000 +0.355000 +0.336000 +0.342000 +0.345000 +0.336000 +0.322000 +0.308000 +0.304000 +0.288000 +0.369000 +0.467000 +0.361000 +0.321000 +0.296000 +0.288000 +0.285000 +0.291000 +0.312000 +0.312000 +0.288000 +0.281000 +0.264000 +0.264000 +0.264000 +0.260000 +0.255000 +0.264000 +0.256000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.240000 +0.218000 +0.216000 +0.217000 +0.238000 +0.216000 +0.216000 +0.216000 +0.216000 +0.216000 +0.252000 +0.653000 +0.625000 +0.553000 +0.716000 +0.924000 +0.765000 +0.680000 +0.678000 +0.862000 +0.881000 +1.595000 +1.127000 +1.216000 +1.351000 +1.314000 +1.815000 +0.898000 +0.679000 +0.887000 +0.664000 +0.644000 +1.309000 +1.823000 +1.416000 +1.180000 +0.963000 +0.782000 +1.340000 +0.956000 +0.840000 +0.688000 +NaN +1.224000 +1.273000 +0.775000 +0.491077 +1.548000 +2.676000 +1.389000 +4.402000 +2.867000 +1.552000 +3.577000 +2.037000 +1.045000 +0.825000 +1.468000 +3.826000 +1.936000 +1.038000 +0.829000 +1.014000 +1.215000 +1.108000 +1.050000 +0.905000 +0.797000 +0.750000 +0.898667 +0.856000 +0.791000 +0.763000 +1.466000 +0.888000 +2.303000 +3.324000 +2.344000 +1.318000 +0.979000 +3.572000 +2.116000 +1.373000 +2.004000 +3.478000 +2.638000 +1.940000 +2.031000 +6.076000 +6.408000 +3.720000 +1.518000 +1.192000 +1.074000 +0.906000 +0.799000 +0.754000 \ No newline at end of file diff --git a/hydromodel/example/division_rain.csv b/hydromodel/example/division_rain.csv new file mode 100644 index 0000000..84e0f7d --- /dev/null +++ b/hydromodel/example/division_rain.csv @@ -0,0 +1,9132 @@ +rain +6.017000 +4.929000 +0.380000 +0.073000 +0.534000 +4.487000 +3.600000 +0.345000 +0.454000 +2.990000 +3.307000 +0.688000 +0.027000 +0.323000 +1.320000 +3.852000 +1.494000 +0.601000 +6.466000 +0.263000 +0.861000 +2.448000 +12.039000 +3.589000 +14.421000 +3.048000 +18.185000 +12.320000 +8.048000 +4.279000 +6.610000 +7.564000 +4.336000 +0.297000 +7.134000 +0.021000 +0.066000 +24.037000 +3.587000 +1.143000 +3.123000 +5.208000 +4.105000 +5.910000 +2.599000 +1.390000 +0.152000 +3.199000 +0.579000 +16.399000 +3.844000 +2.429000 +0.003000 +0.504000 +5.090000 +6.077000 +14.087000 +7.309000 +3.936000 +3.583000 +0.299000 +0.191000 +1.133000 +0.092000 +0.250000 +0.060000 +1.591000 +0.867000 +1.370000 +0.127000 +0.028000 +5.436000 +0.016000 +0.636000 +0.001000 +0.000000 +0.047000 +1.096000 +0.102000 +0.240000 +0.037000 +0.131000 +2.248000 +0.466000 +0.000000 +0.049000 +0.010000 +0.799000 +0.000000 +0.005000 +0.002000 +0.642000 +3.248000 +0.047000 +1.014000 +0.821000 +0.350000 +0.000000 +0.009000 +0.149000 +0.007000 +0.307000 +0.302000 +1.651000 +0.583000 +1.476000 +2.669000 +2.072000 +0.979000 +0.552000 +0.616000 +0.171000 +0.001000 +0.022000 +0.060000 +2.494000 +0.034000 +0.138000 +0.005000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +2.203000 +0.487000 +5.413000 +4.090000 +1.393000 +4.358000 +0.497000 +0.000000 +0.000000 +9.743000 +0.936000 +1.689000 +0.000000 +0.007000 +0.000000 +0.195000 +0.003000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.045000 +0.478000 +0.320000 +0.004000 +0.142000 +1.073000 +0.594000 +0.460000 +2.344000 +4.364000 +0.191000 +4.216000 +4.977000 +0.026000 +0.054000 +1.092000 +0.000000 +0.000000 +0.000000 +0.000000 +0.006000 +2.627000 +2.048000 +1.370000 +4.384000 +24.967000 +0.521000 +1.784000 +0.179000 +1.605000 +5.615000 +0.053000 +0.118000 +9.268000 +3.191000 +0.793000 +0.000000 +13.063000 +2.452000 +0.027000 +7.426000 +0.733000 +0.872000 +0.013000 +0.095000 +0.000000 +0.000000 +0.000000 +4.313000 +0.313000 +0.000000 +0.000000 +0.000000 +0.025000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.726000 +0.117000 +0.676000 +0.806000 +0.000000 +0.000000 +0.000000 +0.000000 +0.017000 +0.381000 +3.093000 +0.053000 +0.061000 +0.995000 +1.288000 +0.209000 +0.000000 +0.282000 +0.838000 +4.614000 +1.823000 +1.657000 +0.000000 +10.416000 +0.041000 +0.398000 +0.000000 +0.000000 +20.916000 +0.736000 +0.011000 +0.000000 +0.145000 +6.152000 +1.643000 +0.722000 +0.418000 +1.667000 +0.303000 +0.013000 +1.105000 +1.476000 +0.239000 +0.002000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.463000 +2.431000 +1.770000 +6.124000 +1.698000 +0.069000 +0.566000 +0.349000 +8.646000 +0.060000 +0.001000 +0.002000 +0.563000 +2.426000 +11.628000 +0.138000 +0.318000 +6.508000 +1.793000 +3.046000 +5.595000 +0.001000 +0.000000 +0.874000 +1.658000 +11.794000 +0.000000 +0.041000 +0.025000 +2.302000 +1.598000 +0.058000 +3.294000 +6.240000 +1.142000 +0.253000 +0.005000 +0.001000 +2.842000 +0.792000 +8.392000 +1.385000 +7.989000 +2.926000 +9.125000 +1.630000 +0.105000 +1.954000 +1.506000 +0.994000 +1.013000 +0.612000 +0.418000 +0.022000 +0.228000 +1.586000 +1.902000 +0.470000 +1.284000 +1.875000 +0.171000 +7.129000 +1.062000 +5.397000 +1.499000 +0.008000 +1.140000 +0.268000 +0.159000 +3.892000 +5.721000 +4.458000 +1.998000 +0.034000 +0.072000 +0.004000 +0.000000 +0.002000 +0.006000 +0.001000 +0.000000 +0.661000 +27.638000 +32.307000 +4.643000 +1.850000 +2.291000 +0.054000 +0.298000 +0.000000 +0.357000 +0.795000 +0.293000 +0.885000 +0.531000 +3.566000 +0.207000 +1.745000 +0.637000 +0.874000 +17.433000 +11.963000 +3.914000 +14.571000 +1.673000 +3.809000 +5.859000 +14.258000 +2.446000 +3.780000 +1.112000 +13.413000 +8.988000 +3.576000 +11.868000 +7.179000 +4.698000 +0.237000 +3.005000 +0.000000 +0.000000 +0.025000 +0.025000 +2.469000 +5.062000 +0.068000 +0.518000 +0.000000 +0.000000 +1.490000 +1.233000 +0.000000 +0.000000 +0.000000 +0.068000 +0.001000 +0.044000 +0.262000 +3.073000 +0.110000 +0.050000 +0.000000 +0.160000 +2.887000 +8.082000 +5.878000 +6.346000 +5.006000 +3.261000 +2.331000 +0.334000 +1.274000 +3.604000 +0.236000 +0.002000 +0.000000 +0.044000 +1.877000 +11.299000 +8.809000 +23.223000 +3.989000 +0.100000 +0.688000 +6.075000 +10.509000 +0.041000 +2.203000 +3.752000 +18.289000 +0.158000 +1.746000 +4.118000 +3.820000 +2.293000 +0.162000 +0.186000 +0.236000 +0.051000 +1.433000 +0.275000 +7.100000 +3.663000 +9.111000 +5.586000 +6.146000 +1.439000 +1.182000 +0.038000 +0.059000 +0.039000 +0.000000 +0.000000 +0.000000 +0.000000 +0.022000 +1.305000 +3.301000 +6.616000 +0.338000 +8.815000 +1.638000 +5.234000 +2.600000 +0.463000 +0.040000 +0.000000 +0.000000 +0.004000 +0.144000 +0.000000 +0.000000 +0.093000 +0.185000 +2.001000 +4.735000 +2.316000 +3.901000 +0.255000 +0.024000 +0.145000 +0.035000 +0.000000 +0.000000 +0.000000 +5.805000 +1.760000 +1.166000 +0.191000 +3.662000 +2.762000 +0.746000 +0.697000 +1.348000 +0.000000 +0.000000 +0.001000 +0.003000 +0.286000 +0.876000 +0.002000 +1.940000 +1.330000 +1.410000 +0.016000 +0.010000 +0.000000 +0.003000 +0.006000 +0.169000 +0.313000 +0.000000 +0.039000 +0.012000 +0.013000 +0.113000 +0.094000 +0.037000 +0.020000 +5.462000 +2.688000 +0.241000 +0.108000 +1.077000 +0.039000 +2.607000 +6.897000 +2.085000 +2.851000 +0.650000 +3.195000 +1.052000 +2.820000 +3.436000 +1.882000 +6.728000 +5.966000 +0.058000 +5.874000 +5.866000 +0.791000 +0.118000 +1.785000 +0.247000 +0.541000 +0.100000 +0.421000 +0.400000 +1.801000 +0.231000 +4.516000 +0.129000 +0.000000 +0.000000 +2.065000 +1.803000 +1.583000 +0.000000 +1.912000 +1.732000 +0.470000 +0.216000 +0.521000 +0.250000 +0.032000 +0.792000 +0.635000 +2.481000 +0.038000 +0.169000 +2.784000 +2.637000 +1.432000 +0.001000 +0.000000 +0.000000 +0.000000 +0.000000 +1.407000 +0.001000 +0.000000 +0.041000 +0.137000 +1.213000 +13.381000 +0.765000 +0.962000 +0.385000 +0.132000 +0.008000 +0.000000 +0.000000 +0.000000 +0.054000 +1.087000 +0.367000 +0.176000 +0.859000 +0.000000 +0.087000 +0.505000 +6.438000 +0.009000 +0.005000 +0.001000 +0.666000 +0.447000 +0.000000 +0.003000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.021000 +0.012000 +0.415000 +0.026000 +0.092000 +2.539000 +0.040000 +7.251000 +0.011000 +0.553000 +0.119000 +0.000000 +4.946000 +1.962000 +0.480000 +3.192000 +0.520000 +10.869000 +0.957000 +4.479000 +3.454000 +0.032000 +2.510000 +0.296000 +1.726000 +0.022000 +6.840000 +0.046000 +5.854000 +5.466000 +0.334000 +0.222000 +0.018000 +0.712000 +6.331000 +0.591000 +0.450000 +3.154000 +2.826000 +0.318000 +0.043000 +0.002000 +0.000000 +0.003000 +0.056000 +0.474000 +0.827000 +0.759000 +0.034000 +0.325000 +3.133000 +11.703000 +22.625000 +5.834000 +6.597000 +6.841000 +6.565000 +0.195000 +1.247000 +5.989000 +1.977000 +0.010000 +11.928000 +2.257000 +7.519000 +10.443000 +4.859000 +0.425000 +0.000000 +4.972000 +15.089000 +4.239000 +0.817000 +9.216000 +0.030000 +0.005000 +0.000000 +1.844000 +0.212000 +0.047000 +0.714000 +0.066000 +0.051000 +0.605000 +0.299000 +0.006000 +0.072000 +0.050000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.027000 +0.021000 +0.000000 +0.016000 +0.023000 +6.654000 +2.091000 +9.815000 +3.993000 +13.137000 +3.605000 +11.081000 +0.033000 +0.509000 +0.065000 +0.001000 +0.019000 +0.468000 +0.149000 +0.114000 +0.363000 +0.194000 +8.470000 +0.146000 +20.348000 +1.098000 +0.062000 +8.364000 +2.287000 +0.024000 +0.014000 +0.110000 +0.000000 +0.000000 +0.012000 +0.006000 +0.000000 +0.218000 +0.565000 +0.057000 +0.000000 +0.000000 +0.000000 +0.000000 +1.126000 +0.000000 +0.000000 +0.006000 +0.049000 +0.020000 +0.000000 +0.021000 +2.807000 +4.577000 +7.398000 +0.031000 +0.000000 +0.000000 +0.261000 +1.335000 +1.777000 +0.248000 +3.434000 +0.887000 +2.709000 +1.131000 +0.378000 +0.563000 +5.911000 +0.129000 +0.430000 +0.308000 +5.274000 +0.459000 +0.114000 +0.003000 +0.102000 +2.252000 +0.418000 +0.040000 +2.705000 +0.380000 +0.457000 +0.025000 +0.142000 +0.039000 +2.237000 +0.088000 +1.348000 +3.728000 +2.670000 +6.399000 +5.503000 +0.399000 +3.340000 +0.002000 +0.007000 +1.660000 +0.614000 +1.547000 +8.537000 +3.873000 +1.320000 +1.043000 +1.167000 +0.846000 +1.499000 +0.648000 +5.615000 +9.629000 +21.875000 +3.529000 +8.560000 +0.820000 +0.060000 +0.066000 +0.912000 +2.165000 +0.715000 +0.003000 +0.000000 +3.346000 +0.756000 +3.278000 +20.232000 +7.423000 +1.264000 +1.579000 +0.727000 +0.005000 +0.057000 +0.187000 +2.135000 +0.347000 +3.612000 +0.765000 +4.357000 +2.241000 +0.846000 +0.205000 +5.647000 +0.194000 +1.528000 +0.181000 +0.564000 +0.752000 +1.709000 +0.407000 +1.537000 +2.624000 +0.341000 +1.354000 +2.821000 +0.005000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +5.571000 +0.368000 +0.000000 +0.034000 +2.474000 +4.052000 +2.278000 +0.337000 +0.104000 +0.259000 +3.199000 +2.124000 +6.474000 +0.899000 +0.144000 +0.119000 +0.070000 +0.877000 +0.000000 +0.002000 +0.092000 +1.102000 +0.071000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +6.356000 +0.273000 +0.691000 +3.088000 +0.000000 +18.035000 +10.357000 +0.013000 +0.009000 +0.991000 +7.507000 +4.787000 +0.158000 +5.042000 +0.995000 +0.224000 +0.025000 +0.136000 +0.300000 +4.098000 +2.476000 +2.412000 +0.087000 +7.400000 +0.005000 +0.535000 +0.008000 +1.022000 +1.901000 +0.093000 +0.000000 +0.027000 +0.000000 +0.006000 +0.004000 +0.000000 +3.262000 +1.012000 +1.920000 +0.021000 +0.432000 +21.187000 +7.164000 +0.021000 +1.328000 +5.989000 +0.973000 +0.000000 +0.545000 +0.019000 +1.162000 +0.090000 +0.000000 +0.003000 +0.017000 +5.871000 +0.890000 +0.254000 +3.208000 +10.801000 +7.481000 +0.946000 +2.004000 +19.670000 +0.631000 +0.240000 +4.065000 +0.867000 +0.000000 +0.000000 +8.088000 +1.021000 +1.012000 +0.714000 +0.002000 +5.319000 +7.115000 +3.311000 +1.298000 +0.451000 +0.002000 +1.679000 +0.197000 +0.772000 +0.739000 +12.474000 +18.093000 +10.772000 +1.855000 +0.525000 +4.348000 +0.624000 +0.113000 +0.350000 +8.048000 +0.018000 +14.059000 +6.681000 +0.285000 +0.003000 +0.039000 +0.235000 +0.067000 +0.159000 +0.293000 +0.136000 +0.090000 +0.008000 +2.734000 +1.550000 +1.976000 +0.045000 +0.099000 +0.027000 +0.635000 +0.280000 +0.288000 +1.400000 +1.658000 +12.622000 +2.381000 +11.884000 +2.130000 +0.695000 +0.089000 +0.114000 +2.187000 +9.401000 +0.678000 +0.259000 +0.069000 +1.069000 +0.981000 +0.159000 +9.630000 +3.318000 +5.618000 +0.889000 +0.011000 +4.064000 +3.541000 +2.998000 +0.497000 +1.335000 +2.842000 +2.704000 +8.118000 +5.380000 +1.829000 +7.699000 +4.537000 +2.649000 +3.249000 +0.042000 +0.973000 +11.717000 +18.664000 +15.900000 +4.096000 +2.307000 +0.472000 +7.625000 +3.608000 +0.095000 +0.449000 +0.036000 +4.093000 +0.281000 +0.351000 +0.373000 +0.072000 +1.094000 +0.396000 +26.421000 +0.001000 +0.000000 +0.003000 +0.000000 +0.000000 +0.044000 +0.013000 +0.450000 +0.104000 +0.000000 +0.000000 +0.014000 +0.063000 +0.000000 +0.006000 +5.463000 +3.888000 +3.320000 +0.183000 +2.136000 +0.179000 +4.642000 +9.066000 +6.897000 +2.668000 +8.997000 +2.362000 +10.860000 +2.901000 +1.265000 +5.004000 +3.974000 +1.463000 +7.789000 +2.271000 +13.449000 +7.623000 +0.316000 +0.220000 +2.955000 +2.902000 +0.206000 +0.132000 +1.577000 +0.071000 +0.003000 +0.005000 +0.009000 +2.936000 +2.154000 +0.015000 +0.863000 +0.644000 +0.641000 +0.249000 +0.002000 +0.009000 +0.000000 +0.017000 +0.073000 +0.090000 +0.245000 +0.170000 +0.036000 +0.012000 +0.163000 +0.005000 +0.002000 +1.233000 +4.114000 +2.373000 +5.241000 +3.831000 +0.078000 +0.119000 +0.226000 +0.100000 +0.003000 +0.000000 +0.017000 +0.073000 +0.238000 +0.678000 +0.576000 +0.502000 +0.036000 +0.613000 +0.745000 +0.379000 +0.208000 +0.000000 +0.120000 +0.928000 +0.632000 +1.178000 +0.151000 +0.000000 +0.000000 +0.000000 +0.082000 +0.466000 +2.442000 +3.421000 +1.903000 +0.434000 +8.823000 +1.308000 +18.489000 +2.210000 +0.228000 +4.544000 +14.987000 +0.703000 +2.026000 +6.110000 +0.065000 +0.000000 +0.027000 +2.392000 +0.069000 +8.645000 +2.672000 +0.934000 +0.878000 +0.151000 +4.316000 +1.662000 +16.790000 +1.140000 +0.017000 +0.007000 +0.003000 +0.003000 +0.048000 +2.133000 +0.204000 +0.000000 +0.588000 +0.057000 +0.006000 +0.000000 +0.058000 +6.284000 +3.830000 +0.000000 +8.308000 +40.363000 +1.878000 +12.538000 +6.151000 +1.050000 +0.074000 +11.339000 +0.683000 +0.000000 +0.000000 +0.000000 +0.000000 +1.977000 +0.622000 +1.014000 +1.869000 +6.122000 +2.918000 +2.025000 +0.855000 +0.551000 +0.008000 +0.000000 +0.000000 +0.000000 +0.000000 +0.528000 +1.641000 +6.612000 +0.583000 +0.000000 +10.028000 +1.701000 +0.006000 +1.717000 +3.299000 +1.186000 +0.000000 +0.089000 +0.401000 +4.269000 +0.037000 +3.544000 +0.887000 +0.000000 +0.000000 +0.005000 +0.104000 +0.000000 +0.035000 +0.192000 +0.233000 +0.000000 +0.000000 +0.003000 +2.219000 +0.221000 +0.990000 +0.868000 +0.014000 +2.717000 +6.292000 +5.103000 +4.588000 +0.289000 +1.972000 +12.784000 +4.854000 +0.025000 +0.546000 +1.641000 +0.372000 +1.928000 +0.874000 +2.008000 +0.287000 +0.636000 +0.151000 +0.835000 +0.041000 +1.563000 +1.782000 +6.289000 +44.571000 +1.113000 +0.846000 +0.303000 +8.594000 +0.028000 +8.246000 +7.797000 +0.009000 +0.061000 +9.574000 +0.859000 +0.063000 +0.000000 +0.186000 +0.066000 +0.057000 +2.338000 +0.938000 +0.024000 +0.297000 +0.011000 +0.000000 +0.000000 +0.018000 +0.000000 +0.016000 +0.000000 +0.114000 +0.585000 +0.000000 +0.006000 +0.000000 +0.218000 +19.165000 +6.504000 +3.782000 +0.543000 +1.274000 +33.725000 +15.232000 +14.016000 +2.430000 +0.429000 +0.000000 +0.018000 +3.777000 +0.994000 +0.184000 +0.022000 +0.311000 +0.694000 +0.534000 +0.038000 +0.005000 +0.688000 +7.755000 +3.254000 +17.281000 +2.137000 +2.051000 +14.990000 +6.502000 +10.067000 +0.791000 +0.921000 +0.119000 +1.654000 +8.149000 +1.233000 +0.913000 +0.230000 +0.001000 +0.000000 +0.000000 +0.113000 +3.328000 +1.690000 +0.383000 +0.009000 +0.338000 +0.007000 +0.016000 +0.000000 +0.029000 +0.179000 +0.307000 +0.023000 +0.000000 +0.002000 +1.280000 +0.450000 +0.117000 +0.116000 +0.244000 +0.722000 +3.549000 +0.199000 +0.032000 +1.032000 +11.483000 +12.989000 +0.007000 +0.000000 +0.000000 +0.000000 +0.000000 +2.150000 +4.701000 +1.480000 +0.021000 +0.054000 +0.541000 +0.193000 +0.175000 +0.000000 +5.509000 +5.903000 +2.158000 +0.698000 +1.708000 +5.693000 +0.682000 +3.543000 +1.773000 +15.953000 +1.208000 +6.709000 +2.195000 +8.742000 +14.614000 +9.228000 +5.287000 +0.360000 +0.838000 +3.326000 +9.237000 +0.125000 +0.566000 +2.786000 +3.475000 +4.706000 +2.568000 +0.201000 +3.472000 +3.237000 +5.509000 +5.849000 +0.331000 +0.422000 +13.053000 +12.352000 +0.340000 +10.123000 +0.975000 +2.300000 +0.439000 +3.688000 +2.151000 +2.239000 +10.237000 +4.634000 +4.652000 +0.549000 +0.666000 +1.211000 +4.085000 +0.344000 +0.328000 +0.317000 +0.109000 +6.685000 +1.230000 +9.670000 +3.192000 +18.969000 +0.270000 +1.306000 +0.683000 +0.375000 +7.079000 +0.039000 +9.948000 +0.704000 +0.583000 +2.034000 +0.551000 +2.360000 +0.063000 +0.000000 +0.000000 +0.000000 +0.015000 +0.086000 +1.846000 +2.607000 +0.251000 +0.000000 +0.000000 +1.258000 +3.817000 +0.207000 +1.668000 +2.208000 +7.189000 +20.186000 +3.838000 +2.380000 +0.414000 +1.321000 +7.454000 +0.124000 +2.968000 +1.525000 +1.041000 +3.358000 +0.502000 +0.116000 +3.247000 +4.001000 +2.337000 +2.672000 +0.314000 +4.588000 +0.402000 +2.951000 +0.257000 +0.178000 +0.008000 +1.724000 +13.965000 +0.017000 +4.450000 +0.002000 +3.070000 +1.033000 +0.721000 +3.818000 +8.772000 +7.883000 +1.114000 +3.453000 +1.177000 +4.386000 +0.022000 +4.509000 +8.514000 +1.291000 +0.376000 +0.001000 +7.080000 +0.145000 +0.109000 +0.121000 +0.212000 +0.024000 +0.126000 +0.154000 +4.192000 +2.996000 +3.521000 +9.273000 +0.900000 +4.185000 +0.907000 +0.506000 +1.434000 +0.000000 +0.000000 +0.000000 +0.134000 +0.506000 +0.942000 +3.949000 +0.066000 +2.627000 +0.104000 +0.076000 +0.002000 +0.000000 +0.005000 +0.000000 +0.000000 +13.193000 +0.009000 +0.021000 +0.010000 +0.000000 +0.116000 +2.201000 +6.650000 +1.283000 +0.000000 +0.000000 +0.109000 +0.078000 +0.027000 +0.000000 +0.000000 +0.000000 +2.280000 +0.754000 +6.899000 +1.566000 +0.136000 +1.193000 +0.025000 +0.514000 +0.475000 +0.024000 +0.000000 +0.000000 +0.000000 +0.000000 +0.094000 +2.261000 +0.066000 +0.276000 +0.623000 +0.016000 +4.485000 +0.048000 +0.000000 +3.428000 +2.606000 +0.442000 +0.299000 +0.002000 +0.126000 +0.000000 +0.033000 +0.018000 +0.088000 +0.876000 +0.064000 +3.274000 +0.367000 +0.000000 +0.004000 +0.186000 +0.301000 +0.400000 +0.000000 +0.176000 +1.316000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.266000 +0.013000 +0.000000 +15.844000 +0.309000 +0.564000 +6.186000 +0.003000 +0.000000 +7.464000 +3.704000 +4.237000 +0.094000 +4.510000 +8.085000 +0.575000 +0.001000 +0.068000 +0.311000 +0.053000 +1.230000 +2.107000 +0.024000 +0.000000 +0.000000 +0.000000 +0.128000 +11.583000 +0.250000 +0.055000 +0.000000 +0.003000 +0.000000 +6.294000 +5.434000 +3.402000 +1.153000 +1.966000 +0.982000 +0.030000 +1.709000 +9.262000 +6.106000 +0.017000 +1.757000 +1.416000 +0.247000 +4.351000 +1.107000 +2.945000 +2.911000 +5.884000 +4.077000 +16.186000 +2.745000 +7.309000 +11.301000 +0.466000 +0.004000 +0.072000 +3.332000 +5.577000 +0.379000 +0.003000 +0.053000 +4.583000 +12.236000 +0.028000 +0.150000 +0.000000 +0.000000 +0.096000 +4.904000 +8.796000 +8.093000 +0.561000 +0.006000 +0.005000 +0.346000 +0.056000 +0.003000 +0.000000 +0.000000 +0.000000 +0.007000 +0.001000 +0.882000 +2.262000 +0.001000 +0.000000 +3.521000 +14.748000 +2.133000 +10.248000 +6.056000 +0.301000 +6.475000 +0.463000 +0.618000 +0.403000 +1.237000 +5.152000 +3.284000 +0.295000 +0.093000 +7.779000 +3.214000 +14.964000 +0.500000 +0.114000 +1.115000 +5.874000 +0.949000 +0.716000 +11.283000 +5.303000 +8.927000 +3.699000 +1.611000 +2.121000 +9.254000 +1.600000 +7.724000 +0.066000 +0.039000 +0.478000 +0.169000 +0.108000 +0.107000 +0.013000 +0.011000 +0.005000 +0.007000 +0.112000 +0.070000 +7.498000 +14.779000 +6.201000 +2.013000 +9.473000 +8.537000 +0.867000 +4.316000 +4.330000 +1.476000 +12.380000 +0.221000 +0.456000 +0.232000 +6.185000 +4.772000 +1.346000 +0.025000 +0.006000 +0.012000 +0.255000 +0.128000 +2.370000 +8.859000 +7.666000 +15.998000 +7.883000 +7.365000 +7.777000 +0.057000 +0.003000 +0.809000 +1.991000 +5.716000 +0.127000 +0.323000 +1.611000 +1.671000 +10.288000 +0.016000 +0.052000 +0.242000 +1.463000 +0.404000 +4.005000 +9.683000 +0.489000 +8.420000 +3.297000 +16.700000 +1.547000 +3.421000 +0.243000 +6.793000 +13.570000 +6.353000 +8.231000 +1.960000 +0.284000 +33.501000 +0.858000 +0.122000 +1.620000 +0.113000 +0.094000 +0.129000 +4.390000 +1.885000 +0.715000 +7.981000 +13.132000 +3.714000 +5.691000 +5.428000 +9.724000 +7.115000 +1.679000 +5.932000 +3.469000 +5.179000 +1.240000 +25.408000 +2.088000 +0.263000 +0.029000 +0.492000 +0.991000 +3.478000 +8.754000 +0.971000 +0.394000 +2.022000 +6.661000 +1.011000 +2.051000 +2.807000 +0.649000 +0.006000 +4.856000 +0.057000 +0.075000 +1.002000 +0.882000 +1.297000 +9.353000 +2.583000 +0.148000 +0.009000 +0.000000 +0.000000 +0.022000 +2.385000 +1.902000 +7.502000 +2.470000 +5.753000 +0.062000 +4.655000 +0.613000 +0.063000 +0.000000 +0.035000 +0.600000 +0.149000 +0.000000 +0.000000 +0.000000 +1.149000 +0.029000 +0.000000 +0.000000 +0.000000 +0.004000 +0.019000 +0.005000 +1.881000 +4.391000 +0.923000 +2.482000 +1.532000 +11.492000 +0.050000 +4.452000 +0.000000 +0.000000 +0.000000 +0.000000 +0.025000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.052000 +1.715000 +0.267000 +0.392000 +0.123000 +0.240000 +0.116000 +2.287000 +0.267000 +4.256000 +8.026000 +0.720000 +0.316000 +0.143000 +0.000000 +0.424000 +0.245000 +13.595000 +0.780000 +0.355000 +5.216000 +6.417000 +2.504000 +0.387000 +0.054000 +2.260000 +0.438000 +2.870000 +2.833000 +0.160000 +1.077000 +3.085000 +0.370000 +0.034000 +0.509000 +2.338000 +1.073000 +0.007000 +0.012000 +0.000000 +0.725000 +1.925000 +0.026000 +0.925000 +0.437000 +0.000000 +0.000000 +0.022000 +0.048000 +0.053000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.157000 +0.271000 +0.006000 +1.101000 +0.220000 +1.373000 +0.000000 +0.000000 +0.000000 +2.924000 +0.126000 +5.957000 +5.516000 +1.372000 +0.558000 +5.559000 +2.092000 +0.110000 +0.303000 +2.791000 +0.000000 +0.282000 +0.037000 +0.000000 +0.615000 +0.099000 +0.001000 +0.434000 +0.452000 +0.005000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +3.417000 +0.050000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.010000 +0.844000 +0.067000 +0.355000 +1.318000 +1.839000 +0.114000 +0.711000 +0.005000 +0.120000 +0.000000 +4.549000 +8.101000 +0.124000 +0.692000 +0.765000 +22.979000 +19.572000 +3.494000 +3.857000 +17.284000 +0.938000 +0.062000 +0.064000 +0.012000 +0.062000 +4.317000 +0.244000 +0.566000 +0.326000 +0.000000 +0.273000 +0.539000 +6.723000 +1.447000 +0.485000 +1.993000 +0.026000 +0.013000 +1.205000 +2.314000 +1.055000 +3.049000 +3.763000 +0.375000 +10.052000 +0.627000 +0.148000 +0.057000 +0.008000 +0.048000 +0.010000 +0.000000 +0.000000 +0.269000 +0.049000 +3.502000 +0.023000 +0.077000 +0.812000 +0.000000 +0.124000 +0.013000 +7.781000 +0.803000 +0.335000 +0.420000 +0.046000 +0.000000 +0.043000 +0.651000 +0.249000 +0.016000 +0.000000 +0.000000 +0.000000 +0.425000 +0.232000 +2.970000 +1.875000 +6.561000 +17.607000 +0.140000 +0.016000 +0.322000 +16.088000 +12.996000 +2.366000 +0.031000 +0.000000 +0.013000 +4.203000 +0.423000 +1.527000 +6.108000 +0.839000 +3.765000 +1.928000 +0.216000 +0.819000 +0.011000 +0.130000 +0.709000 +10.651000 +4.151000 +1.819000 +6.885000 +1.649000 +0.551000 +0.009000 +0.013000 +0.038000 +0.388000 +1.451000 +1.582000 +0.777000 +0.194000 +0.017000 +0.198000 +0.892000 +0.187000 +0.507000 +21.597000 +3.379000 +0.606000 +0.009000 +0.344000 +0.000000 +0.000000 +0.003000 +0.353000 +3.067000 +2.468000 +0.400000 +0.110000 +2.533000 +2.659000 +1.863000 +6.970000 +6.947000 +1.361000 +0.309000 +4.999000 +1.181000 +5.505000 +0.180000 +0.018000 +0.042000 +0.013000 +0.000000 +0.061000 +1.572000 +0.415000 +0.429000 +0.000000 +0.000000 +1.171000 +3.984000 +4.072000 +1.135000 +0.001000 +0.000000 +0.000000 +0.000000 +0.285000 +2.694000 +0.194000 +1.407000 +1.773000 +0.745000 +2.346000 +7.049000 +5.381000 +2.793000 +26.488000 +2.942000 +0.134000 +0.516000 +0.977000 +1.556000 +7.753000 +3.102000 +1.905000 +1.982000 +1.680000 +1.375000 +2.202000 +4.079000 +0.275000 +0.001000 +0.000000 +0.001000 +0.264000 +1.655000 +2.648000 +0.229000 +0.004000 +0.621000 +0.357000 +0.426000 +2.933000 +0.002000 +5.850000 +2.272000 +0.091000 +0.000000 +0.314000 +6.356000 +0.881000 +0.054000 +0.236000 +0.116000 +1.977000 +3.199000 +0.627000 +0.076000 +0.205000 +0.633000 +0.048000 +0.644000 +0.067000 +0.085000 +0.310000 +0.006000 +0.001000 +0.000000 +0.000000 +0.004000 +0.025000 +0.071000 +0.187000 +0.003000 +1.652000 +0.272000 +1.080000 +0.041000 +0.377000 +0.006000 +0.781000 +0.635000 +3.381000 +0.252000 +0.704000 +0.163000 +0.000000 +14.544000 +1.265000 +5.343000 +0.823000 +0.295000 +0.397000 +0.527000 +9.030000 +8.915000 +2.727000 +0.010000 +0.000000 +0.056000 +0.593000 +0.002000 +0.028000 +0.133000 +3.629000 +1.960000 +2.659000 +0.045000 +0.000000 +0.001000 +0.213000 +0.540000 +0.284000 +3.834000 +1.847000 +0.308000 +5.239000 +1.264000 +2.066000 +0.089000 +4.928000 +1.609000 +0.922000 +0.774000 +4.335000 +0.256000 +0.072000 +0.498000 +1.032000 +0.077000 +0.217000 +0.274000 +5.256000 +4.695000 +0.079000 +0.374000 +3.368000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.004000 +0.005000 +0.001000 +0.000000 +0.000000 +0.000000 +0.000000 +4.249000 +0.032000 +7.040000 +0.698000 +0.895000 +6.459000 +0.481000 +7.570000 +8.170000 +0.000000 +0.019000 +5.445000 +0.145000 +0.384000 +0.000000 +1.903000 +0.880000 +0.114000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.051000 +6.518000 +1.880000 +0.082000 +0.201000 +0.068000 +1.818000 +7.479000 +0.337000 +0.345000 +0.010000 +0.057000 +0.000000 +0.000000 +0.012000 +7.597000 +3.564000 +0.290000 +1.643000 +11.413000 +1.690000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.832000 +1.841000 +6.507000 +6.383000 +7.776000 +0.552000 +10.944000 +4.901000 +11.166000 +0.068000 +0.080000 +0.000000 +1.169000 +3.817000 +0.417000 +0.764000 +0.000000 +0.000000 +0.095000 +0.085000 +0.000000 +0.015000 +0.491000 +0.025000 +0.003000 +0.000000 +0.000000 +0.000000 +0.000000 +0.578000 +1.075000 +1.410000 +0.360000 +0.000000 +0.003000 +0.377000 +0.591000 +3.002000 +0.513000 +5.859000 +10.492000 +0.130000 +0.354000 +0.217000 +4.445000 +2.984000 +0.180000 +1.766000 +0.032000 +1.910000 +0.004000 +0.026000 +0.136000 +0.530000 +0.000000 +0.405000 +4.820000 +1.908000 +0.045000 +6.148000 +0.808000 +3.487000 +0.035000 +0.018000 +0.003000 +6.885000 +2.450000 +5.086000 +7.227000 +5.288000 +1.271000 +0.428000 +1.599000 +0.991000 +0.557000 +1.843000 +8.476000 +7.747000 +8.224000 +0.012000 +2.703000 +1.193000 +0.340000 +10.670000 +6.363000 +0.001000 +0.898000 +0.158000 +1.234000 +3.785000 +0.122000 +4.156000 +10.231000 +0.596000 +3.567000 +0.356000 +5.572000 +6.977000 +3.650000 +0.008000 +1.183000 +1.903000 +0.427000 +3.846000 +2.275000 +15.085000 +2.195000 +0.018000 +0.019000 +0.004000 +0.022000 +0.073000 +0.150000 +0.000000 +1.022000 +0.906000 +0.258000 +0.389000 +1.043000 +0.295000 +8.640000 +25.918000 +2.919000 +0.000000 +0.168000 +0.540000 +0.223000 +0.607000 +1.382000 +1.211000 +2.897000 +1.479000 +6.150000 +2.143000 +0.283000 +0.244000 +0.040000 +0.006000 +0.917000 +1.258000 +0.001000 +0.011000 +0.011000 +0.039000 +1.374000 +0.215000 +0.024000 +0.000000 +0.045000 +0.064000 +0.250000 +0.147000 +1.542000 +0.299000 +0.405000 +1.375000 +0.253000 +0.435000 +0.065000 +0.024000 +0.579000 +0.012000 +0.005000 +0.000000 +0.150000 +0.652000 +0.149000 +4.204000 +11.444000 +0.186000 +1.253000 +2.178000 +0.119000 +1.452000 +8.218000 +7.872000 +5.462000 +0.546000 +0.005000 +0.176000 +8.681000 +16.866000 +8.606000 +17.329000 +13.381000 +4.846000 +0.699000 +3.209000 +11.242000 +6.035000 +4.593000 +2.698000 +2.392000 +1.204000 +10.255000 +0.001000 +0.030000 +1.859000 +0.046000 +0.027000 +0.011000 +0.400000 +0.066000 +0.002000 +0.013000 +0.234000 +1.838000 +0.177000 +0.083000 +0.171000 +1.585000 +0.999000 +0.105000 +0.000000 +2.799000 +0.853000 +4.763000 +0.525000 +1.119000 +2.855000 +0.091000 +0.000000 +0.007000 +0.000000 +0.025000 +0.156000 +0.884000 +0.526000 +1.141000 +0.175000 +0.025000 +0.000000 +0.001000 +0.000000 +0.005000 +0.000000 +0.000000 +0.017000 +0.004000 +0.008000 +0.000000 +0.055000 +0.114000 +0.037000 +1.417000 +0.035000 +0.139000 +1.071000 +5.782000 +0.971000 +0.508000 +2.786000 +0.006000 +0.000000 +0.025000 +0.000000 +0.000000 +9.056000 +26.613000 +0.381000 +2.024000 +4.336000 +0.691000 +8.439000 +3.222000 +2.301000 +1.596000 +0.000000 +0.000000 +0.226000 +7.767000 +1.398000 +2.559000 +2.397000 +0.748000 +0.040000 +0.001000 +0.000000 +0.034000 +0.021000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.005000 +0.005000 +0.000000 +0.000000 +1.634000 +6.793000 +4.519000 +2.870000 +0.513000 +0.005000 +21.501000 +11.789000 +0.426000 +1.075000 +0.662000 +0.003000 +1.238000 +0.236000 +3.908000 +5.039000 +2.950000 +5.378000 +0.004000 +0.000000 +23.451000 +12.879000 +0.990000 +16.699000 +0.327000 +5.985000 +4.772000 +4.762000 +4.867000 +1.132000 +0.002000 +0.002000 +0.000000 +0.045000 +3.029000 +0.134000 +0.000000 +0.612000 +11.206000 +0.113000 +0.391000 +1.331000 +1.521000 +0.194000 +0.000000 +0.000000 +0.000000 +0.001000 +0.532000 +6.245000 +6.213000 +10.498000 +0.232000 +1.639000 +2.594000 +1.743000 +1.102000 +4.591000 +0.000000 +0.000000 +0.000000 +0.000000 +0.006000 +0.000000 +0.000000 +0.000000 +0.000000 +0.208000 +0.001000 +10.513000 +0.038000 +0.000000 +0.000000 +1.083000 +0.037000 +0.000000 +0.673000 +4.629000 +0.075000 +6.045000 +0.618000 +0.019000 +0.155000 +5.489000 +3.363000 +1.771000 +0.190000 +19.706000 +0.421000 +0.019000 +6.170000 +0.615000 +0.638000 +1.794000 +0.101000 +0.000000 +0.000000 +0.000000 +1.480000 +1.033000 +0.476000 +0.122000 +2.620000 +4.075000 +0.048000 +0.035000 +0.001000 +0.000000 +0.008000 +0.000000 +0.000000 +0.000000 +0.011000 +0.044000 +0.022000 +0.098000 +0.277000 +1.978000 +0.592000 +0.005000 +0.000000 +0.019000 +0.036000 +5.599000 +3.263000 +0.880000 +15.151000 +2.604000 +0.037000 +0.060000 +0.481000 +2.836000 +3.475000 +5.803000 +0.004000 +0.009000 +0.281000 +0.115000 +0.000000 +0.024000 +0.007000 +0.028000 +0.000000 +0.000000 +0.036000 +0.005000 +0.007000 +1.193000 +0.028000 +0.321000 +0.731000 +0.337000 +0.085000 +4.564000 +0.027000 +0.014000 +11.895000 +3.610000 +0.891000 +0.436000 +0.083000 +0.341000 +0.471000 +0.152000 +5.677000 +0.124000 +8.552000 +7.179000 +9.943000 +0.237000 +0.018000 +0.939000 +3.753000 +2.159000 +1.761000 +8.198000 +6.463000 +12.142000 +0.748000 +0.075000 +0.322000 +1.944000 +0.127000 +1.022000 +1.826000 +0.601000 +6.163000 +7.908000 +11.959000 +8.699000 +0.056000 +0.000000 +0.020000 +1.221000 +0.007000 +2.269000 +13.542000 +11.839000 +2.374000 +0.068000 +1.015000 +5.121000 +15.312000 +10.724000 +1.672000 +0.164000 +2.830000 +1.470000 +4.395000 +3.369000 +14.448000 +1.055000 +14.091000 +6.203000 +1.205000 +2.848000 +4.298000 +22.067000 +0.643000 +0.000000 +0.049000 +0.320000 +7.198000 +3.382000 +4.280000 +3.248000 +1.452000 +15.802000 +4.122000 +0.753000 +1.150000 +3.303000 +1.095000 +0.859000 +0.048000 +0.030000 +0.000000 +0.000000 +0.005000 +0.074000 +1.726000 +0.038000 +0.054000 +0.024000 +0.423000 +0.078000 +4.476000 +1.142000 +0.982000 +0.732000 +3.342000 +3.858000 +0.273000 +0.023000 +0.004000 +0.058000 +1.250000 +0.009000 +0.119000 +0.015000 +0.244000 +2.855000 +0.406000 +0.094000 +0.001000 +0.040000 +0.186000 +4.595000 +5.303000 +7.415000 +4.351000 +8.136000 +17.344000 +3.303000 +12.703000 +4.431000 +1.100000 +0.534000 +8.018000 +1.668000 +2.929000 +0.001000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.005000 +0.000000 +0.000000 +0.025000 +3.281000 +4.306000 +2.773000 +0.073000 +0.000000 +8.931000 +1.329000 +0.016000 +2.350000 +4.778000 +17.275000 +12.804000 +3.260000 +1.996000 +3.209000 +8.940000 +4.471000 +11.539000 +4.169000 +0.195000 +0.001000 +0.168000 +0.040000 +2.643000 +2.149000 +1.866000 +1.563000 +1.727000 +2.051000 +12.426000 +6.164000 +0.550000 +1.067000 +3.155000 +3.536000 +7.353000 +0.550000 +0.041000 +0.013000 +0.632000 +0.446000 +0.120000 +1.055000 +2.432000 +1.136000 +1.946000 +3.136000 +2.876000 +4.410000 +0.082000 +0.043000 +0.010000 +0.007000 +0.000000 +0.000000 +0.000000 +0.005000 +0.408000 +0.163000 +0.004000 +0.364000 +0.082000 +0.096000 +1.094000 +1.441000 +5.852000 +14.293000 +0.023000 +2.652000 +0.860000 +31.571000 +3.915000 +0.000000 +0.000000 +16.909000 +1.567000 +7.688000 +2.951000 +6.482000 +9.978000 +0.097000 +3.796000 +5.217000 +3.530000 +1.407000 +0.155000 +2.350000 +0.131000 +0.392000 +0.147000 +0.144000 +2.799000 +0.813000 +0.923000 +5.554000 +5.933000 +0.299000 +0.024000 +0.333000 +0.189000 +0.013000 +0.019000 +0.101000 +1.128000 +0.000000 +0.014000 +2.791000 +0.215000 +1.613000 +0.490000 +6.705000 +1.831000 +0.901000 +0.330000 +0.009000 +9.015000 +0.943000 +1.737000 +5.598000 +5.299000 +2.326000 +0.726000 +0.117000 +0.015000 +1.661000 +0.997000 +3.132000 +4.600000 +6.560000 +11.816000 +2.363000 +0.000000 +6.944000 +0.091000 +0.036000 +0.433000 +0.790000 +0.103000 +0.016000 +0.018000 +0.022000 +0.715000 +0.728000 +1.478000 +0.028000 +0.297000 +5.079000 +0.000000 +0.022000 +2.314000 +3.569000 +0.317000 +5.133000 +1.450000 +8.392000 +3.233000 +0.001000 +0.000000 +0.104000 +0.046000 +0.141000 +17.529000 +0.137000 +0.001000 +0.002000 +0.219000 +0.443000 +1.525000 +2.984000 +7.967000 +2.518000 +1.174000 +3.781000 +1.742000 +0.001000 +0.049000 +0.019000 +0.075000 +0.192000 +0.012000 +0.000000 +0.000000 +0.000000 +0.047000 +0.000000 +0.005000 +0.081000 +1.297000 +7.820000 +0.694000 +10.237000 +3.141000 +0.898000 +1.013000 +4.218000 +4.208000 +2.088000 +0.556000 +0.000000 +1.592000 +0.046000 +2.871000 +0.074000 +3.562000 +3.936000 +0.282000 +16.824000 +8.710000 +0.155000 +1.082000 +4.986000 +7.328000 +9.837000 +4.403000 +30.219000 +0.660000 +0.684000 +16.882000 +7.693000 +5.258000 +0.204000 +0.027000 +0.210000 +13.966000 +14.645000 +0.413000 +3.331000 +0.025000 +0.004000 +11.166000 +5.534000 +1.875000 +0.000000 +6.430000 +0.162000 +2.444000 +0.993000 +0.061000 +0.080000 +3.982000 +0.118000 +0.042000 +0.449000 +4.264000 +0.361000 +1.402000 +1.376000 +1.723000 +0.191000 +3.616000 +0.059000 +0.668000 +0.439000 +0.063000 +2.279000 +0.103000 +0.233000 +0.046000 +0.176000 +6.012000 +0.194000 +2.350000 +0.907000 +5.930000 +3.688000 +1.741000 +0.071000 +0.013000 +0.693000 +2.225000 +0.824000 +0.121000 +0.054000 +0.923000 +0.647000 +1.098000 +5.277000 +10.820000 +3.764000 +2.003000 +0.605000 +0.370000 +1.213000 +1.396000 +8.137000 +2.723000 +3.586000 +11.170000 +3.650000 +6.157000 +10.063000 +1.161000 +0.262000 +1.516000 +2.375000 +1.602000 +7.323000 +13.890000 +3.832000 +2.704000 +3.760000 +3.059000 +3.804000 +0.216000 +0.014000 +0.970000 +3.467000 +5.265000 +4.105000 +0.872000 +2.303000 +2.139000 +0.430000 +0.047000 +0.032000 +0.219000 +0.113000 +1.006000 +0.325000 +0.722000 +0.000000 +0.184000 +0.053000 +0.063000 +0.058000 +1.238000 +0.202000 +0.133000 +0.257000 +0.301000 +5.451000 +2.657000 +1.275000 +1.483000 +3.735000 +0.049000 +0.349000 +0.631000 +0.407000 +1.058000 +1.062000 +8.118000 +7.247000 +10.791000 +11.885000 +7.876000 +6.854000 +6.397000 +11.518000 +1.083000 +9.970000 +1.789000 +0.611000 +1.115000 +0.088000 +0.001000 +0.120000 +3.539000 +0.012000 +0.229000 +0.000000 +0.099000 +6.385000 +0.313000 +0.400000 +1.801000 +3.514000 +0.413000 +0.162000 +0.127000 +1.611000 +0.059000 +0.610000 +0.024000 +0.412000 +0.028000 +0.440000 +0.765000 +0.947000 +0.076000 +0.546000 +0.050000 +0.730000 +4.134000 +3.879000 +5.472000 +0.155000 +2.968000 +3.518000 +0.424000 +5.756000 +0.704000 +21.816000 +2.885000 +1.906000 +4.757000 +1.378000 +0.021000 +0.854000 +0.116000 +0.005000 +0.000000 +0.003000 +0.013000 +0.000000 +0.000000 +0.000000 +0.000000 +5.390000 +3.545000 +10.304000 +3.192000 +7.102000 +3.792000 +3.861000 +5.563000 +0.310000 +0.005000 +0.000000 +0.000000 +0.000000 +0.000000 +0.002000 +0.716000 +0.441000 +0.275000 +1.724000 +0.225000 +0.242000 +0.000000 +5.777000 +0.517000 +0.451000 +0.001000 +0.175000 +11.741000 +1.793000 +1.992000 +2.440000 +8.292000 +25.962000 +14.270000 +0.848000 +0.000000 +0.090000 +1.585000 +0.284000 +0.126000 +0.007000 +0.030000 +0.259000 +0.025000 +0.996000 +1.626000 +0.324000 +0.310000 +0.155000 +0.000000 +0.000000 +0.000000 +11.288000 +4.984000 +0.049000 +1.346000 +4.783000 +1.128000 +3.361000 +0.238000 +4.157000 +1.056000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.001000 +0.511000 +0.118000 +0.165000 +0.321000 +0.581000 +0.377000 +1.382000 +2.730000 +0.804000 +0.559000 +0.017000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.003000 +0.026000 +0.000000 +0.065000 +3.590000 +0.092000 +4.581000 +0.330000 +14.291000 +0.861000 +0.467000 +1.791000 +9.745000 +2.886000 +0.657000 +0.193000 +3.019000 +4.861000 +6.801000 +0.164000 +0.000000 +0.007000 +0.037000 +0.000000 +8.867000 +0.756000 +0.028000 +0.005000 +1.243000 +0.593000 +0.036000 +0.029000 +0.030000 +0.000000 +0.000000 +0.000000 +0.000000 +8.855000 +0.888000 +0.024000 +0.134000 +1.243000 +0.965000 +0.005000 +0.070000 +0.014000 +0.779000 +0.502000 +0.196000 +1.557000 +29.089000 +0.022000 +10.199000 +8.863000 +2.367000 +0.286000 +2.062000 +16.863000 +1.100000 +2.202000 +1.366000 +14.275000 +11.061000 +1.700000 +0.010000 +0.017000 +0.022000 +1.495000 +1.935000 +0.112000 +0.890000 +0.040000 +0.021000 +0.000000 +0.038000 +0.014000 +0.000000 +0.000000 +0.000000 +0.277000 +0.071000 +4.030000 +8.142000 +4.471000 +8.401000 +1.712000 +0.132000 +2.030000 +0.477000 +0.071000 +4.871000 +1.987000 +2.166000 +3.411000 +0.045000 +0.072000 +16.151000 +1.884000 +0.796000 +0.896000 +0.022000 +0.017000 +0.303000 +1.535000 +0.859000 +2.310000 +0.511000 +0.041000 +0.000000 +0.433000 +9.041000 +0.092000 +0.242000 +0.038000 +0.062000 +2.575000 +0.665000 +2.704000 +0.392000 +1.878000 +0.236000 +2.312000 +4.801000 +5.264000 +21.048000 +3.907000 +2.002000 +7.289000 +4.078000 +7.879000 +9.720000 +0.869000 +20.397000 +2.928000 +0.570000 +4.646000 +4.202000 +1.651000 +2.745000 +0.032000 +0.000000 +0.670000 +4.145000 +6.103000 +2.436000 +14.822000 +2.209000 +3.243000 +0.168000 +0.013000 +0.102000 +3.252000 +0.241000 +0.018000 +0.154000 +1.519000 +1.623000 +1.281000 +2.063000 +3.118000 +1.620000 +0.033000 +1.804000 +7.091000 +17.014000 +5.836000 +11.173000 +0.834000 +0.013000 +0.005000 +0.009000 +0.038000 +0.062000 +0.029000 +1.239000 +0.579000 +1.508000 +0.001000 +0.005000 +0.067000 +2.783000 +5.527000 +3.065000 +3.625000 +0.732000 +0.310000 +0.458000 +3.209000 +0.690000 +1.471000 +4.446000 +2.288000 +0.418000 +6.858000 +0.795000 +10.737000 +0.686000 +1.072000 +3.664000 +1.490000 +1.476000 +2.396000 +0.313000 +0.114000 +2.553000 +0.003000 +0.504000 +1.167000 +0.241000 +0.444000 +5.881000 +2.456000 +1.912000 +0.101000 +7.931000 +0.450000 +0.047000 +0.377000 +1.363000 +0.901000 +4.043000 +1.334000 +0.372000 +0.001000 +0.002000 +0.112000 +0.135000 +0.000000 +0.000000 +0.043000 +0.001000 +0.000000 +0.027000 +0.000000 +0.003000 +8.921000 +0.778000 +0.089000 +0.533000 +4.545000 +0.111000 +0.002000 +0.016000 +0.009000 +0.404000 +12.561000 +11.180000 +0.494000 +0.061000 +0.000000 +0.000000 +0.114000 +0.478000 +0.053000 +9.419000 +13.289000 +23.075000 +0.851000 +0.042000 +0.430000 +5.981000 +1.036000 +10.696000 +8.969000 +3.395000 +9.146000 +1.996000 +3.547000 +16.186000 +12.066000 +1.069000 +0.081000 +0.150000 +0.002000 +0.030000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.003000 +0.000000 +0.000000 +0.000000 +0.000000 +0.006000 +3.484000 +3.638000 +5.001000 +4.794000 +2.198000 +7.019000 +0.280000 +0.896000 +0.973000 +2.832000 +10.144000 +12.523000 +4.231000 +1.462000 +1.229000 +0.271000 +3.517000 +10.646000 +23.216000 +27.883000 +0.226000 +5.377000 +0.768000 +0.031000 +1.397000 +0.279000 +0.267000 +0.191000 +0.320000 +2.759000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.258000 +3.055000 +4.638000 +0.310000 +1.305000 +0.306000 +0.000000 +0.000000 +2.338000 +1.864000 +0.074000 +0.032000 +2.019000 +1.383000 +0.040000 +0.083000 +0.940000 +0.070000 +1.298000 +2.424000 +5.247000 +0.040000 +0.022000 +0.410000 +4.230000 +1.148000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.027000 +0.266000 +0.121000 +0.018000 +1.446000 +6.686000 +6.481000 +0.365000 +11.483000 +0.471000 +3.601000 +2.512000 +0.019000 +0.019000 +0.004000 +0.271000 +0.149000 +0.957000 +0.033000 +0.000000 +1.108000 +3.886000 +4.916000 +4.179000 +5.504000 +2.693000 +2.367000 +1.612000 +6.144000 +8.599000 +1.373000 +0.001000 +0.007000 +0.000000 +9.694000 +0.480000 +5.203000 +0.007000 +0.004000 +7.052000 +5.157000 +2.565000 +0.000000 +0.086000 +1.569000 +4.194000 +1.696000 +0.004000 +0.660000 +9.925000 +5.838000 +2.101000 +0.202000 +0.080000 +12.243000 +0.128000 +3.127000 +8.802000 +22.045000 +13.835000 +0.295000 +3.942000 +2.234000 +9.728000 +1.672000 +9.314000 +9.119000 +1.521000 +1.682000 +0.179000 +1.228000 +0.501000 +0.274000 +1.302000 +5.214000 +0.271000 +14.900000 +0.150000 +18.005000 +2.101000 +5.820000 +0.702000 +0.024000 +2.525000 +0.198000 +0.105000 +0.988000 +4.167000 +0.511000 +2.191000 +0.182000 +0.261000 +3.646000 +2.393000 +5.758000 +0.386000 +4.598000 +17.493000 +13.644000 +38.136000 +3.647000 +10.841000 +46.415000 +2.566000 +0.101000 +6.122000 +25.715000 +24.804000 +3.607000 +0.276000 +1.816000 +1.871000 +7.659000 +1.430000 +2.412000 +0.808000 +2.557000 +1.959000 +3.552000 +0.560000 +0.112000 +1.979000 +7.696000 +1.359000 +0.595000 +8.218000 +4.218000 +4.060000 +11.722000 +0.996000 +2.369000 +5.535000 +0.059000 +2.639000 +9.082000 +10.771000 +1.618000 +4.446000 +17.695000 +5.830000 +6.454000 +4.400000 +11.928000 +9.573000 +0.120000 +0.001000 +0.143000 +0.080000 +0.078000 +8.481000 +3.129000 +0.487000 +0.177000 +0.058000 +10.388000 +0.357000 +0.005000 +0.045000 +1.073000 +0.074000 +0.000000 +5.836000 +3.643000 +10.103000 +1.711000 +1.328000 +0.074000 +0.440000 +0.944000 +0.132000 +0.151000 +0.355000 +0.231000 +0.000000 +0.000000 +0.073000 +0.053000 +0.000000 +0.000000 +0.309000 +1.202000 +0.663000 +2.235000 +7.996000 +13.210000 +2.893000 +1.281000 +2.669000 +0.668000 +0.082000 +0.100000 +0.453000 +0.384000 +3.161000 +1.751000 +7.726000 +15.168000 +7.515000 +13.205000 +18.259000 +0.001000 +0.102000 +10.188000 +10.586000 +0.268000 +0.000000 +0.006000 +0.046000 +0.001000 +0.006000 +0.033000 +0.002000 +0.033000 +0.247000 +0.248000 +1.820000 +1.059000 +0.397000 +5.886000 +11.705000 +4.022000 +0.365000 +0.082000 +0.005000 +0.000000 +0.006000 +1.141000 +9.041000 +0.150000 +0.353000 +0.541000 +2.726000 +0.329000 +0.000000 +0.005000 +0.000000 +0.004000 +0.441000 +3.017000 +0.536000 +0.024000 +2.468000 +7.284000 +1.088000 +0.107000 +2.038000 +0.366000 +9.231000 +2.625000 +0.618000 +0.169000 +1.411000 +0.153000 +2.187000 +1.443000 +15.507000 +8.110000 +7.145000 +11.581000 +0.045000 +2.636000 +0.700000 +0.099000 +0.077000 +0.063000 +0.534000 +1.980000 +0.007000 +5.288000 +0.484000 +1.499000 +0.219000 +0.089000 +1.832000 +6.611000 +3.306000 +3.643000 +7.437000 +0.749000 +3.162000 +5.946000 +0.235000 +0.036000 +0.070000 +2.791000 +0.031000 +0.000000 +0.001000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.004000 +0.018000 +0.963000 +2.426000 +0.823000 +4.721000 +1.018000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.007000 +0.018000 +2.229000 +2.206000 +0.071000 +0.528000 +0.172000 +0.603000 +2.101000 +0.011000 +0.000000 +0.000000 +12.418000 +4.891000 +0.353000 +9.685000 +0.159000 +0.011000 +0.000000 +0.000000 +6.257000 +24.608000 +1.257000 +0.503000 +0.008000 +0.579000 +0.129000 +0.000000 +0.000000 +0.000000 +0.000000 +0.002000 +0.095000 +0.012000 +0.070000 +1.289000 +1.331000 +0.000000 +0.009000 +0.000000 +0.000000 +0.008000 +0.740000 +0.702000 +1.852000 +0.003000 +3.229000 +3.777000 +1.039000 +0.636000 +4.171000 +9.237000 +0.424000 +0.589000 +0.017000 +1.579000 +0.200000 +1.555000 +1.138000 +0.024000 +0.020000 +0.009000 +0.046000 +0.007000 +0.000000 +0.010000 +0.132000 +0.695000 +0.000000 +0.810000 +0.492000 +2.632000 +0.094000 +1.830000 +18.870000 +9.338000 +1.989000 +0.685000 +1.678000 +7.553000 +0.678000 +0.257000 +4.475000 +5.869000 +1.950000 +0.094000 +16.134000 +0.464000 +0.164000 +0.020000 +0.000000 +5.255000 +0.399000 +0.008000 +0.000000 +0.000000 +0.000000 +2.283000 +0.919000 +0.055000 +0.142000 +0.111000 +0.085000 +1.869000 +0.475000 +0.557000 +0.005000 +0.383000 +0.052000 +0.000000 +4.830000 +5.681000 +0.838000 +0.188000 +1.788000 +0.553000 +6.021000 +7.306000 +1.538000 +0.382000 +0.884000 +1.648000 +7.992000 +10.442000 +0.124000 +36.411000 +0.307000 +1.633000 +11.423000 +5.521000 +1.795000 +3.428000 +0.638000 +3.281000 +4.432000 +8.681000 +10.625000 +1.211000 +0.574000 +0.245000 +0.068000 +0.070000 +0.869000 +6.045000 +0.155000 +0.340000 +9.725000 +2.832000 +5.955000 +18.377000 +2.381000 +12.900000 +1.596000 +1.064000 +3.263000 +0.503000 +0.096000 +0.132000 +1.126000 +0.685000 +0.000000 +0.008000 +0.103000 +0.115000 +0.923000 +0.087000 +7.657000 +9.521000 +1.984000 +0.021000 +0.059000 +5.114000 +0.434000 +0.021000 +0.003000 +0.017000 +0.000000 +0.055000 +1.355000 +0.704000 +6.972000 +0.001000 +0.184000 +0.183000 +1.355000 +0.217000 +8.348000 +1.728000 +1.761000 +2.193000 +0.778000 +0.090000 +6.992000 +3.901000 +13.795000 +0.481000 +1.187000 +0.333000 +0.043000 +0.022000 +0.022000 +0.010000 +0.038000 +0.034000 +0.331000 +1.942000 +1.788000 +1.456000 +0.459000 +0.518000 +5.738000 +2.159000 +1.190000 +0.497000 +1.126000 +0.146000 +5.147000 +1.509000 +0.000000 +2.105000 +0.148000 +0.091000 +0.009000 +0.072000 +0.041000 +0.629000 +0.153000 +0.039000 +0.018000 +0.000000 +0.115000 +4.891000 +0.030000 +0.312000 +1.468000 +0.207000 +0.891000 +3.072000 +3.796000 +1.955000 +5.525000 +2.753000 +0.830000 +10.485000 +0.777000 +9.854000 +6.849000 +2.438000 +5.532000 +2.292000 +4.934000 +10.453000 +14.733000 +6.484000 +9.053000 +10.571000 +5.756000 +1.343000 +3.498000 +5.718000 +10.311000 +4.098000 +11.574000 +2.374000 +9.254000 +0.026000 +0.009000 +0.000000 +0.350000 +1.688000 +6.327000 +4.837000 +2.285000 +8.291000 +4.290000 +0.575000 +12.236000 +17.602000 +4.050000 +3.254000 +1.124000 +0.140000 +0.086000 +0.205000 +0.238000 +2.536000 +0.318000 +1.005000 +7.601000 +9.807000 +0.134000 +0.000000 +0.000000 +0.666000 +8.695000 +2.364000 +0.984000 +0.669000 +1.075000 +7.018000 +0.042000 +0.000000 +0.000000 +0.099000 +1.519000 +0.001000 +0.011000 +0.086000 +0.027000 +0.020000 +0.054000 +1.007000 +0.577000 +0.370000 +0.007000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.010000 +0.383000 +0.148000 +1.257000 +0.013000 +0.019000 +0.081000 +0.200000 +0.003000 +0.019000 +0.744000 +0.515000 +0.000000 +0.011000 +0.038000 +3.307000 +3.319000 +7.574000 +4.889000 +7.421000 +1.449000 +0.196000 +0.812000 +0.173000 +0.024000 +0.047000 +0.855000 +0.044000 +0.007000 +0.002000 +0.000000 +0.068000 +8.344000 +1.375000 +1.418000 +0.000000 +0.000000 +4.449000 +0.205000 +3.476000 +10.728000 +5.172000 +0.160000 +13.776000 +2.905000 +8.904000 +0.430000 +2.814000 +3.428000 +4.421000 +1.640000 +0.009000 +6.830000 +0.950000 +0.228000 +1.089000 +0.610000 +0.123000 +0.707000 +5.753000 +3.486000 +0.209000 +1.978000 +2.928000 +26.197000 +1.771000 +1.055000 +0.021000 +0.144000 +0.053000 +0.019000 +0.297000 +1.223000 +0.079000 +0.010000 +0.000000 +0.935000 +1.623000 +0.000000 +0.073000 +3.046000 +5.276000 +1.406000 +5.883000 +4.710000 +14.677000 +0.188000 +0.002000 +1.222000 +1.299000 +0.093000 +0.989000 +0.650000 +0.000000 +0.000000 +0.018000 +0.001000 +0.178000 +0.108000 +12.003000 +12.703000 +1.281000 +0.798000 +4.932000 +0.033000 +0.394000 +0.000000 +0.000000 +0.000000 +0.045000 +32.749000 +1.964000 +23.550000 +42.992000 +0.366000 +1.935000 +0.050000 +1.043000 +1.918000 +0.149000 +4.795000 +12.209000 +0.949000 +0.095000 +0.207000 +0.266000 +0.036000 +0.000000 +0.000000 +3.096000 +0.746000 +0.323000 +0.124000 +2.366000 +4.403000 +4.603000 +0.277000 +0.005000 +0.012000 +0.001000 +0.686000 +1.580000 +0.000000 +0.009000 +0.000000 +0.000000 +0.000000 +2.883000 +7.762000 +3.029000 +0.130000 +19.777000 +0.554000 +0.005000 +0.000000 +0.000000 +0.000000 +0.002000 +0.001000 +0.000000 +0.000000 +0.004000 +0.000000 +0.041000 +0.322000 +0.061000 +0.004000 +0.085000 +0.330000 +0.009000 +0.000000 +0.000000 +0.000000 +0.045000 +0.866000 +0.214000 +0.451000 +0.231000 +0.064000 +0.059000 +0.101000 +0.000000 +0.003000 +1.972000 +14.225000 +5.408000 +4.328000 +1.265000 +3.587000 +0.499000 +0.525000 +0.028000 +12.450000 +31.953000 +4.105000 +0.901000 +0.552000 +16.021000 +5.329000 +13.421000 +0.369000 +5.248000 +0.012000 +0.168000 +16.580000 +10.692000 +1.780000 +0.103000 +0.319000 +4.695000 +0.146000 +11.695000 +0.004000 +4.065000 +3.839000 +4.690000 +1.944000 +17.980000 +0.290000 +3.744000 +1.904000 +0.000000 +0.137000 +5.967000 +7.412000 +1.319000 +2.427000 +0.012000 +0.078000 +0.009000 +3.485000 +1.352000 +0.229000 +4.040000 +6.498000 +5.156000 +0.285000 +2.743000 +0.078000 +1.220000 +1.872000 +0.397000 +0.000000 +0.000000 +0.000000 +0.011000 +2.644000 +4.207000 +8.063000 +5.287000 +0.463000 +0.015000 +0.012000 +0.000000 +4.063000 +11.898000 +12.979000 +1.823000 +0.631000 +6.682000 +7.845000 +0.055000 +23.780000 +10.944000 +0.963000 +9.645000 +10.226000 +2.975000 +1.287000 +0.757000 +0.107000 +0.558000 +1.182000 +3.285000 +1.967000 +0.065000 +0.513000 +0.389000 +2.816000 +3.452000 +0.160000 +3.118000 +2.651000 +4.881000 +7.888000 +3.857000 +2.438000 +0.095000 +0.256000 +2.113000 +2.602000 +2.330000 +2.774000 +0.776000 +0.706000 +0.174000 +1.510000 +6.523000 +5.167000 +0.093000 +0.002000 +0.141000 +0.089000 +1.506000 +6.427000 +2.062000 +1.363000 +0.176000 +1.475000 +0.018000 +0.036000 +0.000000 +0.000000 +0.005000 +0.000000 +0.022000 +0.039000 +0.031000 +0.842000 +0.231000 +0.034000 +0.012000 +0.014000 +9.512000 +4.811000 +1.334000 +0.109000 +1.995000 +0.271000 +0.000000 +5.164000 +3.133000 +1.370000 +12.671000 +3.883000 +1.510000 +0.045000 +0.001000 +0.018000 +0.015000 +0.000000 +0.042000 +0.029000 +0.003000 +0.011000 +0.058000 +0.159000 +0.575000 +0.011000 +0.000000 +0.010000 +0.000000 +0.001000 +0.011000 +0.076000 +4.309000 +0.000000 +0.006000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.098000 +0.000000 +0.000000 +0.044000 +0.037000 +0.000000 +0.000000 +0.000000 +0.000000 +0.011000 +0.024000 +2.049000 +0.000000 +0.000000 +0.861000 +6.724000 +4.935000 +3.824000 +11.015000 +0.704000 +6.160000 +3.864000 +11.378000 +4.917000 +0.695000 +0.782000 +0.037000 +0.412000 +0.147000 +0.778000 +0.198000 +2.983000 +1.399000 +2.014000 +2.399000 +0.162000 +8.194000 +7.004000 +5.756000 +7.042000 +1.477000 +2.551000 +1.779000 +2.004000 +1.327000 +2.926000 +1.272000 +0.290000 +0.007000 +0.045000 +0.189000 +0.005000 +0.614000 +0.090000 +0.024000 +0.773000 +0.255000 +0.639000 +0.000000 +8.123000 +0.011000 +1.404000 +0.493000 +0.324000 +0.000000 +0.000000 +0.000000 +0.852000 +3.823000 +1.647000 +3.428000 +0.003000 +0.159000 +1.305000 +0.000000 +0.000000 +0.000000 +0.000000 +12.377000 +0.120000 +0.027000 +29.338000 +10.888000 +2.299000 +4.389000 +0.014000 +0.115000 +0.030000 +0.158000 +0.420000 +0.143000 +0.446000 +0.038000 +0.000000 +0.000000 +0.000000 +0.000000 +0.010000 +13.002000 +3.666000 +0.286000 +0.302000 +2.983000 +0.142000 +1.834000 +0.342000 +13.778000 +0.334000 +0.220000 +1.173000 +6.393000 +5.709000 +0.400000 +0.968000 +0.004000 +0.000000 +0.000000 +0.027000 +0.103000 +0.001000 +0.008000 +0.002000 +14.342000 +7.298000 +0.011000 +0.000000 +0.000000 +0.000000 +0.000000 +0.258000 +0.950000 +0.000000 +0.000000 +2.212000 +0.091000 +0.051000 +0.113000 +0.286000 +0.059000 +0.002000 +0.902000 +2.451000 +0.000000 +0.033000 +0.006000 +0.045000 +0.000000 +0.000000 +0.476000 +5.824000 +0.065000 +3.262000 +0.496000 +3.184000 +0.582000 +0.006000 +0.000000 +0.000000 +0.056000 +0.000000 +0.001000 +1.156000 +21.349000 +17.186000 +0.122000 +9.970000 +0.010000 +0.000000 +0.000000 +0.405000 +0.090000 +0.067000 +2.655000 +0.338000 +0.024000 +0.056000 +0.030000 +0.847000 +0.591000 +2.591000 +0.626000 +0.451000 +0.938000 +0.449000 +0.047000 +0.133000 +0.000000 +0.000000 +0.001000 +0.011000 +0.000000 +0.000000 +0.783000 +3.137000 +0.076000 +3.794000 +3.137000 +0.009000 +1.878000 +0.455000 +0.008000 +1.965000 +5.980000 +0.001000 +5.818000 +0.762000 +8.460000 +3.178000 +0.000000 +0.000000 +0.001000 +0.026000 +0.448000 +0.273000 +0.001000 +0.344000 +4.457000 +1.950000 +4.776000 +0.267000 +0.010000 +1.826000 +0.885000 +2.816000 +7.803000 +0.125000 +0.025000 +0.091000 +0.191000 +2.459000 +10.491000 +0.196000 +0.170000 +10.083000 +1.830000 +19.092000 +5.340000 +2.697000 +0.000000 +0.066000 +0.203000 +0.000000 +0.040000 +0.031000 +0.024000 +6.200000 +0.613000 +5.579000 +1.451000 +0.047000 +0.382000 +0.009000 +0.064000 +0.119000 +6.605000 +4.363000 +0.335000 +3.572000 +0.133000 +1.337000 +6.843000 +0.817000 +0.050000 +0.001000 +0.031000 +2.487000 +15.862000 +0.648000 +0.745000 +0.210000 +2.312000 +3.457000 +1.343000 +11.469000 +3.680000 +0.032000 +10.970000 +1.701000 +10.801000 +0.220000 +12.324000 +5.050000 +1.785000 +2.431000 +0.690000 +3.558000 +0.041000 +0.190000 +2.456000 +0.198000 +0.081000 +1.476000 +2.832000 +1.301000 +0.506000 +5.908000 +26.058000 +6.798000 +0.988000 +11.980000 +3.999000 +0.694000 +0.111000 +4.403000 +1.975000 +0.008000 +0.374000 +0.000000 +0.000000 +1.341000 +1.729000 +0.042000 +2.034000 +2.418000 +0.020000 +0.571000 +0.031000 +0.001000 +0.400000 +0.571000 +2.492000 +0.514000 +1.836000 +5.361000 +1.414000 +0.219000 +0.053000 +0.059000 +1.077000 +0.503000 +0.660000 +0.372000 +2.409000 +0.072000 +0.007000 +0.704000 +0.271000 +0.153000 +2.197000 +3.840000 +0.910000 +0.486000 +0.112000 +2.149000 +10.370000 +10.822000 +4.144000 +1.097000 +0.256000 +2.540000 +1.653000 +0.517000 +0.007000 +0.050000 +0.000000 +0.000000 +0.014000 +2.650000 +6.091000 +8.529000 +3.908000 +2.322000 +1.953000 +0.793000 +0.005000 +0.299000 +0.951000 +0.028000 +0.003000 +0.312000 +0.580000 +1.158000 +10.694000 +1.065000 +16.703000 +2.714000 +0.493000 +4.001000 +0.535000 +0.000000 +0.000000 +1.331000 +4.400000 +6.470000 +2.044000 +0.683000 +0.058000 +0.000000 +0.028000 +2.340000 +5.841000 +3.196000 +0.500000 +2.142000 +3.290000 +0.466000 +1.222000 +0.042000 +0.000000 +0.001000 +0.299000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.236000 +2.166000 +0.000000 +0.000000 +0.000000 +0.031000 +0.000000 +0.000000 +0.338000 +1.617000 +3.078000 +0.189000 +2.750000 +0.528000 +5.190000 +0.046000 +0.011000 +0.000000 +0.104000 +0.044000 +0.093000 +0.246000 +0.793000 +0.126000 +0.000000 +0.000000 +0.000000 +0.178000 +1.528000 +11.659000 +3.761000 +3.077000 +3.121000 +0.799000 +19.143000 +7.512000 +0.006000 +2.759000 +0.575000 +1.281000 +0.442000 +5.953000 +0.884000 +4.064000 +5.433000 +8.663000 +0.978000 +2.160000 +0.324000 +6.717000 +1.960000 +1.286000 +1.175000 +0.635000 +0.469000 +1.186000 +1.124000 +0.738000 +10.118000 +0.061000 +1.330000 +5.385000 +0.352000 +0.905000 +0.023000 +0.450000 +3.390000 +0.040000 +0.000000 +0.000000 +0.894000 +0.744000 +0.064000 +0.098000 +0.566000 +9.546000 +14.459000 +0.843000 +0.565000 +0.001000 +0.221000 +32.151000 +43.276000 +3.361000 +15.524000 +2.508000 +0.193000 +0.050000 +1.052000 +6.941000 +12.456000 +5.437000 +14.642000 +0.815000 +0.000000 +12.170000 +5.222000 +0.818000 +2.076000 +0.889000 +0.332000 +3.099000 +0.447000 +0.005000 +0.000000 +0.000000 +0.006000 +0.199000 +0.006000 +0.389000 +0.082000 +0.030000 +0.000000 +1.902000 +3.782000 +4.005000 +4.921000 +4.038000 +0.046000 +0.428000 +0.645000 +1.941000 +1.124000 +7.130000 +2.796000 +1.556000 +1.621000 +0.001000 +0.924000 +0.261000 +0.061000 +0.711000 +0.301000 +2.557000 +2.898000 +3.748000 +4.893000 +8.326000 +3.835000 +3.845000 +0.427000 +0.542000 +0.232000 +0.112000 +0.022000 +1.884000 +12.418000 +1.837000 +3.327000 +7.366000 +4.780000 +0.365000 +0.725000 +14.490000 +20.580000 +17.168000 +9.341000 +10.941000 +2.114000 +0.071000 +0.396000 +1.669000 +7.330000 +0.171000 +0.026000 +0.004000 +0.975000 +0.640000 +1.481000 +0.065000 +2.721000 +0.308000 +0.747000 +1.293000 +0.464000 +0.074000 +0.898000 +0.003000 +0.051000 +0.301000 +1.296000 +0.244000 +4.550000 +0.029000 +0.048000 +1.193000 +1.186000 +0.450000 +0.160000 +0.245000 +0.657000 +0.712000 +2.747000 +0.074000 +0.080000 +0.029000 +0.090000 +0.890000 +0.035000 +0.082000 +0.379000 +0.016000 +0.072000 +0.022000 +0.067000 +0.229000 +0.007000 +0.002000 +1.810000 +3.077000 +3.672000 +2.022000 +2.227000 +0.117000 +1.760000 +0.708000 +2.457000 +5.259000 +8.133000 +0.341000 +0.181000 +5.915000 +1.989000 +0.205000 +3.968000 +6.826000 +5.214000 +1.085000 +0.307000 +2.254000 +4.729000 +0.561000 +25.316000 +12.081000 +4.036000 +2.524000 +3.831000 +4.910000 +0.964000 +0.138000 +0.800000 +0.754000 +5.226000 +4.233000 +1.567000 +1.697000 +0.000000 +0.298000 +0.635000 +1.317000 +5.598000 +1.411000 +2.171000 +1.430000 +0.505000 +0.066000 +0.045000 +1.077000 +0.308000 +0.049000 +0.157000 +0.400000 +2.420000 +0.034000 +0.541000 +2.542000 +0.831000 +4.887000 +3.930000 +2.139000 +0.169000 +2.410000 +0.211000 +1.369000 +0.482000 +0.124000 +5.077000 +4.898000 +4.469000 +7.210000 +11.728000 +3.911000 +2.007000 +1.233000 +0.498000 +3.041000 +3.939000 +1.850000 +1.549000 +2.433000 +0.060000 +0.111000 +0.069000 +0.254000 +0.041000 +0.594000 +0.018000 +0.017000 +4.490000 +3.348000 +1.023000 +0.442000 +0.161000 +0.026000 +0.024000 +0.332000 +4.536000 +0.115000 +0.720000 +0.302000 +0.577000 +15.130000 +3.683000 +0.035000 +0.779000 +0.007000 +0.019000 +0.004000 +0.623000 +0.907000 +2.008000 +11.382000 +2.486000 +0.188000 +0.625000 +0.016000 +0.002000 +0.345000 +2.715000 +12.305000 +15.207000 +8.887000 +2.552000 +9.323000 +2.778000 +3.618000 +0.019000 +0.027000 +0.000000 +0.001000 +0.012000 +10.682000 +1.308000 +2.280000 +0.002000 +3.703000 +1.790000 +3.891000 +8.245000 +1.207000 +0.395000 +0.410000 +1.425000 +3.716000 +1.200000 +0.211000 +0.016000 +0.000000 +0.000000 +0.000000 +0.000000 +0.793000 +0.611000 +0.133000 +3.696000 +2.516000 +2.967000 +6.341000 +3.072000 +5.287000 +0.325000 +0.055000 +0.193000 +0.010000 +0.000000 +0.000000 +0.000000 +5.436000 +0.703000 +1.407000 +1.263000 +4.940000 +0.021000 +0.031000 +0.000000 +0.000000 +0.020000 +0.102000 +5.420000 +2.266000 +0.917000 +0.866000 +0.700000 +0.062000 +0.015000 +13.246000 +0.060000 +0.038000 +0.009000 +0.000000 +1.276000 +0.102000 +0.010000 +0.000000 +0.015000 +2.220000 +8.433000 +0.073000 +1.172000 +0.162000 +6.017000 +5.728000 +7.878000 +2.943000 +0.000000 +0.000000 +0.002000 +0.000000 +0.233000 +0.069000 +0.097000 +0.228000 +0.000000 +0.039000 +0.267000 +0.255000 +0.117000 +0.000000 +0.095000 +0.000000 +0.011000 +0.051000 +0.000000 +0.000000 +36.215000 +3.295000 +5.996000 +0.201000 +0.011000 +1.061000 +0.197000 +0.998000 +1.860000 +0.802000 +0.061000 +0.000000 +0.806000 +0.393000 +2.826000 +7.778000 +3.877000 +0.670000 +0.025000 +0.067000 +0.000000 +0.042000 +0.782000 +0.000000 +0.038000 +2.718000 +1.492000 +3.694000 +3.774000 +0.331000 +0.033000 +0.083000 +0.538000 +0.003000 +11.228000 +0.183000 +0.000000 +0.002000 +0.001000 +0.004000 +0.013000 +0.294000 +4.247000 +22.299000 +1.261000 +0.019000 +0.000000 +0.170000 +1.089000 +18.008000 +0.296000 +0.761000 +0.052000 +0.083000 +0.034000 +0.002000 +0.076000 +4.177000 +0.112000 +0.786000 +1.537000 +0.799000 +5.725000 +3.320000 +4.207000 +1.225000 +0.005000 +0.000000 +0.018000 +0.000000 +0.034000 +0.023000 +2.633000 +0.036000 +0.274000 +5.013000 +7.429000 +1.238000 +0.034000 +0.757000 +0.011000 +0.003000 +0.001000 +4.820000 +0.581000 +9.218000 +5.275000 +2.507000 +28.558000 +12.099000 +6.503000 +0.037000 +1.901000 +0.129000 +3.281000 +0.714000 +2.320000 +12.530000 +9.641000 +7.584000 +1.038000 +4.845000 +2.501000 +18.445000 +0.173000 +1.286000 +5.317000 +2.573000 +0.107000 +0.087000 +0.071000 +0.081000 +0.006000 +0.001000 +0.082000 +0.041000 +0.057000 +0.017000 +0.177000 +0.536000 +2.503000 +7.460000 +6.254000 +2.899000 +0.252000 +1.016000 +2.186000 +9.428000 +7.673000 +1.664000 +0.357000 +5.744000 +0.139000 +0.507000 +0.065000 +0.870000 +0.067000 +0.721000 +0.076000 +0.007000 +0.084000 +0.105000 +0.000000 +0.408000 +0.021000 +0.091000 +0.269000 +2.114000 +0.108000 +0.012000 +0.420000 +2.945000 +3.816000 +0.956000 +0.931000 +2.831000 +6.152000 +0.424000 +0.008000 +0.126000 +0.056000 +0.128000 +0.275000 +0.301000 +0.408000 +0.164000 +5.881000 +5.119000 +0.000000 +0.171000 +1.429000 +0.393000 +2.374000 +0.585000 +3.722000 +0.998000 +2.264000 +0.022000 +0.116000 +0.001000 +0.039000 +0.590000 +0.022000 +3.489000 +1.819000 +0.063000 +0.046000 +0.017000 +0.000000 +0.026000 +0.000000 +0.001000 +0.012000 +0.000000 +3.669000 +0.126000 +0.012000 +0.000000 +0.840000 +5.675000 +0.112000 +4.597000 +9.233000 +3.076000 +0.468000 +0.011000 +0.123000 +4.804000 +7.507000 +0.955000 +7.731000 +5.795000 +1.080000 +1.401000 +4.681000 +0.094000 +0.079000 +0.014000 +0.174000 +0.094000 +0.004000 +0.031000 +2.953000 +7.304000 +2.890000 +3.373000 +0.378000 +4.232000 +6.967000 +10.124000 +3.068000 +1.481000 +0.571000 +0.018000 +0.409000 +1.368000 +0.460000 +0.011000 +0.024000 +8.358000 +9.042000 +6.805000 +8.056000 +4.870000 +0.000000 +12.511000 +11.996000 +5.787000 +12.488000 +1.437000 +0.330000 +0.046000 +1.060000 +5.530000 +1.306000 +0.599000 +0.271000 +1.646000 +0.735000 +0.808000 +0.004000 +0.091000 +0.122000 +0.814000 +1.480000 +5.990000 +0.030000 +0.000000 +0.028000 +0.494000 +0.016000 +0.628000 +0.000000 +0.000000 +0.000000 +0.001000 +1.053000 +3.342000 +0.119000 +0.103000 +0.022000 +0.029000 +3.755000 +15.089000 +0.034000 +0.000000 +0.002000 +0.011000 +1.493000 +8.053000 +4.766000 +7.540000 +0.161000 +10.402000 +0.931000 +3.025000 +7.977000 +17.114000 +14.807000 +3.149000 +6.312000 +0.159000 +1.511000 +0.750000 +0.005000 +2.189000 +0.154000 +0.210000 +2.320000 +0.000000 +0.000000 +0.008000 +0.000000 +0.005000 +0.007000 +0.000000 +0.000000 +0.000000 +0.038000 +2.883000 +1.304000 +0.129000 +0.000000 +0.000000 +0.000000 +2.976000 +0.993000 +3.529000 +1.881000 +0.884000 +0.006000 +0.421000 +4.446000 +0.035000 +0.012000 +0.403000 +0.000000 +0.000000 +0.002000 +1.577000 +0.103000 +0.003000 +0.298000 +0.669000 +0.095000 +1.164000 +4.101000 +0.042000 +0.084000 +0.016000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.092000 +0.326000 +0.122000 +4.756000 +0.031000 +0.000000 +0.025000 +0.121000 +0.000000 +0.000000 +0.982000 +0.756000 +7.058000 +13.020000 +16.997000 +0.212000 +0.023000 +0.166000 +7.285000 +0.000000 +0.722000 +0.040000 +2.071000 +0.684000 +2.769000 +6.387000 +1.126000 +0.044000 +0.498000 +7.044000 +21.608000 +6.055000 +3.113000 +7.647000 +0.029000 +3.997000 +0.460000 +0.302000 +1.961000 +5.372000 +4.934000 +0.858000 +0.664000 +2.766000 +5.424000 +20.185000 +2.555000 +0.003000 +4.471000 +1.417000 +0.011000 +0.001000 +0.015000 +0.013000 +3.041000 +0.146000 +0.030000 +17.337000 +0.017000 +0.010000 +0.018000 +1.383000 +0.651000 +0.025000 +0.003000 +9.241000 +0.133000 +5.680000 +2.247000 +0.021000 +2.024000 +1.422000 +1.130000 +0.390000 +5.684000 +2.077000 +4.742000 +2.659000 +6.247000 +3.509000 +0.078000 +1.257000 +0.351000 +1.997000 +5.839000 +0.120000 +0.055000 +0.000000 +0.000000 +0.031000 +2.938000 +0.105000 +5.821000 +6.687000 +2.827000 +3.397000 +1.400000 +0.105000 +24.195000 +0.760000 +2.460000 +0.694000 +0.104000 +0.992000 +0.861000 +0.000000 +0.000000 +0.019000 +0.027000 +0.000000 +0.006000 +0.449000 +2.429000 +0.017000 +3.216000 +5.792000 +0.260000 +0.739000 +0.676000 +5.276000 +1.113000 +1.548000 +5.329000 +5.543000 +5.330000 +1.234000 +1.729000 +11.922000 +6.901000 +13.340000 +0.556000 +2.166000 +5.507000 +0.860000 +0.457000 +2.927000 +1.226000 +20.325000 +6.387000 +19.549000 +1.253000 +16.266000 +3.286000 +0.038000 +5.391000 +8.222000 +3.556000 +5.101000 +5.393000 +8.465000 +0.244000 +0.596000 +0.023000 +0.134000 +0.082000 +0.110000 +0.189000 +0.093000 +0.107000 +0.027000 +0.204000 +4.160000 +0.111000 +10.894000 +13.317000 +3.509000 +2.426000 +2.336000 +3.791000 +0.540000 +0.710000 +2.112000 +8.979000 +9.985000 +16.621000 +4.798000 +22.610000 +3.081000 +4.445000 +0.136000 +1.251000 +1.558000 +7.013000 +18.930000 +4.584000 +10.546000 +2.745000 +1.489000 +0.694000 +4.383000 +0.512000 +0.336000 +0.019000 +0.020000 +0.003000 +0.033000 +0.100000 +0.014000 +0.000000 +0.024000 +0.027000 +0.027000 +0.050000 +0.004000 +0.771000 +3.356000 +9.455000 +10.090000 +5.324000 +1.527000 +1.164000 +0.109000 +8.855000 +0.676000 +0.006000 +1.999000 +1.177000 +2.648000 +7.489000 +2.147000 +1.293000 +1.709000 +0.209000 +9.013000 +4.655000 +3.144000 +0.054000 +0.780000 +13.747000 +3.633000 +2.289000 +0.620000 +0.263000 +0.332000 +0.087000 +0.008000 +0.005000 +0.037000 +0.024000 +0.236000 +0.952000 +1.408000 +4.687000 +1.889000 +1.334000 +0.149000 +4.149000 +0.557000 +0.243000 +0.012000 +0.013000 +0.003000 +0.250000 +3.633000 +0.106000 +0.000000 +0.009000 +0.070000 +0.560000 +0.004000 +0.000000 +0.000000 +0.000000 +0.000000 +0.020000 +0.004000 +0.000000 +0.002000 +0.014000 +0.007000 +0.063000 +0.041000 +0.000000 +0.000000 +0.797000 +1.460000 +0.018000 +1.212000 +2.321000 +1.786000 +5.932000 +0.001000 +0.038000 +0.011000 +0.012000 +0.013000 +0.000000 +0.000000 +0.000000 +0.000000 +0.021000 +0.666000 +0.534000 +1.129000 +2.978000 +3.948000 +6.386000 +5.374000 +15.351000 +6.450000 +0.725000 +3.641000 +1.561000 +2.701000 +0.805000 +0.000000 +0.002000 +0.003000 +0.013000 +0.150000 +0.124000 +0.018000 +2.387000 +1.289000 +3.846000 +0.785000 +1.053000 +0.010000 +0.000000 +3.994000 +0.023000 +0.000000 +0.040000 +0.059000 +0.039000 +0.020000 +0.011000 +0.637000 +1.651000 +10.803000 +23.133000 +51.014000 +6.016000 +3.482000 +0.269000 +4.264000 +15.008000 +2.028000 +9.192000 +3.227000 +5.702000 +21.877000 +0.242000 +1.505000 +3.692000 +0.713000 +9.788000 +12.331000 +2.532000 +15.464000 +1.674000 +6.475000 +4.143000 +0.303000 +0.269000 +0.428000 +0.000000 +0.000000 +1.715000 +11.733000 +0.791000 +9.512000 +3.885000 +1.407000 +2.894000 +3.602000 +1.997000 +7.772000 +0.889000 +4.195000 +0.098000 +1.633000 +8.224000 +1.671000 +0.199000 +0.047000 +0.000000 +0.000000 +0.054000 +0.016000 +0.053000 +2.438000 +0.056000 +0.109000 +0.000000 +0.000000 +0.000000 +0.000000 +0.043000 +6.127000 +0.255000 +16.765000 +8.461000 +0.531000 +0.075000 +4.467000 +6.011000 +0.025000 +0.061000 +0.011000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.003000 +0.018000 +0.027000 +0.010000 +0.020000 +0.901000 +0.000000 +0.010000 +0.007000 +0.000000 +0.001000 +0.000000 +0.099000 +0.076000 +0.002000 +0.003000 +0.053000 +0.500000 +0.006000 +1.042000 +0.410000 +0.353000 +4.042000 +3.861000 +6.819000 +0.024000 +0.746000 +9.937000 +1.189000 +0.947000 +0.738000 +1.967000 +1.128000 +0.026000 +0.000000 +0.000000 +3.323000 +0.084000 +0.008000 +0.001000 +1.044000 +0.016000 +12.757000 +0.055000 +0.250000 +0.053000 +0.214000 +0.195000 +1.683000 +0.449000 +0.003000 +0.032000 +0.015000 +0.016000 +0.027000 +0.025000 +0.048000 +0.032000 +0.000000 +0.049000 +0.978000 +5.971000 +0.405000 +0.015000 +0.036000 +2.529000 +0.144000 +0.019000 +0.005000 +0.141000 +0.008000 +0.009000 +2.067000 +0.198000 +1.511000 +0.396000 +0.562000 +1.043000 +0.530000 +0.027000 +0.013000 +0.412000 +15.377000 +8.735000 +11.976000 +2.959000 +2.026000 +0.077000 +1.576000 +0.021000 +0.125000 +0.095000 +2.637000 +1.165000 +9.338000 +9.050000 +8.927000 +0.600000 +0.933000 +6.978000 +4.306000 +4.059000 +12.508000 +5.297000 +6.020000 +0.109000 +0.093000 +0.100000 +0.055000 +0.045000 +0.039000 +0.028000 +0.002000 +0.000000 +0.007000 +0.000000 +0.570000 +0.159000 +1.198000 +2.362000 +0.191000 +8.415000 +14.581000 +12.294000 +0.472000 +0.372000 +17.666000 +3.118000 +2.995000 +9.973000 +2.610000 +2.990000 +3.682000 +7.216000 +5.981000 +15.907000 +0.093000 +0.876000 +4.014000 +7.855000 +4.906000 +4.924000 +8.734000 +4.941000 +3.735000 +3.983000 +34.786000 +0.326000 +2.195000 +0.606000 +0.982000 +0.423000 +0.005000 +0.045000 +1.872000 +1.968000 +14.164000 +4.925000 +1.054000 +2.961000 +0.830000 +11.030000 +0.926000 +0.691000 +0.016000 +0.023000 +0.041000 +0.080000 +0.070000 +0.032000 +0.003000 +0.000000 +0.017000 +0.039000 +0.022000 +0.002000 +0.138000 +0.927000 +5.002000 +0.491000 +0.467000 +2.664000 +4.697000 +0.013000 +0.004000 +11.295000 +1.013000 +1.818000 +0.940000 +0.079000 +0.142000 +0.136000 +1.681000 +6.685000 +0.729000 +7.410000 +3.844000 +7.748000 +3.866000 +0.079000 +0.158000 +0.601000 +0.130000 +0.008000 +0.014000 +2.488000 +3.514000 +6.418000 +3.009000 +0.175000 +0.102000 +1.412000 +0.297000 +9.436000 +21.291000 +1.347000 +0.012000 +6.376000 +0.004000 +0.006000 +0.145000 +5.093000 +3.781000 +4.686000 +0.175000 +1.393000 +2.785000 +4.251000 +3.795000 +0.093000 +0.593000 +3.674000 +0.151000 +3.758000 +0.644000 +0.000000 +0.015000 +0.004000 +0.043000 +0.867000 +1.585000 +0.887000 +0.063000 +6.046000 +2.760000 +0.880000 +22.262000 +1.430000 +0.095000 +0.007000 +2.970000 +0.055000 +0.000000 +0.002000 +0.011000 +0.043000 +0.008000 +0.028000 +0.000000 +0.000000 +0.000000 +0.007000 +0.179000 +1.166000 +0.004000 +0.026000 +0.000000 +0.000000 +0.000000 +0.000000 +0.013000 +0.000000 +0.017000 +1.516000 +11.136000 +5.590000 +2.631000 +0.068000 +10.042000 +0.192000 +12.844000 +0.002000 +1.698000 +3.367000 +1.901000 +0.011000 +0.000000 +0.000000 +0.229000 +1.200000 +1.017000 +1.636000 +0.781000 +0.000000 +0.275000 +13.026000 +6.668000 +0.270000 +12.748000 +5.769000 +1.118000 +1.663000 +1.006000 +6.627000 +1.426000 +0.414000 +0.662000 +0.000000 +3.938000 +3.252000 +2.680000 +0.060000 +8.967000 +11.556000 +9.024000 +0.293000 +13.628000 +5.504000 +17.607000 +0.304000 +0.029000 +0.006000 +0.127000 +0.120000 +3.315000 +1.853000 +6.078000 +0.908000 +0.013000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.001000 +1.305000 +0.093000 +15.895000 +13.195000 +1.665000 +1.723000 +5.750000 +3.543000 +1.675000 +3.112000 +1.898000 +9.974000 +6.397000 +0.462000 +12.347000 +2.345000 +1.331000 +0.259000 +2.790000 +31.572000 +3.905000 +12.798000 +0.070000 +0.862000 +1.385000 +0.054000 +2.009000 +1.693000 +1.467000 +0.657000 +0.015000 +0.008000 +0.002000 +5.073000 +1.208000 +6.707000 +8.510000 +1.959000 +29.353000 +34.623000 +7.251000 +0.368000 +5.724000 +0.632000 +1.230000 +5.539000 +1.806000 +0.030000 +0.351000 +3.040000 +0.081000 +0.003000 +0.005000 +0.016000 +0.080000 +0.214000 +0.179000 +0.228000 +0.006000 +0.009000 +0.065000 +0.044000 +1.250000 +4.257000 +3.174000 +1.498000 +1.903000 +16.520000 +0.772000 +0.033000 +7.393000 +0.210000 +1.077000 +4.224000 +1.402000 +0.003000 +0.328000 +9.908000 +0.297000 +0.162000 +0.289000 +1.430000 +1.283000 +10.007000 +2.852000 +1.025000 +3.589000 +0.144000 +4.380000 +5.866000 +0.446000 +0.008000 +0.028000 +1.978000 +10.809000 +1.674000 +4.672000 +0.182000 +1.698000 +0.270000 +1.710000 +3.274000 +9.320000 +13.336000 +4.128000 +3.901000 +0.245000 +2.245000 +0.187000 +0.665000 +0.021000 +2.371000 +0.440000 +0.051000 +0.003000 +0.713000 +0.613000 +3.678000 +3.644000 +1.426000 +0.274000 +1.167000 +0.685000 +0.178000 +0.092000 +1.475000 +1.462000 +6.019000 +8.027000 +5.048000 +1.071000 +0.313000 +1.482000 +0.046000 +0.172000 +0.732000 +3.350000 +25.222000 +0.463000 +0.502000 +1.102000 +0.593000 +0.737000 +7.607000 +0.549000 +1.089000 +0.017000 +0.017000 +0.001000 +0.000000 +0.000000 +0.067000 +0.182000 +0.000000 +0.000000 +0.000000 +0.073000 +0.265000 +0.000000 +1.679000 +1.021000 +0.970000 +1.124000 +0.079000 +0.000000 +0.090000 +4.888000 +8.278000 +1.588000 +0.752000 +2.523000 +1.204000 +7.442000 +6.199000 +8.148000 +2.827000 +1.496000 +7.643000 +2.857000 +0.052000 +7.797000 +0.029000 +0.122000 +8.520000 +0.259000 +0.886000 +0.003000 +2.364000 +10.912000 +5.840000 +0.002000 +0.503000 +0.162000 +0.056000 +0.299000 +0.334000 +1.298000 +1.103000 +4.821000 +1.701000 +0.153000 +0.386000 +0.022000 +0.374000 +0.621000 +0.112000 +1.607000 +0.001000 +0.039000 +1.134000 +0.014000 +0.020000 +0.124000 +0.272000 +0.089000 +0.063000 +0.773000 +6.326000 +0.523000 +0.262000 +0.040000 +4.053000 +2.913000 +1.314000 +1.582000 +0.015000 +0.691000 +0.011000 +0.157000 +0.003000 +0.000000 +0.000000 +0.000000 +0.000000 +0.002000 +0.001000 +0.022000 +0.943000 +2.131000 +1.159000 +3.263000 +1.064000 +5.892000 +0.042000 +0.140000 +0.017000 +0.005000 +0.002000 +0.075000 +0.050000 +0.008000 +1.978000 +0.643000 +4.873000 +1.470000 +3.370000 +0.018000 +0.000000 +0.015000 +0.171000 +0.002000 +0.023000 +0.001000 +0.000000 +0.000000 +0.000000 +0.006000 +0.013000 +0.000000 +0.000000 +0.431000 +0.000000 +6.148000 +20.116000 +1.542000 +0.949000 +0.720000 +0.133000 +2.914000 +2.045000 +1.150000 +2.597000 +1.405000 +3.556000 +1.596000 +1.180000 +0.021000 +0.012000 +0.283000 +1.565000 +11.822000 +2.777000 +4.874000 +2.697000 +2.238000 +4.135000 +6.783000 +0.357000 +0.004000 +0.000000 +1.866000 +0.945000 +0.827000 +0.036000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.026000 +12.685000 +16.028000 +0.112000 +0.035000 +0.480000 +7.861000 +3.114000 +0.151000 +0.174000 +0.302000 +3.976000 +0.055000 +5.745000 +1.146000 +0.244000 +1.091000 +0.025000 +0.233000 +1.292000 +0.000000 +0.004000 +0.542000 +2.307000 +2.602000 +0.015000 +0.754000 +1.593000 +0.000000 +12.077000 +0.825000 +3.081000 +7.609000 +1.400000 +0.368000 +0.977000 +0.000000 +2.408000 +11.150000 +4.654000 +3.704000 +3.872000 +8.035000 +56.409000 +1.818000 +0.063000 +0.047000 +6.523000 +2.521000 +2.732000 +2.337000 +0.010000 +2.429000 +1.094000 +3.425000 +10.050000 +0.910000 +0.447000 +5.787000 +0.077000 +0.055000 +2.556000 +0.025000 +0.005000 +3.249000 +0.000000 +0.000000 +1.986000 +0.070000 +0.000000 +0.000000 +0.624000 +2.608000 +0.360000 +0.856000 +0.580000 +0.001000 +2.786000 +6.073000 +0.051000 +3.509000 +6.359000 +0.881000 +7.040000 +1.053000 +2.310000 +0.720000 +1.910000 +12.551000 +3.515000 +9.482000 +4.297000 +3.352000 +0.154000 +1.845000 +0.348000 +0.806000 +0.002000 +0.001000 +0.000000 +0.000000 +0.059000 +0.152000 +0.141000 +0.606000 +0.000000 +0.000000 +0.042000 +0.012000 +1.731000 +0.568000 +0.232000 +0.073000 +0.012000 +0.002000 +0.000000 +0.060000 +0.094000 +0.068000 +0.000000 +1.584000 +2.037000 +0.169000 +0.012000 +7.933000 +0.021000 +0.012000 +2.783000 +1.028000 +0.164000 +0.000000 +0.056000 +0.790000 +2.283000 +0.156000 +0.063000 +0.158000 +1.467000 +3.662000 +3.266000 +1.698000 +0.418000 +6.874000 +4.538000 +0.135000 +0.227000 +2.300000 +0.022000 +0.511000 +1.912000 +27.232000 +1.773000 +4.420000 +5.983000 +0.273000 +1.670000 +9.848000 +5.029000 +0.133000 +0.788000 +0.062000 +8.084000 +15.123000 +2.330000 +0.428000 +12.331000 +6.686000 +20.410000 +2.420000 +3.350000 +7.286000 +5.112000 +3.071000 +8.272000 +6.283000 +12.565000 +0.856000 +0.158000 +51.477000 +3.169000 +1.842000 +3.490000 +4.665000 +0.275000 +7.518000 +11.784000 +4.107000 +3.184000 +0.600000 +0.574000 +0.173000 +0.060000 +0.070000 +6.555000 +2.565000 +5.611000 +9.982000 +1.269000 +2.872000 +0.999000 +1.492000 +1.005000 +5.076000 +0.844000 +1.966000 +2.671000 +3.143000 +0.133000 +1.312000 +2.315000 +1.796000 +2.048000 +3.872000 +0.337000 +2.713000 +6.443000 +1.775000 +1.153000 +1.856000 +0.611000 +3.192000 +3.182000 +2.599000 +1.975000 +1.027000 +5.971000 +10.058000 +0.233000 +0.217000 +0.196000 +0.619000 +0.030000 +12.828000 +0.166000 +0.182000 +0.312000 +0.011000 +0.258000 +0.848000 +0.598000 +0.007000 +0.011000 +0.157000 +3.330000 +0.407000 +1.070000 +3.487000 +0.095000 +0.471000 +1.712000 +3.251000 +2.519000 +0.520000 +2.683000 +0.601000 +0.039000 +3.629000 +0.858000 +0.122000 +1.823000 +0.294000 +0.043000 +3.137000 +1.221000 +3.235000 +3.171000 +0.582000 +19.776000 +0.829000 +1.364000 +0.156000 +0.318000 +0.019000 +0.019000 +0.102000 +0.341000 +0.051000 +0.013000 +0.067000 +0.008000 +0.032000 +2.754000 +0.004000 +0.239000 +0.054000 +0.014000 +0.115000 +0.274000 +0.503000 +8.550000 +0.268000 +1.820000 +4.156000 +2.086000 +14.911000 +6.233000 +0.221000 +0.030000 +11.507000 +10.232000 +2.608000 +0.115000 +3.818000 +4.239000 +0.392000 +2.398000 +0.578000 +0.844000 +0.000000 +0.000000 +0.000000 +0.000000 +0.012000 +0.124000 +0.000000 +0.000000 +0.000000 +0.000000 +0.057000 +0.725000 +0.005000 +0.000000 +0.000000 +0.000000 +0.023000 +0.675000 +0.004000 +0.005000 +0.027000 +2.597000 +0.224000 +0.440000 +0.270000 +0.985000 +0.017000 +0.014000 +3.051000 +1.271000 +0.025000 +0.121000 +1.502000 +0.498000 +0.150000 +0.017000 +0.020000 +0.025000 +0.129000 +0.097000 +0.004000 +0.021000 +0.003000 +1.829000 +0.004000 +0.023000 +0.092000 +0.459000 +3.298000 +0.404000 +0.706000 +4.617000 +0.514000 +0.022000 +6.156000 +0.114000 +0.000000 +0.430000 +0.016000 +4.079000 +5.745000 +8.518000 +4.875000 +2.406000 +0.015000 +0.000000 +6.139000 +0.625000 +0.000000 +0.000000 +0.000000 +0.001000 +0.015000 +0.000000 +0.000000 +0.000000 +0.010000 +0.000000 +0.000000 +4.142000 +0.012000 +1.242000 +6.154000 +0.000000 +1.517000 +3.189000 +0.028000 +0.973000 +0.003000 +0.093000 +1.278000 +0.315000 +0.412000 +0.638000 +0.596000 +0.725000 +7.410000 +13.032000 +4.151000 +2.894000 +1.045000 +1.223000 +5.504000 +25.341000 +4.986000 +0.220000 +0.000000 +1.455000 +0.213000 +0.168000 +0.178000 +0.250000 +0.006000 +1.098000 +0.228000 +0.407000 +1.465000 +0.103000 +0.717000 +0.227000 +1.315000 +3.736000 +0.001000 +0.727000 +0.809000 +0.423000 +3.514000 +10.503000 +3.964000 +0.105000 +0.003000 +2.501000 +0.162000 +1.836000 +8.510000 +0.049000 +0.750000 +4.206000 +1.293000 +0.004000 +0.015000 +0.662000 +0.584000 +0.759000 +0.012000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.002000 +0.749000 +22.581000 +0.408000 +0.422000 +6.610000 +4.386000 +0.667000 +3.683000 +3.043000 +0.203000 +0.321000 +0.032000 +0.223000 +7.919000 +0.794000 +0.000000 +1.749000 +8.954000 +8.960000 +0.057000 +0.355000 +1.307000 +0.427000 +7.938000 +0.128000 +15.401000 +0.231000 +22.704000 +0.136000 +0.388000 +4.722000 +0.062000 +0.122000 +0.079000 +0.004000 +0.000000 +0.000000 +0.044000 +0.518000 +0.191000 +0.799000 +0.090000 +1.904000 +0.718000 +0.100000 +0.515000 +4.372000 +3.967000 +0.019000 +0.024000 +5.918000 +2.071000 +0.256000 +1.544000 +1.020000 +1.369000 +0.779000 +12.882000 +1.076000 +18.928000 +0.527000 +0.144000 +0.800000 +9.702000 +8.065000 +0.004000 +18.388000 +3.673000 +1.505000 +2.235000 +0.543000 +1.105000 +0.330000 +1.924000 +0.459000 +2.233000 +6.546000 +5.225000 +0.324000 +0.868000 +1.882000 +2.368000 +0.719000 +4.128000 +4.293000 +5.150000 +6.861000 +2.022000 +1.095000 +0.362000 +0.176000 +0.406000 +0.120000 +0.000000 +0.260000 +0.509000 +0.120000 +0.712000 +0.589000 +1.996000 +1.150000 +3.930000 +0.258000 +0.045000 +0.040000 +0.000000 +0.018000 +1.451000 +0.725000 +0.102000 +0.254000 +0.310000 +1.021000 +9.300000 +0.664000 +0.184000 +0.117000 +0.591000 +0.001000 +0.039000 +0.511000 +6.322000 +0.321000 +0.920000 +7.819000 +2.497000 +13.978000 +1.441000 +1.963000 +1.993000 +2.169000 +13.760000 +4.085000 +0.013000 +0.040000 +0.011000 +0.023000 +0.030000 +0.071000 +0.137000 +0.209000 +1.311000 +4.682000 +0.131000 +0.256000 +0.055000 +0.135000 +0.046000 +0.463000 +1.796000 +10.965000 +12.682000 +8.432000 +12.888000 +4.371000 +0.062000 +3.658000 +0.204000 +2.591000 +6.865000 +8.926000 +1.925000 +1.549000 +5.390000 +0.033000 +0.871000 +5.813000 +0.579000 +2.135000 +0.317000 +2.885000 +0.373000 +0.626000 +8.134000 +0.755000 +0.601000 +0.000000 +0.007000 +0.018000 +0.068000 +0.372000 +0.033000 +0.040000 +1.100000 +4.647000 +6.038000 +5.582000 +1.713000 +1.699000 +0.037000 +0.176000 +0.158000 +0.200000 +0.003000 +0.003000 +0.013000 +0.002000 +0.001000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.815000 +0.840000 +3.954000 +3.072000 +2.140000 +0.826000 +1.810000 +3.811000 +0.191000 +0.008000 +0.000000 +0.000000 +0.006000 +0.591000 +0.012000 +0.123000 +0.000000 +0.010000 +0.001000 +0.002000 +0.000000 +0.000000 +0.000000 +0.000000 +0.032000 +0.859000 +0.179000 +0.000000 +0.000000 +0.000000 +0.000000 +0.058000 +0.001000 +0.002000 +0.000000 +0.000000 +0.002000 +1.062000 +0.306000 +3.468000 +17.083000 +1.501000 +1.176000 +1.145000 +0.959000 +1.437000 +0.614000 +0.627000 +0.637000 +0.493000 +1.100000 +0.030000 +0.399000 +0.696000 +5.597000 +3.785000 +1.799000 +0.097000 +9.024000 +0.824000 +1.054000 +1.111000 +1.728000 +0.001000 +0.000000 +0.000000 +0.000000 +0.148000 +1.007000 +0.003000 +1.714000 +1.480000 +0.064000 +1.005000 +3.795000 +9.401000 +0.953000 +0.003000 +3.615000 +0.612000 +0.150000 +7.707000 +2.707000 +0.369000 +5.581000 +9.660000 +10.882000 +0.273000 +1.702000 +1.052000 +0.090000 +0.016000 +0.078000 +0.562000 +0.000000 +0.005000 +0.006000 +0.000000 +0.012000 +6.699000 +8.052000 +8.221000 +2.759000 +0.788000 +0.498000 +0.045000 +0.000000 +0.000000 +1.878000 +8.629000 +9.428000 +7.030000 +6.421000 +8.765000 +0.097000 +0.354000 +0.000000 +0.000000 +0.196000 +0.568000 +0.045000 +0.664000 +0.000000 +0.000000 +0.005000 +1.102000 +0.752000 +0.498000 +6.775000 +0.073000 +20.789000 +0.391000 +2.646000 +0.055000 +6.976000 +17.546000 +2.183000 +1.169000 +0.093000 +0.643000 +5.547000 +0.003000 +4.063000 +0.436000 +3.223000 +0.586000 +0.001000 +0.208000 +0.749000 +9.181000 +9.045000 +5.350000 +0.110000 +0.041000 +1.331000 +0.023000 +0.000000 +0.018000 +1.755000 +0.490000 +2.216000 +10.519000 +1.318000 +0.914000 +0.154000 +1.151000 +0.763000 +2.892000 +0.882000 +0.119000 +0.016000 +11.004000 +5.916000 +2.096000 +0.821000 +0.668000 +5.945000 +0.056000 +0.111000 +0.177000 +1.369000 +1.550000 +0.000000 +0.000000 +0.000000 +0.000000 +0.028000 +1.248000 +0.059000 +0.039000 +4.014000 +4.865000 +0.028000 +3.328000 +6.894000 +3.895000 +9.901000 +19.863000 +0.696000 +0.007000 +0.019000 +0.101000 +4.550000 +2.136000 +0.006000 +1.031000 +4.068000 +0.027000 +0.473000 +0.000000 +5.207000 +0.294000 +2.155000 +0.048000 +3.163000 +0.790000 +0.678000 +3.565000 +1.431000 +7.781000 +5.893000 +1.817000 +0.014000 +0.147000 +1.199000 +0.910000 +0.444000 +3.454000 +2.289000 +0.687000 +0.110000 +0.071000 +0.009000 +0.067000 +0.056000 +0.020000 +0.254000 +0.298000 +0.488000 +1.143000 +1.933000 +5.473000 +2.922000 +3.386000 +0.350000 +3.333000 +0.676000 +2.410000 +1.947000 +4.057000 +4.901000 +2.746000 +4.873000 +8.002000 +16.142000 +2.463000 +1.054000 +3.117000 +6.902000 +9.950000 +3.191000 +0.295000 +1.150000 +0.400000 +0.060000 +2.926000 +0.835000 +6.053000 +0.247000 +5.001000 +1.146000 +2.349000 +0.380000 +2.220000 +3.314000 +3.488000 +6.048000 +1.265000 +4.287000 +3.812000 +15.820000 +5.463000 +4.662000 +0.319000 +0.198000 +0.148000 +0.151000 +0.195000 +0.308000 +0.893000 +0.016000 +0.068000 +0.081000 +0.111000 +0.032000 +0.764000 +2.571000 +4.689000 +1.060000 +0.939000 +0.026000 +8.234000 +0.222000 +6.424000 +2.078000 +0.121000 +0.868000 +0.300000 +0.120000 +0.038000 +0.004000 +0.000000 +4.423000 +1.047000 +0.276000 +0.077000 +0.138000 +5.625000 +0.185000 +0.126000 +0.189000 +0.186000 +0.009000 +0.003000 +0.079000 +0.771000 +2.767000 +0.036000 +1.150000 +0.763000 +6.931000 +0.398000 +0.399000 +0.045000 +0.184000 +3.067000 +0.036000 +0.000000 +0.020000 +0.088000 +1.962000 +7.402000 +0.010000 +1.609000 +2.116000 +0.064000 +0.313000 +0.094000 +0.008000 +0.023000 +0.000000 +0.000000 +0.001000 +0.252000 +1.295000 +0.017000 +0.020000 +0.039000 +0.017000 +0.011000 +0.013000 +0.013000 +0.024000 +0.000000 +0.000000 +0.000000 +0.000000 +0.001000 +0.025000 +0.008000 +2.118000 +17.368000 +7.311000 +0.002000 +0.515000 +1.506000 +0.669000 +2.573000 +3.520000 +4.815000 +3.675000 +0.294000 +1.860000 +0.155000 +0.000000 +8.165000 +16.944000 +6.755000 +1.528000 +5.190000 +2.888000 +0.208000 +0.592000 +14.033000 +19.191000 +2.424000 +0.778000 +15.918000 +0.273000 +0.098000 +0.003000 +0.004000 +0.516000 +0.123000 +0.024000 +5.766000 +3.780000 +4.911000 +25.168000 +11.531000 +0.039000 +0.780000 +1.271000 +1.101000 +0.093000 +0.787000 +0.859000 +7.215000 +0.000000 +0.009000 +0.000000 +0.000000 +0.004000 +0.001000 +0.000000 +0.000000 +0.000000 +0.000000 +0.042000 +7.640000 +0.696000 +0.531000 +3.574000 +0.427000 +0.824000 +3.150000 +13.830000 +12.173000 +17.515000 +1.742000 +1.547000 +0.092000 +0.352000 +0.041000 +20.908000 +8.484000 +0.255000 +0.575000 +0.658000 +0.000000 +15.366000 +15.182000 +3.452000 +3.320000 +0.019000 +0.267000 +1.744000 +11.088000 +2.679000 +4.316000 +0.345000 +2.445000 +1.998000 +5.816000 +8.665000 +24.084000 +0.305000 +2.277000 +0.205000 +9.136000 +8.759000 +0.016000 +0.013000 +1.084000 +0.392000 +1.571000 +4.012000 +4.988000 +4.872000 +0.238000 +0.042000 +0.033000 +0.087000 +0.127000 +0.370000 +1.819000 +0.514000 +1.068000 +1.580000 +1.475000 +1.205000 +2.476000 +0.814000 +0.404000 +9.129000 +7.544000 +3.214000 +6.754000 +0.014000 +0.000000 +0.000000 +0.000000 +1.566000 +0.959000 +0.062000 +18.534000 +0.551000 +7.260000 +1.694000 +5.540000 +1.721000 +5.067000 +0.858000 +0.481000 +3.608000 +6.804000 +1.751000 +5.559000 +0.258000 +3.735000 +9.676000 +0.440000 +0.076000 +0.186000 +0.014000 +0.067000 +0.000000 +0.252000 +0.254000 +0.004000 +0.356000 +7.687000 +1.755000 +4.785000 +0.574000 +1.567000 +0.010000 +2.772000 +2.982000 +0.645000 +0.066000 +4.112000 +5.707000 +0.074000 +1.264000 +47.214000 +57.988000 +2.721000 +0.150000 +1.260000 +0.111000 +3.450000 +2.901000 +6.481000 +8.561000 +0.521000 +2.167000 +0.011000 +0.004000 +0.000000 +0.034000 +0.005000 +6.834000 +18.154000 +0.089000 +0.884000 +2.885000 +11.357000 +6.754000 +8.270000 +0.123000 +0.075000 +0.100000 +1.530000 +0.283000 +1.502000 +0.464000 +0.682000 +1.615000 +2.737000 +1.212000 +0.993000 +4.285000 +1.208000 +4.562000 +0.708000 +0.175000 +0.167000 +1.887000 +1.054000 +0.133000 +1.942000 +0.733000 +0.062000 +1.686000 +0.592000 +0.001000 +0.000000 +1.280000 +5.406000 +0.159000 +6.402000 +2.069000 +12.456000 +7.010000 +1.580000 +5.107000 +20.423000 +36.835000 +12.282000 +0.903000 +0.018000 +0.477000 +1.006000 +1.371000 +3.580000 +0.784000 +0.238000 +7.130000 +5.206000 +0.401000 +0.092000 +2.054000 +0.515000 +0.059000 +0.115000 +14.969000 +2.579000 +0.749000 +3.528000 +0.470000 +4.189000 +23.416000 +5.317000 +12.251000 +2.091000 +3.053000 +2.153000 +7.126000 +7.022000 +4.787000 +9.459000 +12.441000 +8.566000 +0.335000 +1.992000 +0.517000 +0.058000 +0.139000 +0.035000 +0.244000 +1.453000 +0.061000 +0.657000 +0.764000 +0.026000 +0.691000 +3.027000 +1.223000 +0.077000 +0.050000 +2.908000 +1.117000 +4.056000 +3.977000 +1.358000 +0.296000 +0.205000 +6.145000 +7.536000 +4.114000 +10.108000 +9.351000 +4.343000 +2.379000 +0.889000 +0.440000 +0.234000 +6.011000 +1.899000 +1.487000 +0.060000 +0.147000 +0.422000 +5.312000 +0.665000 +0.012000 +5.205000 +5.936000 +0.000000 +0.000000 +0.018000 +0.004000 +0.102000 +0.336000 +0.000000 +0.977000 +2.253000 +0.473000 +0.575000 +0.002000 +0.005000 +0.046000 +0.026000 +0.024000 +0.001000 +0.015000 +0.003000 +0.199000 +1.083000 +3.353000 +11.843000 +0.765000 +1.785000 +0.882000 +0.447000 +1.016000 +1.434000 +6.800000 +7.186000 +13.014000 +1.224000 +2.056000 +0.891000 +5.407000 +1.197000 +0.082000 +0.344000 +0.605000 +0.676000 +0.202000 +0.092000 +0.305000 +0.015000 +0.049000 +0.114000 +0.012000 +0.203000 +0.540000 +0.000000 +0.007000 +0.132000 +0.015000 +0.000000 +0.242000 +2.895000 +1.155000 +2.115000 +0.851000 +0.498000 +1.970000 +4.435000 +3.209000 +0.000000 +0.247000 +0.200000 +0.029000 +0.478000 +4.059000 +1.799000 +2.431000 +1.369000 +0.133000 +0.000000 +0.003000 +0.000000 +0.114000 +0.722000 +0.105000 +0.000000 +0.017000 +1.277000 +8.120000 +2.309000 +1.322000 +1.595000 +1.207000 +0.937000 +18.855000 +2.259000 +5.272000 +17.884000 +0.095000 +0.612000 +3.624000 +0.631000 +1.228000 +5.294000 +0.021000 +0.000000 +0.801000 +1.840000 +3.337000 +5.506000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.017000 +0.061000 +0.000000 +0.026000 +1.867000 +2.426000 +1.831000 +4.171000 +0.347000 +0.000000 +0.000000 +0.000000 +0.524000 +1.269000 +5.737000 +8.203000 +0.007000 +0.000000 +0.000000 +1.199000 +5.152000 +0.000000 +0.347000 +0.022000 +1.766000 +0.484000 +0.358000 +0.015000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.092000 +0.018000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.012000 +0.113000 +5.618000 +0.051000 +3.941000 +0.000000 +0.641000 +39.008000 +4.995000 +1.430000 +8.934000 +0.321000 +0.596000 +2.651000 +3.742000 +15.549000 +0.003000 +0.000000 +0.074000 +1.138000 +0.066000 +2.265000 +1.880000 +0.023000 +0.170000 +8.811000 +2.808000 +7.506000 +0.628000 +0.000000 +0.000000 +0.079000 +0.644000 +10.433000 +13.351000 +0.189000 +0.025000 +0.000000 +0.003000 +0.012000 +0.128000 +0.003000 +0.001000 +0.011000 +0.000000 +0.000000 +0.116000 +30.904000 +0.461000 +0.076000 +3.082000 +0.092000 +1.784000 +2.987000 +1.593000 +0.102000 +4.065000 +3.288000 +1.104000 +0.085000 +2.795000 +0.044000 +0.007000 +0.008000 +0.044000 +0.099000 +0.352000 +0.005000 +0.083000 +0.005000 +0.018000 +0.000000 +0.031000 +7.815000 +10.017000 +6.012000 +0.107000 +0.096000 +0.428000 +0.342000 +1.391000 +2.192000 +0.567000 +1.285000 +3.799000 +12.165000 +3.452000 +8.624000 +0.018000 +1.006000 +8.676000 +3.332000 +4.848000 +7.474000 +9.354000 +0.000000 +13.646000 +1.590000 +7.478000 +8.331000 +0.386000 +0.878000 +3.185000 +0.719000 +9.979000 +6.028000 +0.124000 +4.402000 +1.144000 +0.864000 +1.878000 +2.179000 +0.147000 +2.058000 +0.030000 +1.114000 +0.618000 +0.003000 +0.000000 +0.356000 +3.454000 +0.007000 +20.109000 +7.835000 +0.677000 +0.126000 +0.272000 +0.018000 +0.043000 +0.015000 +0.066000 +0.493000 +0.003000 +0.031000 +0.000000 +0.015000 +0.235000 +7.403000 +0.052000 +0.904000 +1.873000 +0.135000 +0.001000 +0.030000 +0.205000 +5.417000 +2.722000 +1.815000 +6.899000 +0.030000 +11.231000 +3.166000 +7.728000 +6.378000 +5.847000 +13.651000 +10.878000 +1.531000 +0.583000 +13.014000 +1.068000 +0.595000 +10.514000 +1.998000 +9.359000 +2.490000 +5.444000 +2.766000 +11.989000 +5.449000 +3.149000 +10.362000 +8.461000 +0.762000 +0.088000 +4.143000 +1.208000 +1.441000 +4.006000 +1.998000 +2.058000 +3.152000 +6.700000 +0.136000 +6.188000 +4.202000 +2.936000 +5.614000 +2.889000 +12.136000 +2.094000 +7.235000 +4.058000 +0.050000 +10.511000 +5.594000 +1.738000 +0.000000 +3.373000 +11.713000 +4.676000 +1.581000 +11.460000 +9.829000 +0.487000 +4.706000 +18.262000 +4.735000 +10.813000 +4.403000 +0.191000 +2.485000 +0.733000 +0.475000 +3.223000 +4.660000 +2.283000 +4.414000 +0.974000 +2.416000 +1.507000 +8.062000 +0.118000 +0.323000 +7.603000 +0.725000 +0.123000 +0.038000 +0.561000 +2.976000 +0.000000 +0.008000 +0.197000 +0.011000 +0.052000 +0.059000 +0.014000 +0.001000 +0.015000 +0.020000 +2.782000 +0.003000 +4.397000 +0.470000 +2.583000 +1.238000 +0.114000 +2.615000 +5.119000 +5.170000 +8.102000 +0.479000 +0.025000 +0.128000 +6.109000 +0.261000 +1.453000 +0.842000 +0.450000 +3.557000 +6.605000 +0.480000 +0.033000 +0.076000 +0.024000 +0.283000 +0.219000 +0.004000 +0.005000 +0.000000 +0.003000 +0.000000 +0.000000 +0.000000 +0.000000 +6.455000 +1.693000 +3.842000 +6.771000 +1.632000 +1.043000 +0.229000 +0.027000 +4.554000 +4.521000 +0.006000 +0.062000 +0.684000 +1.089000 +3.197000 +2.609000 +3.162000 +4.281000 +12.438000 +4.887000 +11.996000 +1.132000 +0.023000 +0.069000 +0.000000 +0.000000 +0.181000 +0.010000 +0.547000 +0.003000 +14.437000 +11.266000 +5.120000 +5.594000 +0.188000 +2.118000 +16.119000 +1.121000 +0.003000 +0.004000 +0.024000 +1.882000 +1.042000 +13.874000 +0.218000 +0.011000 +8.604000 +0.998000 +3.630000 +2.617000 +0.049000 +0.000000 +0.742000 +0.492000 +1.590000 +0.000000 +0.003000 +0.006000 +0.014000 +0.006000 +0.000000 +0.001000 +0.000000 +0.041000 +0.000000 +0.000000 +0.503000 +0.171000 +2.451000 +0.000000 +0.000000 +0.074000 +0.320000 +3.604000 +13.284000 +0.730000 +0.684000 +3.141000 +0.012000 +0.003000 +0.006000 +0.589000 +4.312000 +1.291000 +0.069000 +2.250000 +0.061000 +0.055000 +8.492000 +1.148000 +0.006000 +0.003000 +0.000000 +0.000000 +0.000000 +2.318000 +2.531000 +0.025000 +0.006000 +0.071000 +0.677000 +8.256000 +14.700000 +1.051000 +0.025000 +0.000000 +8.422000 +0.008000 +13.400000 +0.013000 +13.918000 +1.304000 +1.372000 +0.738000 +3.478000 +1.795000 +0.201000 +2.255000 +0.800000 +1.610000 +0.036000 +1.410000 +0.477000 +3.635000 +0.094000 +0.770000 +0.046000 +0.000000 +2.657000 +2.571000 +0.199000 +0.182000 +1.916000 +0.001000 +0.000000 +0.000000 +0.000000 +8.797000 +0.318000 +0.000000 +0.001000 +0.008000 +0.001000 +0.001000 +0.012000 +0.078000 +1.948000 +0.102000 +0.102000 +0.201000 +0.399000 +0.529000 +0.039000 +0.016000 +1.571000 +0.810000 +0.241000 +0.057000 +0.015000 +0.000000 +0.067000 +0.249000 +0.177000 +0.008000 +0.000000 +2.290000 +0.022000 +18.502000 +0.317000 +2.797000 +3.864000 +1.055000 +0.994000 +0.190000 +1.642000 +3.916000 +4.328000 +10.155000 +4.206000 +3.246000 +2.480000 +0.800000 +4.113000 +1.695000 +0.620000 +0.407000 +0.583000 +0.962000 +1.126000 +5.115000 +0.035000 +3.603000 +0.025000 +1.218000 +2.064000 +1.805000 +0.051000 +1.678000 +1.551000 +8.495000 +3.676000 +0.126000 +0.213000 +5.766000 +4.943000 +0.430000 +16.031000 +0.266000 +3.784000 +6.700000 +0.169000 +2.150000 +0.055000 +5.483000 +5.229000 +0.607000 +0.042000 +0.222000 +3.735000 +3.023000 +0.826000 +1.511000 +0.090000 +0.143000 +0.918000 +0.075000 +0.519000 +0.019000 +0.690000 +2.907000 +0.887000 +4.025000 +7.291000 +2.833000 +2.765000 +0.533000 +2.625000 +0.619000 +4.224000 +1.210000 +2.956000 +2.128000 +0.804000 +0.978000 +5.989000 +4.413000 +0.881000 +0.507000 +3.135000 +2.478000 +0.154000 +0.106000 +0.081000 +1.224000 \ No newline at end of file diff --git a/hydromodel/models/configuration.py b/hydromodel/models/configuration.py new file mode 100644 index 0000000..219abd8 --- /dev/null +++ b/hydromodel/models/configuration.py @@ -0,0 +1,27 @@ +import yaml +import numpy as np +from hydromodel.models.xaj import xaj_state as xaj_state + + +def read_config(config_file): + with open(config_file, encoding='utf8') as f: + config = yaml.safe_load(f) + return config + + +def extract_forcing(forcing_data): + # p_and_e_df = forcing_data[["rainfall[mm]", "TURC [mm d-1]"]] + p_and_e_df = forcing_data[["prcp(mm/day)", "petfao56(mm/day)"]] + p_and_e = np.expand_dims(p_and_e_df.values, axis=1) + return p_and_e_df, p_and_e + + +def warmup(p_and_e_warmup, params_state, warmup_length, model_info): + q_sim, es, *w0, w1, w2, s0, fr0, qi0, qg0 = xaj_state( + p_and_e_warmup, + params_state, + warmup_length=warmup_length, + model_info=model_info, + return_state=True, + ) + return q_sim, es, *w0, w1, w2, s0, fr0, qi0, qg0 diff --git a/hydromodel/models/xaj.py b/hydromodel/models/xaj.py index 614d3c0..665fb4b 100644 --- a/hydromodel/models/xaj.py +++ b/hydromodel/models/xaj.py @@ -885,3 +885,336 @@ def xaj( if return_state: return q_sim, es, *w, s, fr, qi, qg return q_sim, es + + +def xaj_runoff( + p_and_e, + params_runoff: Union[np.array, list], + *w0, + s0, + fr0, + **kwargs, +) -> Union[tuple, np.array]: + model_name = kwargs.get("name", "xaj") + source_type = kwargs.get("source_type", "sources") + source_book = kwargs.get("source_book", "HF") + # params + param_ranges = MODEL_PARAM_DICT[model_name]["param_range"] + xaj_params = [ + (value[1] - value[0]) * params_runoff[:, i] + value[0] + for i, (key, value) in enumerate(param_ranges.items()) + ] + k = xaj_params[0] + b = xaj_params[1] + im = xaj_params[2] + um = xaj_params[3] + lm = xaj_params[4] + dm = xaj_params[5] + c = xaj_params[6] + sm = xaj_params[7] + ex = xaj_params[8] + ki_ = xaj_params[9] + kg_ = xaj_params[10] + # ki+kg should be smaller than 1; if not, we scale them + ki = np.where(ki_ + kg_ < 1.0, ki_, (1.0 - PRECISION) / (ki_ + kg_) * ki_) + kg = np.where(ki_ + kg_ < 1.0, kg_, (1.0 - PRECISION) / (ki_ + kg_) * kg_) + + # w0 = (0.5 * um, 0.5 * lm, 0.5 * dm) + inputs = p_and_e[:, :, :] + runoff_ims_ = np.full(inputs.shape[:2], 0.0) + rss_ = np.full(inputs.shape[:2], 0.0) + ris_ = np.full(inputs.shape[:2], 0.0) + rgs_ = np.full(inputs.shape[:2], 0.0) + es_ = np.full(inputs.shape[:2], 0.0) + for i in range(inputs.shape[0]): + if i == 0: + (r, rim, e, pe), w = generation( + inputs[i, :, :], k, b, im, um, lm, dm, c, *w0 + ) + if source_type == "sources": + (rs, ri, rg), (s, fr) = sources( + pe, r, sm, ex, ki, kg, s0, fr0, book=source_book + ) + elif source_type == "sources5mm": + (rs, ri, rg), (s, fr) = sources5mm( + pe, r, sm, ex, ki, kg, s0, fr0, book=source_book + ) + else: + raise NotImplementedError("No such divide-sources method") + else: + (r, rim, e, pe), w = generation( + inputs[i, :, :], k, b, im, um, lm, dm, c, *w + ) + if source_type == "sources": + (rs, ri, rg), (s, fr) = sources( + pe, r, sm, ex, ki, kg, s, fr, book=source_book + ) + elif source_type == "sources5mm": + (rs, ri, rg), (s, fr) = sources5mm( + pe, r, sm, ex, ki, kg, s, fr, book=source_book + ) + else: + raise NotImplementedError("No such divide-sources method") + # impevious part is pe * im + runoff_ims_[i, :] = rim + # so for non-imprvious part, the result should be corrected + rss_[i, :] = rs * (1 - im) + ris_[i, :] = ri * (1 - im) + rgs_[i, :] = rg * (1 - im) + es_[i, :] = e + # seq, batch, feature + runoff_im = np.expand_dims(runoff_ims_, axis=2) + rss = np.expand_dims(rss_, axis=2) + es = np.expand_dims(es_, axis=2) + return runoff_im, rss_, ris_, rgs_, es, rss + + +def xaj_route( + p_and_e, + params_route: Union[np.array, list], + ris_, + rgs_, + rss_, + rss, + runoff_im, + qi0, + qg0, + es, + **kwargs, +) -> Union[tuple, np.array]: + model_name = kwargs.get("name", "xaj") + # params + param_ranges = MODEL_PARAM_DICT[model_name]["param_range"] + if model_name == "xaj": + route_method = "CSL" + elif model_name == "xaj_mz": + route_method = "MZ" + else: + raise NotImplementedError( + "We don't provide this route method now! Please use 'CS' or 'MZ'!" + ) + xaj_params = [ + (value[1] - value[0]) * params_route[:, i] + value[0] + for i, (key, value) in enumerate(param_ranges.items()) + ] + if route_method == "CSL": + cs = xaj_params[11] + l = xaj_params[12] + + elif route_method == "MZ": + # we will use routing method from mizuRoute -- http://www.geosci-model-dev.net/9/2223/2016/ + a = xaj_params[11] + theta = xaj_params[12] + # make it as a parameter + kernel_size = int(xaj_params[15]) + else: + raise NotImplementedError( + "We don't provide this route method now! Please use 'CS' or 'MZ'!" + ) + ci = xaj_params[13] + cg = xaj_params[14] + + inputs = p_and_e[:, :, :] + qs = np.full(inputs.shape[:2], 0.0) + if route_method == "CSL": + qt = np.full(inputs.shape[:2], 0.0) + for i in range(inputs.shape[0]): + if i == 0: + qi = linear_reservoir(ris_[i], ci, qi0) + qg = linear_reservoir(rgs_[i], cg, qg0) + else: + qi = linear_reservoir(ris_[i], ci, qi) + qg = linear_reservoir(rgs_[i], cg, qg) + qs_ = rss_[i] + qt[i, :] = qs_ + qi + qg + + for j in range(len(l)): + lag = int(l[j]) + for i in range(lag): + qs[i, j] = qt[i, j] + if i == lag: + break + for i in range(lag, inputs.shape[0]): + qs[i, j] = cs[j] * qs[i - 1, j] + (1 - cs[j]) * qt[i - lag, j] + + elif route_method == "MZ": + rout_a = a.repeat(rss.shape[0]).reshape(rss.shape) + rout_b = theta.repeat(rss.shape[0]).reshape(rss.shape) + conv_uh = uh_gamma(rout_a, rout_b, kernel_size) + qs_ = uh_conv(runoff_im + rss, conv_uh) + for i in range(inputs.shape[0]): + if i == 0: + qi = linear_reservoir(ris_[i], ci, qi0) + qg = linear_reservoir(rgs_[i], cg, qg0) + else: + qi = linear_reservoir(ris_[i], ci, qi) + qg = linear_reservoir(rgs_[i], cg, qg) + qs[i, :] = qs_[i, :, 0] + qi + qg + else: + raise NotImplementedError( + "We don't provide this route method now! Please use 'CSL' or 'MZ'!" + ) + + # seq, batch, feature + q_sim = np.expand_dims(qs, axis=2) + return q_sim, es + + +def xaj_state( + p_and_e, + params: Union[np.array, list], + return_state=True, + warmup_length=365, + **kwargs, +) -> Union[tuple, np.array]: + # default values for some function parameters + model_name = kwargs["name"] if "name" in kwargs else "xaj" + source_type = kwargs["source_type"] if "source_type" in kwargs else "sources" + source_book = kwargs["source_book"] if "source_book" in kwargs else "HF" + # params + param_ranges = MODEL_PARAM_DICT[model_name]["param_range"] + if model_name == "xaj": + route_method = "CSL" + elif model_name == "xaj_mz": + route_method = "MZ" + else: + raise NotImplementedError( + "We don't provide this route method now! Please use 'CS' or 'MZ'!" + ) + xaj_params = [ + (value[1] - value[0]) * params[:, i] + value[0] + for i, (key, value) in enumerate(param_ranges.items()) + ] + k = xaj_params[0] + b = xaj_params[1] + im = xaj_params[2] + um = xaj_params[3] + lm = xaj_params[4] + dm = xaj_params[5] + c = xaj_params[6] + sm = xaj_params[7] + ex = xaj_params[8] + ki_ = xaj_params[9] + kg_ = xaj_params[10] + # ki+kg should be smaller than 1; if not, we scale them + ki = np.where(ki_ + kg_ < 1.0, ki_, (1.0 - PRECISION) / (ki_ + kg_) * ki_) + kg = np.where(ki_ + kg_ < 1.0, kg_, (1.0 - PRECISION) / (ki_ + kg_) * kg_) + if route_method == "CSL": + cs = xaj_params[11] + l = xaj_params[12] + + elif route_method == "MZ": + # we will use routing method from mizuRoute -- http://www.geosci-model-dev.net/9/2223/2016/ + a = xaj_params[11] + theta = xaj_params[12] + # make it as a parameter + kernel_size = int(xaj_params[15]) + else: + raise NotImplementedError( + "We don't provide this route method now! Please use 'CS' or 'MZ'!" + ) + ci = xaj_params[13] + cg = xaj_params[14] + + w0 = (0.5 * um, 0.5 * lm, 0.5 * dm) + s0 = 0.5 * sm + fr0 = np.full(ex.shape, 0.1) + qi0 = np.full(ci.shape, 0.1) + qg0 = np.full(cg.shape, 0.1) + + # state_variables + # inputs = p_and_e[warmup_length:, :, :] + inputs = p_and_e[:, :, :] + runoff_ims_ = np.full(inputs.shape[:2], 0.0) + rss_ = np.full(inputs.shape[:2], 0.0) + ris_ = np.full(inputs.shape[:2], 0.0) + rgs_ = np.full(inputs.shape[:2], 0.0) + es_ = np.full(inputs.shape[:2], 0.0) + for i in range(inputs.shape[0]): + if i == 0: + (r, rim, e, pe), w = generation( + inputs[i, :, :], k, b, im, um, lm, dm, c, *w0 + ) + if source_type == "sources": + (rs, ri, rg), (s, fr) = sources( + pe, r, sm, ex, ki, kg, s0, fr0, book=source_book + ) + elif source_type == "sources5mm": + (rs, ri, rg), (s, fr) = sources5mm( + pe, r, sm, ex, ki, kg, s0, fr0, book=source_book + ) + else: + raise NotImplementedError("No such divide-sources method") + else: + (r, rim, e, pe), w = generation( + inputs[i, :, :], k, b, im, um, lm, dm, c, *w + ) + if source_type == "sources": + (rs, ri, rg), (s, fr) = sources( + pe, r, sm, ex, ki, kg, s, fr, book=source_book + ) + elif source_type == "sources5mm": + (rs, ri, rg), (s, fr) = sources5mm( + pe, r, sm, ex, ki, kg, s, fr, book=source_book + ) + else: + raise NotImplementedError("No such divide-sources method") + # impevious part is pe * im + runoff_ims_[i, :] = rim + # so for non-imprvious part, the result should be corrected + rss_[i, :] = rs * (1 - im) + ris_[i, :] = ri * (1 - im) + rgs_[i, :] = rg * (1 - im) + es_[i, :] = e + # seq, batch, feature + runoff_im = np.expand_dims(runoff_ims_, axis=2) + rss = np.expand_dims(rss_, axis=2) + es = np.expand_dims(es_, axis=2) + + qs = np.full(inputs.shape[:2], 0.0) + + if route_method == "CSL": + qt = np.full(inputs.shape[:2], 0.0) + for i in range(inputs.shape[0]): + if i == 0: + qi = linear_reservoir(ris_[i], ci, qi0) + qg = linear_reservoir(rgs_[i], cg, qg0) + else: + qi = linear_reservoir(ris_[i], ci, qi) + qg = linear_reservoir(rgs_[i], cg, qg) + qs_ = rss_[i] + qt[i, :] = qs_ + qi + qg + + for j in range(len(l)): + # print(range(len(l))) + lag = int(l[j]) + for i in range(lag): + qs[i, j] = qt[i, j] + if i == lag: + break + for i in range(lag, inputs.shape[0]): + # print(inputs.shape[0]) + qs[i, j] = cs[j] * qs[i - 1, j] + (1 - cs[j]) * qt[i - lag, j] + + elif route_method == "MZ": + rout_a = a.repeat(rss.shape[0]).reshape(rss.shape) + rout_b = theta.repeat(rss.shape[0]).reshape(rss.shape) + conv_uh = uh_gamma(rout_a, rout_b, kernel_size) + qs_ = uh_conv(runoff_im + rss, conv_uh) + for i in range(inputs.shape[0]): + if i == 0: + qi = linear_reservoir(ris_[i], ci, qi0) + qg = linear_reservoir(rgs_[i], cg, qg0) + else: + qi = linear_reservoir(ris_[i], ci, qi) + qg = linear_reservoir(rgs_[i], cg, qg) + qs[i, :] = qs_[i, :, 0] + qi + qg + else: + raise NotImplementedError( + "We don't provide this route method now! Please use 'CSL' or 'MZ'!" + ) + + # seq, batch, feature + q_sim = np.expand_dims(qs, axis=2) + if return_state: + return q_sim, es, *w, s, fr, qi, qg diff --git a/hydromodel/models/xaj_bmi.py b/hydromodel/models/xaj_bmi.py new file mode 100644 index 0000000..e94f620 --- /dev/null +++ b/hydromodel/models/xaj_bmi.py @@ -0,0 +1,319 @@ +from typing import Tuple +from bmipy import Bmi +import numpy as np + +from hydromodel.models import configuration +import datetime +import logging + +from hydromodel.models.xaj import xaj_route, xaj_runoff + +logger = logging.getLogger(__name__) + +PRECISION = 1e-5 + + +class xajBmi(Bmi): + """Empty model wrapped in a BMI interface.""" + + name = "hydro-model-xaj" + input_var_names = ("precipitation", "ETp") + output_var_names = ("ET", "discharge") + var_units = { + "precipitation": "mm/day", + "ETp": "mm/day", + "discharge": "mm/day", + "ET": "mm/day", + } + + def __init__(self): + """Create a Bmi model that is ready for initialization.""" + self.time_step = 0 + + def initialize(self, config_file, params, p_and_e): + try: + logger.info("xaj: initialize_model") + config = configuration.read_config(config_file) + model_name = config["model_name"] + source_type = config["source_type"] + source_book = config["source_book"] + # forcing_data = pd.read_csv(config['forcing_data']) + model_info = { + "model_name": model_name, + "source_type": source_type, + "source_book": source_book, + } + # p_and_e_df, p_and_e = configuration.extract_forcing(forcing_data) + p_and_e_warmup = p_and_e[0 : config["warmup_length"], :, :] + ( + self.q_sim_state, + self.es_state, + self.w0, + self.w1, + self.w2, + self.s0, + self.fr0, + self.qi0, + self.qg0, + ) = configuration.warmup( + p_and_e_warmup, params, config["warmup_length"], model_info + ) + + self.params = params + self.warmup_length = config["warmup_length"] + self._start_time_str = config["start_time_str"] + self._end_time_str = config["end_time_str"] + self._time_units = config["time_units"] + # self.p_and_e_df = p_and_e_df + self.p_and_e = p_and_e + self.config = config + self.model_info = model_info + + train_period = config["train_period"] + test_period = config["test_period"] + self.train_start_time_str = train_period[0] + self.train_end_time_str = train_period[1] + self.test_start_time_str = test_period[0] + self.test_end_time_str = test_period[1] + + except Exception: + import traceback + + traceback.print_exc() + raise + + def update(self): + """Update model for a single time step.""" + + self.time_step += 1 + p_and_e_sim = self.p_and_e[ + self.warmup_length : self.time_step + self.warmup_length + ] + # p_and_e_sim = self.p_and_e[0:self.time_step] + ( + self.runoff_im, + self.rss_, + self.ris_, + self.rgs_, + self.es_runoff, + self.rss, + ) = xaj_runoff( + p_and_e_sim, + w0=self.w0, + s0=self.s0, + fr0=self.fr0, + params_runoff=self.params, + return_state=False, + model_info=self.model_info, + ) + if self.time_step + self.warmup_length >= self.p_and_e.shape[0]: + q_sim, es = xaj_route( + p_and_e_sim, + params_route=self.params, + model_info=self.model_info, + runoff_im=self.runoff_im, + rss_=self.rss_, + ris_=self.ris_, + rgs_=self.rgs_, + rss=self.rss, + qi0=self.qi0, + qg0=self.qg0, + es=self.es_runoff, + ) + self.p_sim = p_and_e_sim[:, :, 0] + self.e_sim = p_and_e_sim[:, :, 1] + # q_sim = convert_unit( + # q_sim, + # unit_now="mm/day", + # unit_final=unit["streamflow"], + # basin_area=float(self.basin_area), + # ) + self.q_sim = q_sim[:, :, :] + self.es = es[:, :, :] + + def update_until(self, time): + while self.get_current_time() + 0.001 < time: + self.update() + + def finalize(self) -> None: + """Finalize model.""" + self.model = None + + def get_component_name(self) -> str: + return "xaj" + + def get_input_item_count(self) -> int: + return len(self.input_var_names) + + def get_output_item_count(self) -> int: + return len(self.output_var_names) + + def get_input_var_names(self) -> Tuple[str]: + return self.input_var_names + + def get_output_var_names(self) -> Tuple[str]: + return self.output_var_names + + def get_var_grid(self, name: str) -> int: + raise NotImplementedError() + + def get_var_type(self, name: str) -> str: + return "float64" + + def get_var_units(self, name: str) -> str: + return self.var_units[name] + + def get_var_itemsize(self, name: str) -> int: + return np.dtype(self.get_var_type(name)).itemsize + + def get_var_nbytes(self, name: str) -> int: + return self.get_value_ptr(name).nbytes + + def get_var_location(self, name: str) -> str: + raise NotImplementedError() + + def get_start_time(self, period): + if period == "train": + return self.start_Time(self.train_start_time_str) + if period == "test": + return self.start_Time(self.test_start_time_str) + # return self.start_Time(self._start_time_str) + + def get_current_time(self): + # return self.start_Time(self._start_time_str) + datetime.timedelta(self.time_step+self.warmup_length) + if self._time_units == "hours": + time_step = datetime.timedelta(hours=self.time_step) + elif self._time_units == "days": + time_step = datetime.timedelta(days=self.time_step) + return self.start_Time(self._start_time_str) + time_step + + def get_end_time(self, period): + if period == "train": + return self.end_Time(self.train_end_time_str) + if period == "test": + return self.end_Time(self.test_end_time_str) + # return self.end_Time(self._end_time_str) + + def get_time_units(self) -> str: + return self._time_units + + def get_time_step(self) -> float: + return 1 + + def get_value(self, name: str) -> None: + logger.info("getting value for var %s", name) + return self.get_value_ptr(name).flatten() + + def get_value_ptr(self, name: str) -> np.ndarray: + if name == "discharge": + return self.q_sim + elif name == "ET": + return self.es + + def get_value_at_indices(self, name: str, inds: np.ndarray) -> np.ndarray: + return self.get_value_ptr(name).take(inds) + + def set_value(self, name: str, src: np.ndarray): + val = self.get_value_ptr(name) + val[:] = src.reshape(val.shape) + + def set_value_at_indices( + self, name: str, inds: np.ndarray, src: np.ndarray + ) -> None: + val = self.get_value_ptr(name) + val.flat[inds] = src + + # Grid information + def get_grid_rank(self, grid: int) -> int: + raise NotImplementedError() + + def get_grid_size(self, grid: int) -> int: + raise NotImplementedError() + + def get_grid_type(self, grid: int) -> str: + raise NotImplementedError() + + # Uniform rectilinear + def get_grid_shape(self, grid: int, shape: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_spacing(self, grid: int, spacing: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_origin(self, grid: int, origin: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + # Non-uniform rectilinear, curvilinear + def get_grid_x(self, grid: int, x: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_y(self, grid: int, y: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_z(self, grid: int, z: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_node_count(self, grid: int) -> int: + raise NotImplementedError() + + def get_grid_edge_count(self, grid: int) -> int: + raise NotImplementedError() + + def get_grid_face_count(self, grid: int) -> int: + raise NotImplementedError() + + def get_grid_edge_nodes(self, grid: int, edge_nodes: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_face_edges(self, grid: int, face_edges: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_face_nodes(self, grid: int, face_nodes: np.ndarray) -> np.ndarray: + raise NotImplementedError() + + def get_grid_nodes_per_face( + self, grid: int, nodes_per_face: np.ndarray + ) -> np.ndarray: + raise NotImplementedError() + + def start_Time(self, _start_time_str): + try: + if " " in _start_time_str: + date, time = _start_time_str.split(" ") + else: + date = _start_time_str + time = None + year, month, day = date.split("-") + self._startTime = datetime.date(int(year), int(month), int(day)) + + if time: + hour, minute, second = time.split(":") + # self._startTime = self._startTime.replace(hour=int(hour), + # minute=int(minute), + # second=int(second)) + self._startTime = datetime.datetime( + int(year), int(month), int(day), int(hour), int(minute), int(second) + ) + except ValueError as e: + raise ValueError("Invalid start date format!") from e + + return self._startTime + + def end_Time(self, _end_time_str): + try: + if " " in _end_time_str: + date, time = _end_time_str.split(" ") + else: + date = _end_time_str + time = None + year, month, day = date.split("-") + self._endTime = datetime.date(int(year), int(month), int(day)) + + if time: + hour, minute, second = time.split(":") + self._endTime = datetime.datetime( + int(year), int(month), int(day), int(hour), int(minute), int(second) + ) + except ValueError as e: + raise ValueError("Invalid start date format!") from e + return self._endTime diff --git a/hydromodel/utils/constant_unit.py b/hydromodel/utils/constant_unit.py new file mode 100644 index 0000000..f09eef7 --- /dev/null +++ b/hydromodel/utils/constant_unit.py @@ -0,0 +1,63 @@ +""" +Author: Wenyu Ouyang +Date: 2022-12-08 09:24:54 +LastEditTime: 2022-12-08 09:51:54 +LastEditors: Wenyu Ouyang +Description: some constant for hydro model +FilePath: /hydro-model-xaj/hydromodel/utils/hydro_constant.py +Copyright (c) 2021-2022 Wenyu Ouyang. All rights reserved. +""" +# unify the unit of each variable +unit = {"streamflow": "m3/s"} +def convert_unit(data, unit_now, unit_final, **kwargs): + """ + convert unit of variable + + Parameters + ---------- + data + data to be converted + unit_now + unit of variable now + unit_final + unit of variable after conversion + **kwargs + other parameters required for conversion + + Returns + ------- + data + data after conversion + """ + if unit_now == "mm/day" and unit_final == "m3/s": + result = mm_per_day_to_m3_per_sec(basin_area=kwargs["basin_area"], q=data) + else: + raise ValueError("unit conversion not supported") + return result + + +def mm_per_day_to_m3_per_sec(basin_area, q): + """ + trans mm/day to m3/s for xaj models + + Parameters + ---------- + basin_area + we need to know the area of a basin so that we can perform this transformation + q + original streamflow data + + Returns + ------- + + """ + # 1 ft3 = 0.02831685 m3 + # ft3tom3 = 2.831685e-2 + # 1 km2 = 10^6 m2 + km2tom2 = 1e6 + # 1 m = 1000 mm + mtomm = 1000 + # 1 day = 24 * 3600 s + daytos = 24 * 3600 + q_trans = q * basin_area * km2tom2 / (mtomm * daytos) + return q_trans diff --git a/hydromodel/utils/dmca_esr.py b/hydromodel/utils/dmca_esr.py new file mode 100644 index 0000000..397fd77 --- /dev/null +++ b/hydromodel/utils/dmca_esr.py @@ -0,0 +1,223 @@ +import numpy as np + + +def movmean(X, n): + ones = np.ones(X.shape) + kernel = np.ones(n) + return np.convolve(X, kernel, mode='same') / np.convolve(ones, kernel, mode='same') + + +def step1_step2_tr_and_fluctuations_timeseries(rain, flow, rain_min, max_window): + """ + :param rain: 降雨量向量,单位mm/h,需注意与mm/day之间的单位转化 + :param flow: 径流量向量,单位m³/h,需注意与m³/day之间的单位转化 + :param rain_min: 最小降雨量阈值 + :param max_window: 场次划分最大窗口,决定场次长度 + """ + rain = rain.T + flow = flow.T + rain_int = np.nancumsum(rain) + flow_int = np.nancumsum(flow) + T = rain.size + rain_mean = np.empty(((max_window - 1) // 2, T)) + flow_mean = np.empty(((max_window - 1) // 2, T)) + fluct_rain = np.empty(((max_window - 1) // 2, T)) + fluct_flow = np.empty(((max_window - 1) // 2, T)) + F_rain = np.empty((max_window - 1) // 2) + F_flow = np.empty((max_window - 1) // 2) + F_rain_flow = np.empty((max_window - 1) // 2) + rho = np.empty((max_window - 1) // 2) + for window in np.arange(3, max_window + 1, 2): + int_index = int((window - 1) / 2 - 1) + start_slice = int(window - 0.5 * (window - 1)) + dst_slice = int(T - 0.5 * (window - 1)) + # 新建一个循环体长度*数据长度的大数组 + rain_mean[int_index] = movmean(rain_int, window) + flow_mean[int_index] = movmean(flow_int, window) + fluct_rain[int_index] = rain_int - rain_mean[int_index, :] + F_rain[int_index] = (1 / (T - window + 1)) * np.nansum( + (fluct_rain[int_index, start_slice:dst_slice]) ** 2) + fluct_flow[int_index, np.newaxis] = flow_int - flow_mean[int_index, :] + F_flow[int_index] = (1 / (T - window + 1)) * np.nansum( + (fluct_flow[int_index, start_slice:dst_slice]) ** 2) + F_rain_flow[int_index] = (1 / (T - window + 1)) * np.nansum( + (fluct_rain[int_index, start_slice:dst_slice]) * ( + fluct_flow[int_index, start_slice:dst_slice])) + rho[int_index] = F_rain_flow[int_index] / ( + np.sqrt(F_rain[int_index]) * np.sqrt(F_flow[int_index])) + pos_min = np.argmin(rho) + Tr = pos_min + 1 + tol_fluct_rain = (rain_min / (2 * Tr + 1)) * Tr + tol_fluct_flow = flow_int[-1] / 1e15 + fluct_rain[pos_min, np.fabs(fluct_rain[pos_min, :]) < tol_fluct_rain] = 0 + fluct_flow[pos_min, np.fabs(fluct_flow[pos_min, :]) < tol_fluct_flow] = 0 + fluct_rain_Tr = fluct_rain[pos_min, :] + fluct_flow_Tr = fluct_flow[pos_min, :] + fluct_bivariate_Tr = fluct_rain_Tr * fluct_flow_Tr + fluct_bivariate_Tr[np.fabs(fluct_bivariate_Tr) < np.finfo(np.float64).eps] = 0 # 便于比较 + return Tr, fluct_rain_Tr, fluct_flow_Tr, fluct_bivariate_Tr + + +def step3_core_identification(fluct_bivariate_Tr): + d = np.diff(fluct_bivariate_Tr, prepend=[0], append=[0]) # 计算相邻数值差分,为0代表两端点处于0区间 + d[np.fabs(d) < np.finfo(np.float64).eps] = 0 # 确保计算正确 + d = np.logical_not(d) # 求0-1数组,为真代表为0区间 + d0 = np.logical_not(np.convolve(d, [1, 1], 'valid')) # 对相邻元素做OR,代表原数组数值是否处于某一0区间,再取反表示取有效值 + valid = np.logical_or(fluct_bivariate_Tr, d0) # 有效core + d_ = np.diff(valid, prepend=[0], append=[0]) # 求差分方便取上下边沿 + beginning_core = np.argwhere(d_ == 1) # 上边沿为begin + end_core = np.argwhere(d_ == -1) - 1 # 下边沿为end + return beginning_core, end_core + + +def step4_end_rain_events(beginning_core, end_core, rain, fluct_rain_Tr, rain_min): + end_rain = end_core.copy() + rain = rain.T + for g in range(end_core.size): + if end_core[g] + 2 < fluct_rain_Tr.size and \ + (np.fabs(fluct_rain_Tr[end_core[g] + 1]) < np.finfo(np.float64).eps and np.fabs(fluct_rain_Tr[end_core[g] + 2]) < np.finfo(np.float64).eps): + # case 1&2 + if np.fabs(rain[end_core[g]]) < np.finfo(np.float64).eps: + # case 1 + while end_rain[g] > beginning_core[g] and np.fabs(rain[end_rain[g]]) < np.finfo(np.float64).eps: + end_rain[g] = end_rain[g] - 1 + else: + # case 2 + bound = beginning_core[g + 1] if g + 1 < beginning_core.size else rain.size + while end_rain[g] < bound and rain[end_rain[g]] > rain_min: + end_rain[g] = end_rain[g] + 1 + end_rain[g] = end_rain[g] - 1 # 回到最后一个 + else: + # case 3 + # 若在降水,先跳过 + while end_rain[g] >= beginning_core[g] and rain[end_rain[g]] > rain_min: + end_rain[g] = end_rain[g] - 1 + while end_rain[g] >= beginning_core[g] and rain[end_rain[g]] < rain_min: + end_rain[g] = end_rain[g] - 1 + return end_rain + + +def step5_beginning_rain_events(beginning_core, end_rain, rain, fluct_rain_Tr, rain_min): + beginning_rain = beginning_core.copy() + rain = rain.T + for g in range(beginning_core.size): + if beginning_core[g] - 2 >= 0 \ + and (np.fabs(fluct_rain_Tr[beginning_core[g] - 1]) < np.finfo(np.float64).eps and np.fabs(fluct_rain_Tr[beginning_core[g] - 2]) < np.finfo( + np.float64).eps) \ + and np.fabs(rain[beginning_core[g]]) < np.finfo(np.float64).eps: + # case 1 + while beginning_rain[g] < end_rain[g] and np.fabs(rain[beginning_rain[g]]) < np.finfo(np.float64).eps: + beginning_rain[g] = beginning_rain[g] + 1 + else: + # case 2&3 + bound = end_rain[g - 1] if g - 1 >= 0 else -1 + while beginning_rain[g] > bound and rain[beginning_rain[g]] > rain_min: + beginning_rain[g] = beginning_rain[g] - 1 + beginning_rain[g] = beginning_rain[g] + 1 # 回到第一个 + return beginning_rain + + +def step6_checks_on_rain_events(beginning_rain, end_rain, rain, rain_min, beginning_core, end_core): + rain = rain.T + beginning_rain = beginning_rain.copy() + end_rain = end_rain.copy() + if beginning_rain[0] == 0: # 掐头 + beginning_rain = beginning_rain[1:] + end_rain = end_rain[1:] + beginning_core = beginning_core[1:] + end_core = end_core[1:] + if end_rain[-1] == rain.size - 1: # 去尾 + beginning_rain = beginning_rain[:-2] + end_rain = end_rain[:-2] + beginning_core = beginning_core[:-2] + end_core = end_core[:-2] + error_time_reversed = beginning_rain > end_rain + error_wrong_delimiter = np.logical_or(rain[beginning_rain - 1] > rain_min, rain[end_rain + 1] > rain_min) + beginning_rain[error_time_reversed] = -2 + beginning_rain[error_wrong_delimiter] = -2 + end_rain[error_time_reversed] = -2 + end_rain[error_wrong_delimiter] = -2 + beginning_core[error_time_reversed] = -2 + beginning_core[error_wrong_delimiter] = -2 + end_core[error_time_reversed] = -2 + end_core[error_wrong_delimiter] = -2 + beginning_rain = beginning_rain[beginning_rain != -2] + end_rain = end_rain[end_rain != -2] + beginning_core = beginning_core[beginning_core != -2] + end_core = end_core[end_core != -2] + return beginning_rain, end_rain, beginning_core, end_core + + +def step7_end_flow_events(end_rain_checked, beginning_core, end_core, rain, fluct_rain_Tr, fluct_flow_Tr, Tr): + end_flow = np.empty(end_core.size, dtype=int) + for g in range(end_rain_checked.size): + if end_core[g] + 2 < fluct_rain_Tr.size and \ + (np.fabs(fluct_rain_Tr[end_core[g] + 1]) < np.finfo(np.float64).eps and np.fabs(fluct_rain_Tr[end_core[g] + 2]) < np.finfo(np.float64).eps): + # case 1 + end_flow[g] = end_rain_checked[g] + bound = beginning_core[g + 1] + Tr if g + 1 < beginning_core.size else rain.size + bound = min(bound, rain.size) # 防溢出 + # 若flow为负,先跳过 + while end_flow[g] < bound and fluct_flow_Tr[end_flow[g]] <= 0: + end_flow[g] = end_flow[g] + 1 + while end_flow[g] < bound and fluct_flow_Tr[end_flow[g]] > 0: + end_flow[g] = end_flow[g] + 1 + end_flow[g] = end_flow[g] - 1 # 回到最后一个 + else: + # case 2 + end_flow[g] = end_core[g] + while end_flow[g] >= beginning_core[g] and fluct_flow_Tr[end_flow[g]] <= 0: + end_flow[g] = end_flow[g] - 1 + return end_flow + + +def step8_beginning_flow_events(beginning_rain_checked, end_rain_checked, rain, beginning_core, fluct_rain_Tr, fluct_flow_Tr): + beginning_flow = np.empty(beginning_rain_checked.size, dtype=int) + for g in range(beginning_rain_checked.size): + if beginning_core[g] - 2 >= 0 \ + and (np.fabs(fluct_rain_Tr[beginning_core[g] - 1]) < np.finfo(np.float64).eps and np.fabs(fluct_rain_Tr[beginning_core[g] - 2]) < np.finfo( + np.float64).eps): + beginning_flow[g] = beginning_rain_checked[g] # case 1 + else: + beginning_flow[g] = beginning_core[g] # case 2 + while beginning_flow[g] < end_rain_checked[g] and fluct_flow_Tr[beginning_flow[g]] >= 0: + beginning_flow[g] = beginning_flow[g] + 1 + return beginning_flow + + +def step9_checks_on_flow_events(beginning_rain_checked, end_rain_checked, beginning_flow, end_flow, fluct_flow_Tr): + error_time_reversed = beginning_flow > end_flow + error_wrong_fluct = np.logical_or(np.logical_or(fluct_flow_Tr[beginning_flow] > 0, fluct_flow_Tr[end_flow] < 0), np.logical_or(beginning_flow < + beginning_rain_checked, end_flow < end_rain_checked)) + beginning_flow[error_time_reversed] = -3 + beginning_flow[error_wrong_fluct] = -3 + end_flow[error_time_reversed] = -3 + end_flow[error_wrong_fluct] = -3 + beginning_flow = beginning_flow[beginning_flow != -3] + end_flow = end_flow[end_flow != -3] + return beginning_flow, end_flow + + +def step10_checks_on_overlapping_events(beginning_rain_ungrouped, end_rain_ungrouped, beginning_flow_ungrouped, end_flow_ungrouped, time): + # rain + order1 = np.reshape(np.hstack((np.reshape(beginning_rain_ungrouped, (-1, 1)), + np.reshape(end_rain_ungrouped, (-1, 1)))), (1, -1)) + reversed1 = np.diff(order1) <= 0 + order1[np.hstack((reversed1, [[False]]))] = -2 + order1[np.hstack(([[False]], reversed1))] = -2 + order1 = order1[order1 != -2] + # flow + order2 = np.reshape(np.hstack((np.reshape(beginning_flow_ungrouped, (-1, 1)), + np.reshape(end_flow_ungrouped, (-1, 1)))), (1, -1)) + reversed2 = np.diff(order2) <= 0 + order2[np.hstack((reversed2, [[False]]))] = -3 + order2[np.hstack(([[False]], reversed2))] = -3 + order2 = order2[order2 != -3] + # group + rain_grouped = np.reshape(order1, (-1, 2)).T + beginning_rain_grouped = rain_grouped[0] + end_rain_grouped = rain_grouped[1] + flow_grouped = np.reshape(order2, (-1, 2)).T + beginning_flow_grouped = flow_grouped[0] + end_flow_grouped = flow_grouped[1] + return time[beginning_rain_grouped], time[end_rain_grouped], time[beginning_flow_grouped], time[end_flow_grouped] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..245c186 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,14 @@ +ipykernel +numpy +numba +pandas +scikit-learn +deap +spotpy==1.5.14 +seaborn +tqdm +pytest +hydrodataset +bmipy +pyyaml +requests \ No newline at end of file diff --git a/requirements_dev.txt b/requirements_dev.txt new file mode 100644 index 0000000..c4e98f7 --- /dev/null +++ b/requirements_dev.txt @@ -0,0 +1,14 @@ +black +black[jupyter] +pip +bump2version +wheel +watchdog +flake8 +tox +coverage +Sphinx +twine + +pytest +pytest-runner \ No newline at end of file diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..2e09fd3 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,26 @@ +[bumpversion] +current_version = 0.0.1 +commit = True +tag = True + +[bumpversion:file:setup.py] +search = version='{current_version}' +replace = version='{new_version}' + +[bumpversion:file:hydromodel/__init__.py] +search = __version__ = '{current_version}' +replace = __version__ = '{new_version}' + +[bdist_wheel] +universal = 1 + +[flake8] +exclude = docs + +[aliases] +# Define setup.py command aliases here +test = pytest + +[tool:pytest] +collect_ignore = ['setup.py'] + diff --git a/setup.py b/setup.py index 29b5c04..96730f7 100644 --- a/setup.py +++ b/setup.py @@ -1,23 +1,71 @@ #!/usr/bin/env python -# -*- coding:utf-8 -*- - +""" +Author: Wenyu Ouyang +Date: 2023-10-28 09:16:46 +LastEditTime: 2023-10-28 17:36:12 +LastEditors: Wenyu Ouyang +Description: The setup script +FilePath: \hydro-model-xaj\setup.py +Copyright (c) 2023-2024 Wenyu Ouyang. All rights reserved. +""" +import io +import pathlib +from os import path as op from setuptools import setup, find_packages -setup( - name="", # 输入项目名称 - version="", # 输入版本号 - keywords=[""], # 输入关键词 - description="", # 输入概述 - long_description="", # 输入描述 +readme = pathlib.Path("README.md").read_text(encoding='utf-8') +here = op.abspath(op.dirname(__file__)) + +# get the dependencies and installs +with io.open(op.join(here, "requirements.txt"), encoding="utf-8") as f: + all_reqs = f.read().split("\n") + +install_requires = [x.strip() for x in all_reqs if "git+" not in x] +dependency_links = [x.strip().replace("git+", "") for x in all_reqs if "git+" not in x] - url="", # 输入项目Github仓库的链接 - author="", # 输入作者名字 - author_email="", # 输入作者邮箱 - license="", # 此为声明文件,一般填写 MIT_license +requirements = [] - packages=find_packages(), +setup_requirements = [ + "pytest-runner", +] + +test_requirements = [ + "pytest>=3", +] + +setup( + author="Wenyu Ouyang", + author_email="wenyuouyang@outlook.com", + python_requires=">=3.9", + classifiers=[ + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + ], + description="hydrological models starting from XinAnJiang", + entry_points={ + "console_scripts": [ + "hydromodel=hydromodel.cli:main", + ], + }, + install_requires=install_requires, + dependency_links=dependency_links, + license="GNU General Public License v3", + long_description=readme, + long_description_content_type="text/markdown", include_package_data=True, - platforms="any", - install_requires=[""], # 输入项目所用的包 - python_requires='>= ', # Python版本要求 + keywords="hydromodel", + name="hydromodel", + packages=find_packages(include=["hydromodel", "hydromodel.*"]), + setup_requires=setup_requirements, + test_suite="tests", + tests_require=test_requirements, + url="https://github.com/iHeadWater/hydro-model-xaj", + version="0.0.2", + zip_safe=False, ) diff --git a/test/runxaj.yaml b/test/runxaj.yaml new file mode 100644 index 0000000..ae57a87 --- /dev/null +++ b/test/runxaj.yaml @@ -0,0 +1,46 @@ +# xaj model configuration +# The current model runs on the daily time step + start_time_str: "1990-01-01" + end_time_str: "2009-12-31" + time_units: "days" + # The current model runs on the hourly time step + # basin_area: "66400" + # start_time_str: "2021-06-01 00:00:00" + # end_time_str: "2021-08-31 23:00:00" + # time_units: "hours" +# initial condition + forcing_data: "/hydromodel/example/01013500_lump_p_pe_q.txt" + json_file: "/hydromodel/example/data_info.json" + npy_file: "/hydromodel/example/basins_lump_p_pe_q.npy" + # forcing_file: "/home/wangjingyi/code/hydro-model-xaj/scripts/尼尔基降雨.csv" + warmup_length: 360 + basin_area: 2252.7 + + + train_period: ["1990-01-01", "2000-12-31"] + test_period: ["2001-01-01", "2009-12-31"] + period: ["1990-01-01", "2009-12-31"] + cv_fold: 1 + algorithm: "SCE_UA" + +#model_info + model_name: "xaj_mz" + source_type: "sources" + source_book: "HF" + +#algorithm_SCE_UA + # algorithm_name: "SCE_UA" + # random_seed: 1234 + # rep: 2 + # ngs: 2 + # kstop: 1 + # peps: 0.001 + # pcento: 0.001 +#algorithm_GA + algorithm_name: "GA" + random_seed: 1234 + run_counts: 3 + pop_num: 50 + cross_prob: 0.5 + mut_prob: 0.5 + save_freq: 1 \ No newline at end of file diff --git a/test/test_data.py b/test/test_data.py index 6844fc7..1bbcb2a 100644 --- a/test/test_data.py +++ b/test/test_data.py @@ -1,7 +1,7 @@ """ Author: Wenyu Ouyang Date: 2022-10-25 21:16:22 -LastEditTime: 2022-11-28 14:50:30 +LastEditTime: 2023-10-28 09:18:48 LastEditors: Wenyu Ouyang Description: Test for data preprocess FilePath: \hydro-model-xaj\test\test_data.py diff --git a/test/test_rr_event_iden.py b/test/test_rr_event_iden.py new file mode 100644 index 0000000..0034e38 --- /dev/null +++ b/test/test_rr_event_iden.py @@ -0,0 +1,96 @@ +""" +Author: Wenyu Ouyang +Date: 2023-10-28 09:23:22 +LastEditTime: 2023-10-28 16:19:22 +LastEditors: Wenyu Ouyang +Description: Test for rainfall-runoff event identification +FilePath: \hydro-model-xaj\test\test_rr_event_iden.py +Copyright (c) 2023-2024 Wenyu Ouyang. All rights reserved. +""" +import os +import pandas as pd +import definitions +from hydromodel.utils.dmca_esr import ( + step1_step2_tr_and_fluctuations_timeseries, + step3_core_identification, + step4_end_rain_events, + step5_beginning_rain_events, + step6_checks_on_rain_events, + step7_end_flow_events, + step8_beginning_flow_events, + step9_checks_on_flow_events, + step10_checks_on_overlapping_events, +) + + +def test_rainfall_runoff_event_identify(): + rain = pd.read_csv( + os.path.join(definitions.ROOT_DIR, "hydromodel/example/division_rain.csv") + )["rain"] + flow = pd.read_csv( + os.path.join(definitions.ROOT_DIR, "hydromodel/example/division_flow.csv") + )["flow"] + time = rain.index.to_numpy() + rain = rain.to_numpy() / 24 + flow = flow.to_numpy() / 24 + rain_min = 0.02 + max_window = 100 + ( + Tr, + fluct_rain_Tr, + fluct_flow_Tr, + fluct_bivariate_Tr, + ) = step1_step2_tr_and_fluctuations_timeseries(rain, flow, rain_min, max_window) + beginning_core, end_core = step3_core_identification(fluct_bivariate_Tr) + end_rain = step4_end_rain_events( + beginning_core, end_core, rain, fluct_rain_Tr, rain_min + ) + beginning_rain = step5_beginning_rain_events( + beginning_core, end_rain, rain, fluct_rain_Tr, rain_min + ) + ( + beginning_rain_checked, + end_rain_checked, + beginning_core, + end_core, + ) = step6_checks_on_rain_events( + beginning_rain, end_rain, rain, rain_min, beginning_core, end_core + ) + end_flow = step7_end_flow_events( + end_rain_checked, + beginning_core, + end_core, + rain, + fluct_rain_Tr, + fluct_flow_Tr, + Tr, + ) + beginning_flow = step8_beginning_flow_events( + beginning_rain_checked, + end_rain_checked, + rain, + beginning_core, + fluct_rain_Tr, + fluct_flow_Tr, + ) + beginning_flow_checked, end_flow_checked = step9_checks_on_flow_events( + beginning_rain_checked, + end_rain_checked, + beginning_flow, + end_flow, + fluct_flow_Tr, + ) + ( + BEGINNING_RAIN, + END_RAIN, + BEGINNING_FLOW, + END_FLOW, + ) = step10_checks_on_overlapping_events( + beginning_rain_checked, + end_rain_checked, + beginning_flow_checked, + end_flow_checked, + time, + ) + print(BEGINNING_RAIN, END_RAIN, BEGINNING_FLOW, END_FLOW) + print(len(BEGINNING_RAIN), len(END_RAIN), len(BEGINNING_FLOW), len(END_FLOW)) diff --git a/test/test_xaj_bmi.py b/test/test_xaj_bmi.py new file mode 100644 index 0000000..875a9d7 --- /dev/null +++ b/test/test_xaj_bmi.py @@ -0,0 +1,326 @@ +import logging + +import definitions +from hydromodel.models.configuration import read_config +from hydromodel.models.xaj_bmi import xajBmi +import pandas as pd +import os +from pathlib import Path +import numpy as np +import fnmatch +import socket +from datetime import datetime + +from hydromodel.utils import hydro_utils +from hydromodel.data.data_preprocess import ( + cross_valid_data, + split_train_test, +) +from hydromodel.calibrate.calibrate_sceua_xaj_bmi import calibrate_by_sceua +from hydromodel.calibrate.calibrate_ga_xaj_bmi import ( + calibrate_by_ga, + show_ga_result, +) +from hydromodel.visual.pyspot_plots import show_calibrate_result, show_test_result +from hydromodel.data.data_postprocess import ( + renormalize_params, + read_save_sceua_calibrated_params, + save_streamflow, + summarize_metrics, + summarize_parameters, +) +from hydromodel.utils import hydro_constant + +logging.basicConfig(level=logging.INFO) + + +def test_bmi(): + """ + model = xajBmi() + print(model.get_component_name()) + model.initialize("runxaj.yaml") + print("Start time:", model.get_start_time()) + print("End time:", model.get_end_time()) + print("Current time:", model.get_current_time()) + print("Time step:", model.get_time_step()) + print("Time units:", model.get_time_units()) + print(model.get_input_var_names()) + print(model.get_output_var_names()) + + discharge = [] + ET = [] + time = [] + while model.get_current_time() <= model.get_end_time(): + time.append(model.get_current_time()) + model.update() + + discharge=model.get_value("discharge") + ET=model.get_value("ET") + + results = pd.DataFrame({ + 'discharge': discharge.flatten(), + 'ET': ET.flatten(), + }) + results.to_csv('/home/wangjingyi/code/hydro-model-xaj/scripts/xaj.csv') + model.finalize() + """ + # 模型率定 + config = read_config(os.path.relpath("runxaj.yaml")) + forcing_data = Path(str(definitions.ROOT_DIR) + str(config["forcing_data"])) + train_period = config["train_period"] + test_period = config["test_period"] + # period = config['period'] + json_file = Path(str(definitions.ROOT_DIR) + str(config["json_file"])) + npy_file = Path(str(definitions.ROOT_DIR) + str(config["npy_file"])) + cv_fold = config["cv_fold"] + warmup_length = config["warmup_length"] + # model_info + model_name = config["model_name"] + source_type = config["source_type"] + source_book = config["source_book"] + # algorithm + algorithm_name = config["algorithm_name"] + + if cv_fold <= 1: + # no cross validation + periods = np.sort( + [train_period[0], train_period[1], test_period[0], test_period[1]] + ) + else: + cross_valid_data(json_file, npy_file, periods, warmup_length, cv_fold) + split_train_test(json_file, npy_file, train_period, test_period) + + kfold = [ + int(f_name[len("data_info_fold") : -len("_test.json")]) + for f_name in os.listdir(os.path.dirname(forcing_data)) + if fnmatch.fnmatch(f_name, "*_fold*_test.json") + ] + kfold = np.sort(kfold) + for fold in kfold: + print(f"Start to calibrate the {fold}-th fold") + train_data_info_file = os.path.join( + os.path.dirname(forcing_data), f"data_info_fold{str(fold)}_train.json" + ) + train_data_file = os.path.join( + os.path.dirname(forcing_data), + f"basins_lump_p_pe_q_fold{str(fold)}_train.npy", + ) + test_data_info_file = os.path.join( + os.path.dirname(forcing_data), f"data_info_fold{str(fold)}_test.json" + ) + test_data_file = os.path.join( + os.path.dirname(forcing_data), + f"basins_lump_p_pe_q_fold{str(fold)}_test.npy", + ) + if ( + os.path.exists(train_data_info_file) is False + or os.path.exists(train_data_file) is False + or os.path.exists(test_data_info_file) is False + or os.path.exists(test_data_file) is False + ): + raise FileNotFoundError( + "The data files are not found, please run datapreprocess4calibrate.py first." + ) + data_train = hydro_utils.unserialize_numpy(train_data_file) + data_test = hydro_utils.unserialize_numpy(test_data_file) + data_info_train = hydro_utils.unserialize_json_ordered(train_data_info_file) + data_info_test = hydro_utils.unserialize_json_ordered(test_data_info_file) + current_time = datetime.now().strftime("%b%d_%H-%M-%S") + # one directory for one model + one hyperparam setting and one basin + save_dir = os.path.join( + os.path.dirname(forcing_data), + current_time + "_" + socket.gethostname() + "_fold" + str(fold), + ) + if algorithm_name == "SCE_UA": + random_seed = config["random_seed"] + rep = config["rep"] + ngs = config["ngs"] + kstop = config["kstop"] + peps = config["peps"] + pcento = config["pcento"] + for i in range(len(data_info_train["basin"])): + basin_id = data_info_train["basin"][i] + basin_area = data_info_train["area"][i] + # one directory for one model + one hyperparam setting and one basin + spotpy_db_dir = os.path.join( + save_dir, + basin_id, + ) + + if not os.path.exists(spotpy_db_dir): + os.makedirs(spotpy_db_dir) + db_name = os.path.join(spotpy_db_dir, "SCEUA_" + model_name) + sampler = calibrate_by_sceua( + data_train[:, i : i + 1, 0:2], + data_train[:, i : i + 1, -1:], + db_name, + warmup_length=warmup_length, + model={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + algorithm={ + "name": algorithm_name, + "random_seed": random_seed, + "rep": rep, + "ngs": ngs, + "kstop": kstop, + "peps": peps, + "pcento": pcento, + }, + ) + + show_calibrate_result( + sampler.setup, + db_name, + warmup_length=warmup_length, + save_dir=spotpy_db_dir, + basin_id=basin_id, + train_period=data_info_train["time"], + basin_area=basin_area, + ) + params = read_save_sceua_calibrated_params( + basin_id, spotpy_db_dir, db_name + ) + + model = xajBmi() + model.initialize( + os.path.relpath("runxaj.yaml"), params, data_test[:, i : i + 1, 0:2] + ) + j = 0 + while j <= len(data_info_test["time"]): + model.update() + j += 1 + q_sim = model.get_value("discharge") + + qsim = hydro_constant.convert_unit( + q_sim, + unit_now="mm/day", + unit_final=hydro_constant.unit["streamflow"], + basin_area=basin_area, + ) + + qobs = hydro_constant.convert_unit( + data_test[warmup_length:, i : i + 1, -1:], + unit_now="mm/day", + unit_final=hydro_constant.unit["streamflow"], + basin_area=basin_area, + ) + test_result_file = os.path.join( + spotpy_db_dir, + "test_qsim_" + model_name + "_" + str(basin_id) + ".csv", + ) + pd.DataFrame(qsim.reshape(-1, 1)).to_csv( + test_result_file, + sep=",", + index=False, + header=False, + ) + test_date = pd.to_datetime( + data_info_test["time"][warmup_length:] + ).values.astype("datetime64[D]") + show_test_result( + basin_id, test_date, qsim, qobs, save_dir=spotpy_db_dir + ) + elif algorithm_name == "GA": + random_seed = config["random_seed"] + run_counts = config["run_counts"] + pop_num = config["pop_num"] + cross_prob = config["cross_prob"] + mut_prob = config["mut_prob"] + save_freq = config["save_freq"] + for i in range(len(data_info_train["basin"])): + basin_id = data_info_train["basin"][i] + basin_area = data_info_train["area"][i] + # one directory for one model + one hyperparam setting and one basin + deap_db_dir = os.path.join(save_dir, basin_id) + + if not os.path.exists(deap_db_dir): + os.makedirs(deap_db_dir) + calibrate_by_ga( + data_train[:, i : i + 1, 0:2], + data_train[:, i : i + 1, -1:], + deap_db_dir, + warmup_length=warmup_length, + model={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + ga_param={ + "name": algorithm_name, + "random_seed": random_seed, + "run_counts": run_counts, + "pop_num": pop_num, + "cross_prob": cross_prob, + "mut_prob": mut_prob, + "save_freq": save_freq, + }, + ) + show_ga_result( + deap_db_dir, + warmup_length=warmup_length, + basin_id=basin_id, + the_data=data_train[:, i : i + 1, :], + the_period=data_info_train["time"], + basin_area=basin_area, + model_info={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + train_mode=True, + ) + show_ga_result( + deap_db_dir, + warmup_length=warmup_length, + basin_id=basin_id, + the_data=data_test[:, i : i + 1, :], + the_period=data_info_test["time"], + basin_area=basin_area, + model_info={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + train_mode=False, + ) + else: + raise NotImplementedError( + "We don't provide this calibrate method! Choose from 'SCE_UA' or 'GA'!" + ) + summarize_parameters( + save_dir, + model_info={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + ) + renormalize_params( + save_dir, + model_info={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + ) + summarize_metrics( + save_dir, + model_info={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + ) + save_streamflow( + save_dir, + model_info={ + "name": model_name, + "source_type": source_type, + "source_book": source_book, + }, + fold=fold, + ) + print(f"Finish calibrating the {fold}-th fold")