From 3618ed9ee8ae5d82ea46e43678e6052b11fdf9e5 Mon Sep 17 00:00:00 2001 From: Mario Fink Date: Wed, 5 Aug 2020 11:32:02 +0200 Subject: [PATCH] -> correction write_table vs. write_data in main.cpp -> container build of pyarrow (i.a. for armv7l build) --- .gitignore | 3 - lib/parquet/parquet-low-level-example | Bin 71312 -> 0 bytes lib/parquet/parquet_cpp_example.parquet | Bin 26435 -> 0 bytes lib/pyarrow_arm/Dockerfile | 26 + lib/pyarrow_arm/build_arrow.sh | 65 + lib/pyarrow_arm/build_arrow_cpp.sh | 23 + lib/pyarrow_arm/build_arrow_python.sh | 15 + lib/pyarrow_arm/makefile | 23 + lib/pyarrow_arm/pressureVacuum.csv | 2403 +++++++++++++++++++++++ lib/pyarrow_arm/pyarrow_test.py | 18 + lib/pyarrow_arm/sync_pi.sh | 8 + setup.py | 4 + src/main.cpp | 4 +- 13 files changed, 2587 insertions(+), 5 deletions(-) delete mode 100755 lib/parquet/parquet-low-level-example delete mode 100644 lib/parquet/parquet_cpp_example.parquet create mode 100644 lib/pyarrow_arm/Dockerfile create mode 100755 lib/pyarrow_arm/build_arrow.sh create mode 100755 lib/pyarrow_arm/build_arrow_cpp.sh create mode 100755 lib/pyarrow_arm/build_arrow_python.sh create mode 100644 lib/pyarrow_arm/makefile create mode 100644 lib/pyarrow_arm/pressureVacuum.csv create mode 100644 lib/pyarrow_arm/pyarrow_test.py create mode 100755 lib/pyarrow_arm/sync_pi.sh diff --git a/.gitignore b/.gitignore index ffc7076..002795b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ /build -*.csv - eatraw eatdev @@ -15,4 +13,3 @@ nohup.out raw_eater.cpp *.o - diff --git a/lib/parquet/parquet-low-level-example b/lib/parquet/parquet-low-level-example deleted file mode 100755 index 1450c6a90286367c6dabd1e95f003951cafae5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71312 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 J!9Sn#e*w;lW{3a) diff --git a/lib/pyarrow_arm/Dockerfile b/lib/pyarrow_arm/Dockerfile new file mode 100644 index 0000000..5f1a018 --- /dev/null +++ b/lib/pyarrow_arm/Dockerfile @@ -0,0 +1,26 @@ + +FROM ubuntu:19.10 + +RUN apt-get update -y && apt-get install -y \ + apt-utils \ + git g++ \ + make cmake \ + pkg-config \ + #build-essentials \ + python3 \ + python3-setuptools \ + cython3 \ + python3-numpy + +RUN git clone https://github.com/apache/arrow.git --single-branch --depth=1 + +COPY . ./ + +RUN chmod u+x ./build_arrow_cpp.sh +RUN chmod u+x ./build_arrow_python.sh +RUN ./build_arrow_cpp.sh +RUN ./build_arrow_python.sh + +#RUN chmod u+x ./build_arrow.sh +#CMD ["./build_arrow.sh"] +CMD ["sleep 1d"] diff --git a/lib/pyarrow_arm/build_arrow.sh b/lib/pyarrow_arm/build_arrow.sh new file mode 100755 index 0000000..a6787df --- /dev/null +++ b/lib/pyarrow_arm/build_arrow.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +sleep infinity + +startts=$(date) +echo "starting build process at ${startts}..." + +echo -e "\nhome directory is..." +pwd + +echo -e "\ncloning apache/arrow..." +git clone https://github.com/apache/arrow.git --single-branch --depth=1 + +echo -e "\nls -lh /\n" +ls -lh / + +echo -e "\nls -lh arrow/\n" +ls -lh arrow/ + +echo -e "\nls -lh arrow/python/\n" +ls -lh arrow/python + + +mkdir arrow/cpp/build +pushd arrow/cpp/build + +cmake -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DARROW_WITH_BZ2=ON \ + -DARROW_WITH_ZLIB=ON \ + -DARROW_WITH_ZSTD=ON \ + -DARROW_WITH_LZ4=ON \ + -DARROW_WITH_SNAPPY=ON \ + -DARROW_WITH_BROTLI=ON \ + -DARROW_PARQUET=ON \ + -DARROW_PYTHON=ON \ + -DARROW_BUILD_TESTS=OFF \ + -DARROW_WITH_HDFS=OFF \ + .. + +make -j4 +make install +popd + +#cython --version +cython3 --version + +pushd arrow/python +export ARROW_LIB_DIR=/lib/ +export PYARROW_WITH_PARQUET=1 +export PYARROW_WITH_CUDA=0 +export PYARROW_WITH_FlIGHT=0 +export PYARROW_WITH_DATASET=0 +export PYARROW_WITH_ORC=0 +export PYARROW_WITH_PLASMA=0 +export PYARROW_WITH_S3FS=0 +export PYARROW_WITH_HDFS=0 +export PYARROW_WITH_GANDIVA=0 +python3 setup.py build_ext --inplace +popd + +echo " started build process at ${startts} ..." +finishts=$(date) +echo "finishing build process at ${finishts}..." + diff --git a/lib/pyarrow_arm/build_arrow_cpp.sh b/lib/pyarrow_arm/build_arrow_cpp.sh new file mode 100755 index 0000000..3eeaefb --- /dev/null +++ b/lib/pyarrow_arm/build_arrow_cpp.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +mkdir arrow/cpp/build +pushd arrow/cpp/build + +cmake -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DARROW_WITH_BZ2=ON \ + -DARROW_WITH_ZLIB=ON \ + -DARROW_WITH_ZSTD=ON \ + -DARROW_WITH_LZ4=ON \ + -DARROW_WITH_SNAPPY=ON \ + -DARROW_WITH_BROTLI=ON \ + -DARROW_PARQUET=ON \ + -DARROW_PYTHON=ON \ + -DARROW_BUILD_TESTS=OFF \ + -DARROW_WITH_HDFS=OFF \ + -DARROW_WITH_IPC=OFF \ + .. + +make -j4 +make install +popd diff --git a/lib/pyarrow_arm/build_arrow_python.sh b/lib/pyarrow_arm/build_arrow_python.sh new file mode 100755 index 0000000..c2aec8a --- /dev/null +++ b/lib/pyarrow_arm/build_arrow_python.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +pushd arrow/python +export PYARROW_WITH_PARQUET=1 +export PYARROW_WITH_CUDA=0 +export PYARROW_WITH_FlIGHT=0 +export PYARROW_WITH_DATASET=0 +export PYARROW_WITH_ORC=0 +export PYARROW_WITH_PLASMA=0 +export PYARROW_WITH_S3FS=0 +export PYARROW_WITH_HDFS=0 +export PYARROW_WITH_GANDIVA=0 +# python3 setup.py build_ext --inplace +python3 setup.py install +popd diff --git a/lib/pyarrow_arm/makefile b/lib/pyarrow_arm/makefile new file mode 100644 index 0000000..e03170b --- /dev/null +++ b/lib/pyarrow_arm/makefile @@ -0,0 +1,23 @@ + +build : + docker build . --tag pyarrowbuild + +run : + docker run -it pyarrowbuild:latest + +run-bash : + docker run -it --volume=$(pwd)/build:/home pyarrowbuild:latest /bin/bash + +run-volume : + docker run -it -v /home/pirate/pyarrow/build/:/arrow/python/ pyarrowbuild:latest + #sudo docker run -it --volume=$(pwd)/build:/home ubuntu:latest /bin/bash + +rm-container : + cont=$(docker ps -a | tail -n 26 | awk '{print $NF}' | sed ':a;N;$!ba;s/\n/ /g') + echo ${cont} + docker rm ${cont} + +rm-image : + img=$(docker image ls --quiet | sed ':a;N;$!ba;s/\n/ /g') + docker image rm ${img} + diff --git a/lib/pyarrow_arm/pressureVacuum.csv b/lib/pyarrow_arm/pressureVacuum.csv new file mode 100644 index 0000000..d2cb44f --- /dev/null +++ b/lib/pyarrow_arm/pressureVacuum.csv @@ -0,0 +1,2403 @@ +Time [s],pressure_Vacuum [mbar] +2044.030000,956.013794 +2044.035000,955.484924 +2044.040000,955.487671 +2044.045000,955.846252 +2044.050000,955.711121 +2044.055000,955.464111 +2044.060000,955.554016 +2044.065000,955.548523 +2044.070000,955.517517 +2044.075000,955.714661 +2044.080000,955.658752 +2044.085000,955.656250 +2044.090000,955.782410 +2044.095000,955.626831 +2044.100000,955.771301 +2044.105000,955.790222 +2044.110000,955.497864 +2044.115000,955.610779 +2044.120000,955.702271 +2044.125000,955.542786 +2044.130000,955.702026 +2044.135000,955.557251 +2044.140000,955.505798 +2044.145000,955.777954 +2044.150000,955.721558 +2044.155000,955.616394 +2044.160000,955.653687 +2044.165000,955.700439 +2044.170000,955.707214 +2044.175000,955.839478 +2044.180000,955.722717 +2044.185000,955.642578 +2044.190000,955.619690 +2044.195000,955.554504 +2044.200000,955.761169 +2044.205000,955.758423 +2044.210000,955.779236 +2044.215000,955.629944 +2044.220000,955.534973 +2044.225000,955.632935 +2044.230000,955.669922 +2044.235000,955.752686 +2044.240000,955.544861 +2044.245000,955.690125 +2044.250000,955.917358 +2044.255000,955.703979 +2044.260000,955.887939 +2044.265000,955.989807 +2044.270000,955.708252 +2044.275000,955.744080 +2044.280000,955.937134 +2044.285000,955.887634 +2044.290000,955.641296 +2044.295000,955.694031 +2044.300000,955.863403 +2044.305000,955.919861 +2044.310000,955.993042 +2044.315000,956.155640 +2044.320000,955.724792 +2044.325000,955.605469 +2044.330000,955.979370 +2044.335000,955.776123 +2044.340000,955.970276 +2044.345000,956.348083 +2044.350000,956.166443 +2044.355000,955.718018 +2044.360000,956.262085 +2044.365000,956.249451 +2044.370000,955.959961 +2044.375000,956.205261 +2044.380000,955.989014 +2044.385000,956.044922 +2044.390000,956.020813 +2044.395000,956.064819 +2044.400000,956.226807 +2044.405000,956.140381 +2044.410000,956.044373 +2044.415000,955.752441 +2044.420000,955.850769 +2044.425000,956.122437 +2044.430000,956.111450 +2044.435000,955.988647 +2044.440000,955.895081 +2044.445000,956.171936 +2044.450000,956.082275 +2044.455000,955.899231 +2044.460000,956.312134 +2044.465000,956.347290 +2044.470000,956.144836 +2044.475000,956.310181 +2044.480000,956.340393 +2044.485000,956.304199 +2044.490000,956.526550 +2044.495000,956.288025 +2044.500000,956.231323 +2044.505000,956.606689 +2044.510000,956.534485 +2044.515000,956.316650 +2044.520000,956.183655 +2044.525000,956.189636 +2044.530000,956.405151 +2044.535000,956.402649 +2044.540000,956.640564 +2044.545000,956.826599 +2044.550000,956.429626 +2044.555000,956.416626 +2044.560000,956.384399 +2044.565000,956.386536 +2044.570000,956.514038 +2044.575000,956.443054 +2044.580000,956.404480 +2044.585000,956.436035 +2044.590000,956.642273 +2044.595000,956.515625 +2044.600000,956.723938 +2044.605000,956.581177 +2044.610000,956.118225 +2044.615000,956.149536 +2044.620000,956.421692 +2044.625000,956.132996 +2044.630000,955.931152 +2044.635000,956.431335 +2044.640000,956.218994 +2044.645000,955.946167 +2044.650000,956.088684 +2044.655000,956.100281 +2044.660000,956.297119 +2044.665000,956.096375 +2044.670000,956.010498 +2044.675000,956.152649 +2044.680000,955.847900 +2044.685000,956.140137 +2044.690000,956.306396 +2044.695000,955.969055 +2044.700000,955.981079 +2044.705000,956.083618 +2044.710000,956.209167 +2044.715000,956.062744 +2044.720000,955.895752 +2044.725000,955.933105 +2044.730000,956.084412 +2044.735000,956.076172 +2044.740000,956.094177 +2044.745000,956.126343 +2044.750000,955.761536 +2044.755000,955.846497 +2044.760000,956.158875 +2044.765000,955.893921 +2044.770000,955.859497 +2044.775000,955.787231 +2044.780000,955.759583 +2044.785000,956.380005 +2044.790000,956.072266 +2044.795000,955.743958 +2044.800000,956.094543 +2044.805000,956.139343 +2044.810000,955.754517 +2044.815000,955.676208 +2044.820000,955.723999 +2044.825000,955.602722 +2044.830000,955.780457 +2044.835000,955.625366 +2044.840000,955.762329 +2044.845000,955.725342 +2044.850000,955.632141 +2044.855000,955.961792 +2044.860000,955.637268 +2044.865000,955.796692 +2044.870000,955.686218 +2044.875000,955.538086 +2044.880000,956.042969 +2044.885000,955.840637 +2044.890000,955.785095 +2044.895000,955.827332 +2044.900000,955.776672 +2044.905000,955.893372 +2044.910000,955.614990 +2044.915000,955.599060 +2044.920000,955.966980 +2044.925000,955.950684 +2044.930000,955.866821 +2044.935000,955.689636 +2044.940000,955.566528 +2044.945000,955.969971 +2044.950000,955.790955 +2044.955000,955.690247 +2044.960000,955.798157 +2044.965000,955.855591 +2044.970000,956.157227 +2044.975000,955.821716 +2044.980000,955.614563 +2044.985000,955.965698 +2044.990000,955.954102 +2044.995000,955.612000 +2045.000000,955.710999 +2045.005000,955.986267 +2045.010000,955.783325 +2045.015000,955.745239 +2045.020000,955.908752 +2045.025000,955.895203 +2045.030000,955.733948 +2045.035000,955.838806 +2045.040000,955.823547 +2045.045000,955.778076 +2045.050000,956.079712 +2045.055000,955.937805 +2045.060000,955.804016 +2045.065000,955.872009 +2045.070000,956.044373 +2045.075000,956.240051 +2045.080000,956.200623 +2045.085000,955.971558 +2045.090000,955.703796 +2045.095000,955.924805 +2045.100000,956.168823 +2045.105000,956.130493 +2045.110000,956.091797 +2045.115000,955.898315 +2045.120000,956.019897 +2045.125000,956.183105 +2045.130000,955.947815 +2045.135000,956.144043 +2045.140000,956.291260 +2045.145000,956.085938 +2045.150000,955.955811 +2045.155000,956.250488 +2045.160000,956.583862 +2045.165000,956.059998 +2045.170000,956.115540 +2045.175000,956.246338 +2045.180000,955.792908 +2045.185000,956.044617 +2045.190000,956.125183 +2045.195000,956.207886 +2045.200000,955.921265 +2045.205000,955.564575 +2045.210000,955.816650 +2045.215000,955.956970 +2045.220000,955.822510 +2045.225000,955.577820 +2045.230000,955.667969 +2045.235000,955.766235 +2045.240000,955.881409 +2045.245000,955.793823 +2045.250000,955.520020 +2045.255000,955.753723 +2045.260000,955.656799 +2045.265000,955.461609 +2045.270000,955.640381 +2045.275000,955.669678 +2045.280000,955.564575 +2045.285000,955.554016 +2045.290000,955.541748 +2045.295000,955.447693 +2045.300000,955.379150 +2045.305000,955.436584 +2045.310000,955.417847 +2045.315000,955.478333 +2045.320000,955.541626 +2045.325000,955.401672 +2045.330000,955.447937 +2045.335000,955.440674 +2045.340000,955.378662 +2045.345000,955.430237 +2045.350000,955.387756 +2045.355000,955.512695 +2045.360000,955.492615 +2045.365000,955.357788 +2045.370000,955.461243 +2045.375000,955.408203 +2045.380000,955.416931 +2045.385000,955.488708 +2045.390000,955.420837 +2045.395000,955.469849 +2045.400000,955.454346 +2045.405000,955.406799 +2045.410000,955.481812 +2045.415000,955.460327 +2045.420000,955.386353 +2045.425000,955.463196 +2045.430000,955.452881 +2045.435000,955.415649 +2045.440000,955.428955 +2045.445000,955.392944 +2045.450000,955.493164 +2045.455000,955.560669 +2045.460000,955.441711 +2045.465000,955.483521 +2045.470000,955.587585 +2045.475000,955.361572 +2045.480000,955.405212 +2045.485000,955.482971 +2045.490000,955.436768 +2045.495000,955.567444 +2045.500000,955.444702 +2045.505000,955.421875 +2045.510000,955.450928 +2045.515000,955.391663 +2045.520000,955.449646 +2045.525000,955.397400 +2045.530000,955.431946 +2045.535000,955.440491 +2045.540000,955.387756 +2045.545000,955.425537 +2045.550000,955.451843 +2045.555000,955.448853 +2045.560000,955.436218 +2045.565000,955.392578 +2045.570000,955.275085 +2045.575000,954.785461 +2045.580000,954.069946 +2045.585000,954.001404 +2045.590000,953.580322 +2045.595000,952.696777 +2045.600000,952.714355 +2045.605000,952.268250 +2045.610000,951.338562 +2045.615000,951.401855 +2045.620000,951.088928 +2045.625000,950.087830 +2045.630000,950.041077 +2045.635000,950.215759 +2045.640000,949.999084 +2045.645000,949.866455 +2045.650000,949.454895 +2045.655000,949.106262 +2045.660000,948.872925 +2045.665000,948.778625 +2045.670000,948.812195 +2045.675000,948.696655 +2045.680000,948.707764 +2045.685000,948.677612 +2045.690000,948.677368 +2045.695000,948.699524 +2045.700000,948.682068 +2045.705000,948.621765 +2045.710000,948.434509 +2045.715000,948.130310 +2045.720000,947.906494 +2045.725000,947.889282 +2045.730000,947.691406 +2045.735000,947.573364 +2045.740000,947.406067 +2045.745000,947.366882 +2045.750000,947.410522 +2045.755000,947.351501 +2045.760000,947.430969 +2045.765000,947.374573 +2045.770000,947.382507 +2045.775000,947.376099 +2045.780000,947.351501 +2045.785000,947.428894 +2045.790000,947.410522 +2045.795000,947.494019 +2045.800000,947.445557 +2045.805000,947.395142 +2045.810000,947.583801 +2045.815000,947.643311 +2045.820000,947.556702 +2045.825000,947.488953 +2045.830000,947.576477 +2045.835000,947.644897 +2045.840000,947.589783 +2045.845000,947.491272 +2045.850000,947.578857 +2045.855000,947.673706 +2045.860000,947.567627 +2045.865000,947.609192 +2045.870000,947.542358 +2045.875000,947.474243 +2045.880000,947.618408 +2045.885000,947.716309 +2045.890000,947.661926 +2045.895000,947.580139 +2045.900000,947.653748 +2045.905000,947.674866 +2045.910000,947.766174 +2045.915000,947.722778 +2045.920000,947.394348 +2045.925000,947.486206 +2045.930000,947.412964 +2045.935000,947.308228 +2045.940000,947.387573 +2045.945000,947.323730 +2045.950000,947.341736 +2045.955000,947.216614 +2045.960000,946.709717 +2045.965000,946.079651 +2045.970000,946.007324 +2045.975000,946.075989 +2045.980000,945.928772 +2045.985000,945.599670 +2045.990000,944.958069 +2045.995000,944.642090 +2046.000000,944.695007 +2046.005000,944.695923 +2046.010000,944.681335 +2046.015000,944.675354 +2046.020000,944.613953 +2046.025000,944.366943 +2046.030000,943.932434 +2046.035000,943.590576 +2046.040000,943.390076 +2046.045000,942.521484 +2046.050000,942.244751 +2046.055000,942.389404 +2046.060000,941.918945 +2046.065000,942.141174 +2046.070000,942.055237 +2046.075000,941.957642 +2046.080000,941.906799 +2046.085000,941.490051 +2046.090000,941.223206 +2046.095000,941.035095 +2046.100000,940.937622 +2046.105000,940.822754 +2046.110000,940.928101 +2046.115000,940.821655 +2046.120000,940.733337 +2046.125000,940.845154 +2046.130000,940.791992 +2046.135000,940.819702 +2046.140000,940.863098 +2046.145000,940.902222 +2046.150000,940.937500 +2046.155000,940.980896 +2046.160000,941.115967 +2046.165000,941.123840 +2046.170000,941.135925 +2046.175000,941.201172 +2046.180000,941.125244 +2046.185000,941.308289 +2046.190000,941.387390 +2046.195000,941.343201 +2046.200000,941.521057 +2046.205000,941.566528 +2046.210000,941.605835 +2046.215000,941.704102 +2046.220000,941.827759 +2046.225000,941.883362 +2046.230000,941.763245 +2046.235000,941.900818 +2046.240000,942.026184 +2046.245000,942.035156 +2046.250000,941.915833 +2046.255000,941.930664 +2046.260000,941.967407 +2046.265000,942.043640 +2046.270000,942.075562 +2046.275000,941.981567 +2046.280000,942.032288 +2046.285000,942.052734 +2046.290000,942.109802 +2046.295000,942.069641 +2046.300000,942.008850 +2046.305000,942.039062 +2046.310000,942.052490 +2046.315000,942.035278 +2046.320000,941.987061 +2046.325000,941.909180 +2046.330000,941.658630 +2046.335000,941.418274 +2046.340000,941.550354 +2046.345000,941.626465 +2046.350000,941.354553 +2046.355000,941.125488 +2046.360000,941.185181 +2046.365000,941.091003 +2046.370000,940.889282 +2046.375000,940.883179 +2046.380000,940.822754 +2046.385000,940.775024 +2046.390000,940.755127 +2046.395000,940.772156 +2046.400000,940.750916 +2046.405000,940.749146 +2046.410000,940.766602 +2046.415000,940.744141 +2046.420000,940.745728 +2046.425000,940.752625 +2046.430000,940.758728 +2046.435000,940.749634 +2046.440000,940.764771 +2046.445000,940.755005 +2046.450000,940.745483 +2046.455000,940.768555 +2046.460000,940.750000 +2046.465000,940.738586 +2046.470000,940.756409 +2046.475000,940.767883 +2046.480000,940.760864 +2046.485000,940.755493 +2046.490000,940.759827 +2046.495000,940.749634 +2046.500000,940.738831 +2046.505000,940.748352 +2046.510000,940.758484 +2046.515000,940.765381 +2046.520000,940.768250 +2046.525000,940.751709 +2046.530000,940.764099 +2046.535000,940.755493 +2046.540000,940.732056 +2046.545000,940.753784 +2046.550000,940.755127 +2046.555000,940.757568 +2046.560000,940.791748 +2046.565000,940.810852 +2046.570000,940.770203 +2046.575000,940.693726 +2046.580000,940.347473 +2046.585000,939.341553 +2046.590000,938.381104 +2046.595000,937.076050 +2046.600000,935.085815 +2046.605000,932.823853 +2046.610000,930.434204 +2046.615000,929.109619 +2046.620000,927.679749 +2046.625000,926.162842 +2046.630000,925.091003 +2046.635000,923.810425 +2046.640000,922.977295 +2046.645000,922.250854 +2046.650000,921.269958 +2046.655000,920.356140 +2046.660000,919.429565 +2046.665000,918.307922 +2046.670000,918.133850 +2046.675000,918.129211 +2046.680000,917.302917 +2046.685000,917.047424 +2046.690000,917.010681 +2046.695000,917.064148 +2046.700000,917.064880 +2046.705000,917.007446 +2046.710000,917.076599 +2046.715000,917.024109 +2046.720000,917.077148 +2046.725000,917.212402 +2046.730000,917.721802 +2046.735000,918.315613 +2046.740000,918.304688 +2046.745000,918.257019 +2046.750000,918.313293 +2046.755000,918.267395 +2046.760000,918.328491 +2046.765000,918.432861 +2046.770000,918.538391 +2046.775000,918.551331 +2046.780000,918.674561 +2046.785000,918.642639 +2046.790000,918.690430 +2046.795000,918.807434 +2046.800000,918.995178 +2046.805000,919.412109 +2046.810000,919.277100 +2046.815000,919.372070 +2046.820000,919.557373 +2046.825000,919.542480 +2046.830000,919.512817 +2046.835000,919.582520 +2046.840000,919.715637 +2046.845000,919.934021 +2046.850000,920.066528 +2046.855000,919.676575 +2046.860000,920.153503 +2046.865000,919.972839 +2046.870000,919.228271 +2046.875000,919.618347 +2046.880000,919.120911 +2046.885000,918.822266 +2046.890000,918.800781 +2046.895000,918.403442 +2046.900000,918.402283 +2046.905000,918.341309 +2046.910000,918.296082 +2046.915000,918.296204 +2046.920000,918.328491 +2046.925000,918.323059 +2046.930000,918.326050 +2046.935000,918.332825 +2046.940000,918.309082 +2046.945000,918.330872 +2046.950000,918.318359 +2046.955000,918.331909 +2046.960000,918.356934 +2046.965000,918.311829 +2046.970000,918.305847 +2046.975000,918.345703 +2046.980000,918.320984 +2046.985000,918.347534 +2046.990000,918.312622 +2046.995000,918.320862 +2047.000000,918.424255 +2047.005000,918.359558 +2047.010000,918.402527 +2047.015000,918.543762 +2047.020000,918.835327 +2047.025000,919.051208 +2047.030000,918.891357 +2047.035000,918.912598 +2047.040000,919.131958 +2047.045000,919.363770 +2047.050000,919.541565 +2047.055000,919.566589 +2047.060000,919.851013 +2047.065000,919.957214 +2047.070000,920.078857 +2047.075000,920.097778 +2047.080000,920.133606 +2047.085000,920.396362 +2047.090000,920.350525 +2047.095000,920.142334 +2047.100000,920.300476 +2047.105000,920.888062 +2047.110000,920.587097 +2047.115000,920.550781 +2047.120000,920.907104 +2047.125000,920.387634 +2047.130000,920.656189 +2047.135000,920.931091 +2047.140000,920.344788 +2047.145000,920.497375 +2047.150000,920.827087 +2047.155000,920.764832 +2047.160000,920.833862 +2047.165000,920.684326 +2047.170000,920.602112 +2047.175000,920.857422 +2047.180000,920.704346 +2047.185000,920.676880 +2047.190000,920.875183 +2047.195000,920.756714 +2047.200000,920.345459 +2047.205000,920.789978 +2047.210000,920.980591 +2047.215000,920.497375 +2047.220000,920.687439 +2047.225000,920.767456 +2047.230000,920.947205 +2047.235000,920.921143 +2047.240000,920.590637 +2047.245000,920.574890 +2047.250000,920.440125 +2047.255000,920.887695 +2047.260000,920.953857 +2047.265000,920.769104 +2047.270000,920.963745 +2047.275000,920.741089 +2047.280000,920.667358 +2047.285000,920.896545 +2047.290000,921.038147 +2047.295000,920.814087 +2047.300000,921.045959 +2047.305000,921.212463 +2047.310000,920.922180 +2047.315000,921.110840 +2047.320000,921.095459 +2047.325000,921.135193 +2047.330000,921.288940 +2047.335000,921.485962 +2047.340000,921.642395 +2047.345000,921.597351 +2047.350000,921.582458 +2047.355000,921.547852 +2047.360000,921.831299 +2047.365000,921.876282 +2047.370000,922.089539 +2047.375000,921.886536 +2047.380000,922.029602 +2047.385000,922.130188 +2047.390000,921.929932 +2047.395000,922.376038 +2047.400000,922.177979 +2047.405000,922.063354 +2047.410000,922.254883 +2047.415000,922.250732 +2047.420000,922.256836 +2047.425000,922.159485 +2047.430000,922.315857 +2047.435000,922.283936 +2047.440000,922.214355 +2047.445000,922.248718 +2047.450000,922.180603 +2047.455000,922.274170 +2047.460000,922.310791 +2047.465000,922.208496 +2047.470000,922.305664 +2047.475000,922.353210 +2047.480000,922.273132 +2047.485000,922.333801 +2047.490000,922.313232 +2047.495000,922.303833 +2047.500000,922.351135 +2047.505000,922.317139 +2047.510000,922.315186 +2047.515000,922.342285 +2047.520000,922.323425 +2047.525000,922.315857 +2047.530000,922.342041 +2047.535000,922.331848 +2047.540000,922.318604 +2047.545000,922.325378 +2047.550000,922.304749 +2047.555000,922.312073 +2047.560000,922.320801 +2047.565000,922.326294 +2047.570000,922.341003 +2047.575000,922.305542 +2047.580000,922.303711 +2047.585000,922.329163 +2047.590000,922.331482 +2047.595000,922.327576 +2047.600000,922.331848 +2047.605000,922.336304 +2047.610000,922.323792 +2047.615000,922.325378 +2047.620000,922.317139 +2047.625000,922.339661 +2047.630000,922.359497 +2047.635000,922.347351 +2047.640000,922.334229 +2047.645000,922.340576 +2047.650000,922.380066 +2047.655000,922.337463 +2047.660000,922.322754 +2047.665000,922.357666 +2047.670000,922.344482 +2047.675000,922.328857 +2047.680000,922.333801 +2047.685000,922.348145 +2047.690000,922.325989 +2047.695000,922.333679 +2047.700000,922.366638 +2047.705000,922.335022 +2047.710000,922.311951 +2047.715000,922.319885 +2047.720000,922.326660 +2047.725000,922.336975 +2047.730000,922.314819 +2047.735000,922.316467 +2047.740000,922.358582 +2047.745000,922.367981 +2047.750000,922.323425 +2047.755000,922.327820 +2047.760000,922.330322 +2047.765000,922.330200 +2047.770000,922.357666 +2047.775000,922.341614 +2047.780000,922.317383 +2047.785000,922.337463 +2047.790000,922.326294 +2047.795000,922.302551 +2047.800000,922.288635 +2047.805000,922.263489 +2047.810000,922.166809 +2047.815000,921.984253 +2047.820000,921.863770 +2047.825000,921.662720 +2047.830000,921.357971 +2047.835000,920.886902 +2047.840000,920.973022 +2047.845000,921.112183 +2047.850000,920.746216 +2047.855000,920.909058 +2047.860000,920.806274 +2047.865000,920.766235 +2047.870000,920.797119 +2047.875000,920.466858 +2047.880000,920.199402 +2047.885000,919.818726 +2047.890000,919.484375 +2047.895000,919.102173 +2047.900000,918.309631 +2047.905000,918.244629 +2047.910000,918.363159 +2047.915000,918.244202 +2047.920000,918.345093 +2047.925000,918.249451 +2047.930000,918.251404 +2047.935000,918.201599 +2047.940000,917.949646 +2047.945000,917.572510 +2047.950000,917.399719 +2047.955000,917.335266 +2047.960000,917.037537 +2047.965000,917.190247 +2047.970000,917.387207 +2047.975000,917.127441 +2047.980000,917.092896 +2047.985000,917.292908 +2047.990000,917.446533 +2047.995000,917.375488 +2048.000000,917.536133 +2048.005000,917.724121 +2048.010000,917.565430 +2048.015000,917.578979 +2048.020000,917.561951 +2048.025000,917.794495 +2048.030000,917.863647 +2048.035000,917.888550 +2048.040000,917.807007 +2048.045000,917.396729 +2048.050000,917.343079 +2048.055000,917.091858 +2048.060000,916.998474 +2048.065000,917.031189 +2048.070000,916.756653 +2048.075000,916.229004 +2048.080000,915.611572 +2048.085000,915.654053 +2048.090000,915.374084 +2048.095000,914.549011 +2048.100000,914.272278 +2048.105000,914.401917 +2048.110000,914.328979 +2048.115000,914.095764 +2048.120000,913.897034 +2048.125000,913.878418 +2048.130000,913.664368 +2048.135000,913.327209 +2048.140000,913.214233 +2048.145000,913.338013 +2048.150000,913.577881 +2048.155000,913.273010 +2048.160000,913.147278 +2048.165000,913.366943 +2048.170000,913.475708 +2048.175000,913.549866 +2048.180000,913.658875 +2048.185000,913.900208 +2048.190000,913.990479 +2048.195000,914.028259 +2048.200000,914.297546 +2048.205000,914.258606 +2048.210000,914.287537 +2048.215000,914.439941 +2048.220000,914.312561 +2048.225000,914.387207 +2048.230000,914.368713 +2048.235000,914.318665 +2048.240000,914.400208 +2048.245000,914.343262 +2048.250000,914.366760 +2048.255000,914.367249 +2048.260000,914.339661 +2048.265000,914.357483 +2048.270000,914.309509 +2048.275000,914.328979 +2048.280000,914.297668 +2048.285000,914.295349 +2048.290000,914.366211 +2048.295000,914.347961 +2048.300000,914.347839 +2048.305000,914.392395 +2048.310000,914.343567 +2048.315000,914.299255 +2048.320000,914.349121 +2048.325000,914.378601 +2048.330000,914.320496 +2048.335000,914.345215 +2048.340000,914.363708 +2048.345000,914.319824 +2048.350000,914.337952 +2048.355000,914.367371 +2048.360000,914.363708 +2048.365000,914.365051 +2048.370000,914.366760 +2048.375000,914.350708 +2048.380000,914.379211 +2048.385000,914.399536 +2048.390000,914.386780 +2048.395000,914.371948 +2048.400000,914.366333 +2048.405000,914.386536 +2048.410000,914.416382 +2048.415000,914.393066 +2048.420000,914.341980 +2048.425000,914.387573 +2048.430000,914.393677 +2048.435000,914.405457 +2048.440000,914.441528 +2048.445000,914.490662 +2048.450000,914.513428 +2048.455000,914.405029 +2048.460000,914.384460 +2048.465000,914.376770 +2048.470000,914.359680 +2048.475000,914.453613 +2048.480000,914.540283 +2048.485000,914.489990 +2048.490000,914.460022 +2048.495000,914.515381 +2048.500000,914.429260 +2048.505000,914.517212 +2048.510000,914.554443 +2048.515000,914.531799 +2048.520000,914.619507 +2048.525000,914.541809 +2048.530000,914.507324 +2048.535000,914.482971 +2048.540000,914.492615 +2048.545000,914.465881 +2048.550000,914.446838 +2048.555000,914.556152 +2048.560000,914.471497 +2048.565000,914.385254 +2048.570000,914.404114 +2048.575000,914.437195 +2048.580000,914.385864 +2048.585000,914.368530 +2048.590000,914.471863 +2048.595000,914.466919 +2048.600000,914.474365 +2048.605000,914.531128 +2048.610000,914.458435 +2048.615000,914.449585 +2048.620000,914.599548 +2048.625000,914.560181 +2048.630000,914.482971 +2048.635000,914.578552 +2048.640000,914.513550 +2048.645000,914.502075 +2048.650000,914.651001 +2048.655000,914.770874 +2048.660000,914.899048 +2048.665000,914.949890 +2048.670000,914.900085 +2048.675000,915.007996 +2048.680000,915.176941 +2048.685000,915.096313 +2048.690000,915.057861 +2048.695000,915.119263 +2048.700000,915.165527 +2048.705000,915.385132 +2048.710000,915.281555 +2048.715000,915.374756 +2048.720000,915.440796 +2048.725000,915.481934 +2048.730000,915.589050 +2048.735000,915.493164 +2048.740000,915.653809 +2048.745000,915.531494 +2048.750000,915.588257 +2048.755000,915.715271 +2048.760000,915.583862 +2048.765000,915.654480 +2048.770000,915.659668 +2048.775000,915.733276 +2048.780000,915.704102 +2048.785000,915.664856 +2048.790000,915.729370 +2048.795000,915.696899 +2048.800000,915.698853 +2048.805000,915.715820 +2048.810000,915.701721 +2048.815000,915.701599 +2048.820000,915.711365 +2048.825000,915.708130 +2048.830000,915.711792 +2048.835000,915.692383 +2048.840000,915.670715 +2048.845000,915.680908 +2048.850000,915.682739 +2048.855000,915.676880 +2048.860000,915.672974 +2048.865000,915.702393 +2048.870000,915.706726 +2048.875000,915.706299 +2048.880000,915.694946 +2048.885000,915.681946 +2048.890000,915.702637 +2048.895000,915.684448 +2048.900000,915.707886 +2048.905000,915.721558 +2048.910000,915.700806 +2048.915000,915.751526 +2048.920000,915.795410 +2048.925000,915.796448 +2048.930000,915.856018 +2048.935000,915.922607 +2048.940000,915.980530 +2048.945000,916.127136 +2048.950000,916.177551 +2048.955000,916.138611 +2048.960000,916.152405 +2048.965000,916.280457 +2048.970000,916.310852 +2048.975000,916.196411 +2048.980000,916.342712 +2048.985000,916.349792 +2048.990000,916.349487 +2048.995000,916.606934 +2049.000000,916.611633 +2049.005000,916.561462 +2049.010000,916.675903 +2049.015000,916.798584 +2049.020000,916.844177 +2049.025000,916.700378 +2049.030000,916.743347 +2049.035000,916.860474 +2049.040000,916.816589 +2049.045000,916.856445 +2049.050000,916.880676 +2049.055000,916.787659 +2049.060000,916.919495 +2049.065000,916.984131 +2049.070000,916.837708 +2049.075000,917.015686 +2049.080000,917.025696 +2049.085000,916.932007 +2049.090000,917.019958 +2049.095000,917.026489 +2049.100000,917.012146 +2049.105000,916.988586 +2049.110000,917.000305 +2049.115000,917.052368 +2049.120000,917.070618 +2049.125000,917.040039 +2049.130000,917.028442 +2049.135000,917.046814 +2049.140000,917.059570 +2049.145000,917.039490 +2049.150000,917.052368 +2049.155000,917.045898 +2049.160000,917.028320 +2049.165000,917.055664 +2049.170000,917.028320 +2049.175000,917.023987 +2049.180000,917.052795 +2049.185000,917.051086 +2049.190000,917.049255 +2049.195000,917.029724 +2049.200000,917.048889 +2049.205000,917.071045 +2049.210000,917.051331 +2049.215000,917.087952 +2049.220000,917.066711 +2049.225000,917.037659 +2049.230000,917.079895 +2049.235000,917.048218 +2049.240000,917.051208 +2049.245000,917.145813 +2049.250000,917.161194 +2049.255000,917.055664 +2049.260000,917.056946 +2049.265000,917.102173 +2049.270000,917.074158 +2049.275000,917.172546 +2049.280000,917.103882 +2049.285000,917.051758 +2049.290000,917.145691 +2049.295000,917.128601 +2049.300000,917.126404 +2049.305000,917.094360 +2049.310000,917.090576 +2049.315000,917.202881 +2049.320000,917.287842 +2049.325000,917.292786 +2049.330000,917.221130 +2049.335000,917.246887 +2049.340000,917.279846 +2049.345000,917.303345 +2049.350000,917.140991 +2049.355000,917.074280 +2049.360000,917.370300 +2049.365000,917.421082 +2049.370000,917.383423 +2049.375000,917.461731 +2049.380000,917.622375 +2049.385000,917.672546 +2049.390000,917.693359 +2049.395000,918.036194 +2049.400000,918.026672 +2049.405000,917.948486 +2049.410000,917.991333 +2049.415000,918.052307 +2049.420000,917.989807 +2049.425000,917.888794 +2049.430000,918.167603 +2049.435000,918.085266 +2049.440000,917.863647 +2049.445000,918.041626 +2049.450000,918.045959 +2049.455000,917.870178 +2049.460000,917.978210 +2049.465000,917.994080 +2049.470000,918.023376 +2049.475000,917.973511 +2049.480000,917.911987 +2049.485000,918.094910 +2049.490000,918.067322 +2049.495000,918.013245 +2049.500000,918.088135 +2049.505000,918.126587 +2049.510000,918.217773 +2049.515000,918.272644 +2049.520000,918.278503 +2049.525000,918.326172 +2049.530000,918.324219 +2049.535000,918.322937 +2049.540000,918.320679 +2049.545000,918.312988 +2049.550000,918.323975 +2049.555000,918.305176 +2049.560000,918.350281 +2049.565000,918.325928 +2049.570000,918.294678 +2049.575000,918.322815 +2049.580000,918.288269 +2049.585000,918.317200 +2049.590000,918.303528 +2049.595000,918.293335 +2049.600000,918.330872 +2049.605000,918.299194 +2049.610000,918.297485 +2049.615000,918.302063 +2049.620000,918.281982 +2049.625000,918.293091 +2049.630000,918.305969 +2049.635000,918.296631 +2049.640000,918.311218 +2049.645000,918.323730 +2049.650000,918.315247 +2049.655000,918.329163 +2049.660000,918.301453 +2049.665000,918.283569 +2049.670000,918.300232 +2049.675000,918.311829 +2049.680000,918.358459 +2049.685000,918.394958 +2049.690000,918.513794 +2049.695000,918.514587 +2049.700000,918.385437 +2049.705000,918.499451 +2049.710000,918.447998 +2049.715000,918.557312 +2049.720000,918.575684 +2049.725000,918.484863 +2049.730000,918.604736 +2049.735000,918.648376 +2049.740000,918.609680 +2049.745000,918.399902 +2049.750000,918.844543 +2049.755000,919.084412 +2049.760000,919.196594 +2049.765000,919.162476 +2049.770000,918.767944 +2049.775000,919.514465 +2049.780000,919.648560 +2049.785000,919.020691 +2049.790000,919.219116 +2049.795000,919.464050 +2049.800000,919.357361 +2049.805000,919.251587 +2049.810000,919.459656 +2049.815000,919.576233 +2049.820000,919.424622 +2049.825000,919.438782 +2049.830000,919.562927 +2049.835000,920.100647 +2049.840000,920.240417 +2049.845000,919.981445 +2049.850000,920.164185 +2049.855000,920.434021 +2049.860000,920.335510 +2049.865000,919.849731 +2049.870000,920.048401 +2049.875000,920.085022 +2049.880000,919.822510 +2049.885000,920.062195 +2049.890000,920.177612 +2049.895000,920.314941 +2049.900000,920.041077 +2049.905000,920.241211 +2049.910000,920.518066 +2049.915000,920.137512 +2049.920000,920.170349 +2049.925000,920.436646 +2049.930000,920.523804 +2049.935000,920.312195 +2049.940000,920.282410 +2049.945000,920.706482 +2049.950000,920.588440 +2049.955000,920.612671 +2049.960000,920.684326 +2049.965000,920.615906 +2049.970000,920.808044 +2049.975000,920.922180 +2049.980000,920.918274 +2049.985000,920.837891 +2049.990000,921.002747 +2049.995000,920.923218 +2050.000000,920.834106 +2050.005000,921.007935 +2050.010000,920.943726 +2050.015000,920.911621 +2050.020000,920.920776 +2050.025000,920.992798 +2050.030000,920.978760 +2050.035000,920.968689 +2050.040000,920.989807 +2050.045000,920.935730 +2050.050000,920.912720 +2050.055000,920.891602 +2050.060000,920.945923 +2050.065000,920.956482 +2050.070000,920.981750 +2050.075000,921.015869 +2050.080000,920.952698 +2050.085000,920.943970 +2050.090000,920.957397 +2050.095000,920.960632 +2050.100000,920.958923 +2050.105000,920.978882 +2050.110000,920.980835 +2050.115000,920.966125 +2050.120000,921.001648 +2050.125000,921.011169 +2050.130000,920.987061 +2050.135000,920.968872 +2050.140000,920.986450 +2050.145000,920.994751 +2050.150000,920.987976 +2050.155000,920.988892 +2050.160000,921.014465 +2050.165000,920.997620 +2050.170000,920.955017 +2050.175000,920.995789 +2050.180000,921.046631 +2050.185000,921.026184 +2050.190000,921.000610 +2050.195000,920.997131 +2050.200000,920.997620 +2050.205000,920.968994 +2050.210000,920.977966 +2050.215000,920.978210 +2050.220000,921.022400 +2050.225000,921.058350 +2050.230000,920.994141 +2050.235000,921.033997 +2050.240000,921.002869 +2050.245000,920.937195 +2050.250000,920.957886 +2050.255000,920.999573 +2050.260000,921.008057 +2050.265000,921.016296 +2050.270000,921.083740 +2050.275000,921.035950 +2050.280000,921.008179 +2050.285000,921.110474 +2050.290000,921.127930 +2050.295000,921.055481 +2050.300000,921.128723 +2050.305000,921.292603 +2050.310000,921.239075 +2050.315000,921.280212 +2050.320000,921.273560 +2050.325000,921.155273 +2050.330000,921.353027 +2050.335000,921.255615 +2050.340000,921.391602 +2050.345000,921.502380 +2050.350000,921.220398 +2050.355000,921.458069 +2050.360000,921.509521 +2050.365000,921.356689 +2050.370000,921.630676 +2050.375000,921.758484 +2050.380000,921.649597 +2050.385000,921.565002 +2050.390000,921.432007 +2050.395000,921.477600 +2050.400000,921.580383 +2050.405000,921.600586 +2050.410000,921.635132 +2050.415000,921.802917 +2050.420000,921.803955 +2050.425000,922.041321 +2050.430000,922.288757 +2050.435000,922.133728 +2050.440000,922.297729 +2050.445000,922.224915 +2050.450000,922.134460 +2050.455000,922.281067 +2050.460000,922.201965 +2050.465000,922.253967 +2050.470000,922.280945 +2050.475000,922.193115 +2050.480000,922.101013 +2050.485000,922.184265 +2050.490000,922.268005 +2050.495000,922.223083 +2050.500000,922.251770 +2050.505000,922.198975 +2050.510000,922.299011 +2050.515000,922.260864 +2050.520000,922.173462 +2050.525000,922.271179 +2050.530000,922.268555 +2050.535000,922.320679 +2050.540000,922.261108 +2050.545000,922.263733 +2050.550000,922.314026 +2050.555000,922.295105 +2050.560000,922.299316 +2050.565000,922.337097 +2050.570000,922.340210 +2050.575000,922.305176 +2050.580000,922.335510 +2050.585000,922.338928 +2050.590000,922.305664 +2050.595000,922.328613 +2050.600000,922.338257 +2050.605000,922.323792 +2050.610000,922.333191 +2050.615000,922.351929 +2050.620000,922.346191 +2050.625000,922.332153 +2050.630000,922.333557 +2050.635000,922.316895 +2050.640000,922.350769 +2050.645000,922.355591 +2050.650000,922.317810 +2050.655000,922.344788 +2050.660000,922.325378 +2050.665000,922.309326 +2050.670000,922.323242 +2050.675000,922.338623 +2050.680000,922.323914 +2050.685000,922.312317 +2050.690000,922.343323 +2050.695000,922.333557 +2050.700000,922.327026 +2050.705000,922.339539 +2050.710000,922.354004 +2050.715000,922.339661 +2050.720000,922.340698 +2050.725000,922.356384 +2050.730000,922.308289 +2050.735000,922.321960 +2050.740000,922.347229 +2050.745000,922.324036 +2050.750000,922.327332 +2050.755000,922.338135 +2050.760000,922.354675 +2050.765000,922.332153 +2050.770000,922.338257 +2050.775000,922.353638 +2050.780000,922.358826 +2050.785000,922.433899 +2050.790000,922.422791 +2050.795000,922.358459 +2050.800000,922.374451 +2050.805000,922.398315 +2050.810000,922.396118 +2050.815000,922.424377 +2050.820000,922.454590 +2050.825000,922.342285 +2050.830000,922.377075 +2050.835000,922.417175 +2050.840000,922.361206 +2050.845000,922.435730 +2050.850000,922.428772 +2050.855000,922.378784 +2050.860000,922.489136 +2050.865000,922.393738 +2050.870000,922.456970 +2050.875000,922.560364 +2050.880000,922.492615 +2050.885000,922.517761 +2050.890000,922.522095 +2050.895000,922.714905 +2050.900000,922.633972 +2050.905000,922.726624 +2050.910000,922.787720 +2050.915000,922.416138 +2050.920000,922.738098 +2050.925000,922.694580 +2050.930000,922.439880 +2050.935000,922.633728 +2050.940000,922.689880 +2050.945000,922.905518 +2050.950000,922.753723 +2050.955000,922.718689 +2050.960000,922.956177 +2050.965000,922.798157 +2050.970000,923.101440 +2050.975000,923.062500 +2050.980000,922.908386 +2050.985000,923.039307 +2050.990000,922.890381 +2050.995000,923.097961 +2051.000000,923.132874 +2051.005000,923.168152 +2051.010000,923.256470 +2051.015000,923.281250 +2051.020000,923.495850 +2051.025000,923.452026 +2051.030000,923.408020 +2051.035000,923.499878 +2051.040000,923.497498 +2051.045000,923.492310 +2051.050000,923.528137 +2051.055000,923.543091 +2051.060000,923.510803 +2051.065000,923.493225 +2051.070000,923.549255 +2051.075000,923.579712 +2051.080000,923.506653 +2051.085000,923.532837 +2051.090000,923.598206 +2051.095000,923.537659 +2051.100000,923.544128 +2051.105000,923.585083 +2051.110000,923.560303 +2051.115000,923.597412 +2051.120000,923.581787 +2051.125000,923.566833 +2051.130000,923.582214 +2051.135000,923.564636 +2051.140000,923.593933 +2051.145000,923.602112 +2051.150000,923.580505 +2051.155000,923.556396 +2051.160000,923.566040 +2051.165000,923.603699 +2051.170000,923.590942 +2051.175000,923.571899 +2051.180000,923.573975 +2051.185000,923.581909 +2051.190000,923.572571 +2051.195000,923.543213 +2051.200000,923.577087 +2051.205000,923.576721 +2051.210000,923.506348 +2051.215000,923.518494 +2051.220000,923.533325 +2051.225000,923.384827 +2051.230000,923.159424 +2051.235000,923.065002 +2051.240000,922.836975 +2051.245000,922.602844 +2051.250000,922.628906 +2051.255000,922.458923 +2051.260000,922.250305 +2051.265000,922.360291 +2051.270000,922.325623 +2051.275000,922.310120 +2051.280000,922.271912 +2051.285000,921.904785 +2051.290000,921.447754 +2051.295000,921.197083 +2051.300000,921.003479 +2051.305000,920.956360 +2051.310000,921.028625 +2051.315000,920.972107 +2051.320000,920.953735 +2051.325000,920.770142 +2051.330000,920.322144 +2051.335000,919.158813 +2051.340000,918.099365 +2051.345000,918.335266 +2051.350000,918.329834 +2051.355000,918.166077 +2051.360000,918.020691 +2051.365000,917.395142 +2051.370000,917.054626 +2051.375000,916.995361 +2051.380000,917.057373 +2051.385000,916.803833 +2051.390000,916.128174 +2051.395000,915.719604 +2051.400000,915.739502 +2051.405000,915.691956 +2051.410000,915.553894 +2051.415000,915.094360 +2051.420000,914.387573 +2051.425000,914.307068 +2051.430000,914.349915 +2051.435000,913.873596 +2051.440000,913.275757 +2051.445000,912.973206 +2051.450000,912.993835 +2051.455000,912.638367 +2051.460000,911.905701 +2051.465000,911.661682 +2051.470000,911.720703 +2051.475000,911.192627 +2051.480000,910.397522 +2051.485000,910.255615 +2051.490000,909.553284 +2051.495000,907.688904 +2051.500000,907.299377 +2051.505000,906.985413 +2051.510000,905.845398 +2051.515000,905.441650 +2051.520000,904.477173 +2051.525000,903.837769 +2051.530000,903.050171 +2051.535000,902.210999 +2051.540000,901.604370 +2051.545000,900.738953 +2051.550000,900.134888 +2051.555000,899.384644 +2051.560000,898.667480 +2051.565000,897.468994 +2051.570000,895.936707 +2051.575000,895.138062 +2051.580000,894.627075 +2051.585000,894.129822 +2051.590000,893.580872 +2051.595000,892.831238 +2051.600000,892.409302 +2051.605000,891.587036 +2051.610000,891.287354 +2051.615000,890.586975 +2051.620000,889.834717 +2051.625000,889.367615 +2051.630000,888.509583 +2051.635000,887.935791 +2051.640000,886.475037 +2051.645000,884.989441 +2051.650000,884.307617 +2051.655000,883.824951 +2051.660000,883.274475 +2051.665000,882.523071 +2051.670000,882.135925 +2051.675000,881.569702 +2051.680000,881.016357 +2051.685000,881.042847 +2051.690000,880.159851 +2051.695000,879.922913 +2051.700000,880.092773 +2051.705000,879.619690 +2051.710000,879.037964 +2051.715000,878.533447 +2051.720000,878.748230 +2051.725000,878.696777 +2051.730000,878.623657 +2051.735000,878.626953 +2051.740000,878.260864 +2051.745000,877.859253 +2051.750000,877.526855 +2051.755000,877.526489 +2051.760000,877.405640 +2051.765000,877.362549 +2051.770000,877.406860 +2051.775000,877.347351 +2051.780000,877.407166 +2051.785000,877.296875 +2051.790000,877.032593 +2051.795000,876.502808 +2051.800000,876.105103 +2051.805000,876.072083 +2051.810000,876.033142 +2051.815000,876.024231 +2051.820000,876.019470 +2051.825000,876.012634 +2051.830000,875.704834 +2051.835000,874.982056 +2051.840000,874.139343 +2051.845000,873.483459 +2051.850000,873.420654 +2051.855000,873.406799 +2051.860000,873.363953 +2051.865000,873.307922 +2051.870000,873.069702 +2051.875000,872.902100 +2051.880000,872.618286 +2051.885000,872.427551 +2051.890000,872.247314 +2051.895000,872.063721 +2051.900000,872.086060 +2051.905000,872.085388 +2051.910000,872.069763 +2051.915000,872.059021 +2051.920000,871.716736 +2051.925000,871.098633 +2051.930000,870.850159 +2051.935000,870.769897 +2051.940000,870.709961 +2051.945000,870.745117 +2051.950000,870.686951 +2051.955000,870.633728 +2051.960000,870.411255 +2051.965000,870.129333 +2051.970000,869.932495 +2051.975000,869.758057 +2051.980000,869.622070 +2051.985000,869.559692 +2051.990000,869.460022 +2051.995000,869.463806 +2052.000000,869.499268 +2052.005000,869.486694 +2052.010000,869.487061 +2052.015000,869.484009 +2052.020000,869.499756 +2052.025000,869.484985 +2052.030000,869.484741 +2052.035000,869.491577 +2052.040000,869.466064 +2052.045000,869.435242 +2052.050000,869.399292 +2052.055000,869.280396 +2052.060000,868.852234 +2052.065000,868.222839 +2052.070000,868.071167 +2052.075000,868.203125 +2052.080000,868.084534 +2052.085000,868.133911 +2052.090000,868.139282 +2052.095000,868.091919 +2052.100000,868.020264 +2052.105000,867.866516 +2052.110000,867.705444 +2052.115000,867.303162 +2052.120000,866.919006 +2052.125000,866.766418 +2052.130000,866.784973 +2052.135000,866.568054 +2052.140000,865.881348 +2052.145000,865.336731 +2052.150000,865.383972 +2052.155000,864.719177 +2052.160000,863.114868 +2052.165000,862.474426 +2052.170000,862.739563 +2052.175000,862.578308 +2052.180000,862.167419 +2052.185000,861.663879 +2052.190000,861.415344 +2052.195000,861.504578 +2052.200000,861.406067 +2052.205000,861.333801 +2052.210000,861.371887 +2052.215000,861.364075 +2052.220000,861.372864 +2052.225000,861.363403 +2052.230000,861.369934 +2052.235000,861.395020 +2052.240000,861.370728 +2052.245000,861.351013 +2052.250000,861.385254 +2052.255000,861.456360 +2052.260000,861.733398 +2052.265000,861.901794 +2052.270000,861.659485 +2052.275000,861.741699 +2052.280000,861.730957 +2052.285000,861.412109 +2052.290000,861.706726 +2052.295000,861.957336 +2052.300000,862.162170 +2052.305000,862.510864 +2052.310000,862.397522 +2052.315000,862.559082 +2052.320000,862.625671 +2052.325000,862.297546 +2052.330000,862.246216 +2052.335000,861.936768 +2052.340000,861.513245 +2052.345000,861.372986 +2052.350000,861.375793 +2052.355000,861.381775 +2052.360000,861.343994 +2052.365000,861.383728 +2052.370000,861.420532 +2052.375000,861.424805 +2052.380000,861.418945 +2052.385000,861.440430 +2052.390000,861.574158 +2052.395000,861.731812 +2052.400000,861.882751 +2052.405000,861.971497 +2052.410000,861.894653 +2052.415000,861.905701 +2052.420000,861.686829 +2052.425000,861.443054 +2052.430000,861.557190 +2052.435000,861.512939 +2052.440000,861.648193 +2052.445000,861.822021 +2052.450000,861.945435 +2052.455000,862.266602 +2052.460000,862.372803 +2052.465000,862.564758 +2052.470000,862.655823 +2052.475000,862.570618 +2052.480000,862.659241 +2052.485000,862.577026 +2052.490000,862.613464 +2052.495000,862.639648 +2052.500000,862.577148 +2052.505000,862.682190 +2052.510000,862.635437 +2052.515000,862.680054 +2052.520000,862.696899 +2052.525000,862.656616 +2052.530000,862.694092 +2052.535000,862.720459 +2052.540000,862.805969 +2052.545000,863.154480 +2052.550000,863.843994 +2052.555000,864.134216 +2052.560000,864.134216 +2052.565000,864.356995 +2052.570000,864.167114 +2052.575000,864.081787 +2052.580000,864.591187 +2052.585000,864.949585 +2052.590000,864.995056 +2052.595000,865.339355 +2052.600000,865.358032 +2052.605000,865.295166 +2052.610000,865.510132 +2052.615000,865.474304 +2052.620000,865.452820 +2052.625000,865.485718 +2052.630000,865.453003 +2052.635000,865.464539 +2052.640000,865.445862 +2052.645000,865.473999 +2052.650000,865.495056 +2052.655000,865.489502 +2052.660000,865.493713 +2052.665000,865.515198 +2052.670000,865.552368 +2052.675000,865.575806 +2052.680000,865.667480 +2052.685000,865.890747 +2052.690000,866.101624 +2052.695000,865.970032 +2052.700000,865.971375 +2052.705000,866.249390 +2052.710000,866.004883 +2052.715000,865.965820 +2052.720000,866.084534 +2052.725000,865.812073 +2052.730000,865.961792 +2052.735000,866.081116 +2052.740000,866.154419 +2052.745000,866.384033 +2052.750000,866.562500 +2052.755000,866.765625 +2052.760000,866.692322 +2052.765000,866.778992 +2052.770000,866.820129 +2052.775000,866.782715 +2052.780000,866.843811 +2052.785000,866.810242 +2052.790000,866.807434 +2052.795000,866.787598 +2052.800000,866.799500 +2052.805000,866.796692 +2052.810000,866.782227 +2052.815000,866.802856 +2052.820000,866.778442 +2052.825000,866.760559 +2052.830000,866.821777 +2052.835000,866.805481 +2052.840000,866.784973 +2052.845000,866.841492 +2052.850000,866.803406 +2052.855000,866.792358 +2052.860000,866.802734 +2052.865000,866.798950 +2052.870000,866.812866 +2052.875000,866.801880 +2052.880000,866.825867 +2052.885000,866.817749 +2052.890000,866.814819 +2052.895000,866.795410 +2052.900000,866.785950 +2052.905000,866.823914 +2052.910000,866.805664 +2052.915000,866.794434 +2052.920000,866.793091 +2052.925000,866.826538 +2052.930000,866.828796 +2052.935000,866.796570 +2052.940000,866.822266 +2052.945000,866.806641 +2052.950000,866.833191 +2052.955000,866.844788 +2052.960000,866.807129 +2052.965000,866.854004 +2052.970000,866.916443 +2052.975000,866.964966 +2052.980000,866.999146 +2052.985000,867.096985 +2052.990000,867.086792 +2052.995000,866.922607 +2053.000000,866.926636 +2053.005000,866.933350 +2053.010000,866.986267 +2053.015000,866.971497 +2053.020000,866.902527 +2053.025000,866.980042 +2053.030000,866.997681 +2053.035000,866.913269 +2053.040000,866.933044 +2053.045000,866.947510 +2053.050000,866.901794 +2053.055000,866.872559 +2053.060000,866.870178 +2053.065000,866.965393 +2053.070000,866.919373 +2053.075000,866.885498 +2053.080000,866.956787 +2053.085000,866.876465 +2053.090000,867.062805 +2053.095000,867.140198 +2053.100000,866.994568 +2053.105000,867.028442 +2053.110000,867.114258 +2053.115000,867.356812 +2053.120000,867.377930 +2053.125000,867.474487 +2053.130000,867.609985 +2053.135000,867.476318 +2053.140000,867.446045 +2053.145000,867.545349 +2053.150000,867.541260 +2053.155000,867.310364 +2053.160000,867.344727 +2053.165000,867.432678 +2053.170000,867.332703 +2053.175000,867.535706 +2053.180000,867.423706 +2053.185000,867.221619 +2053.190000,867.341492 +2053.195000,867.317383 +2053.200000,867.281677 +2053.205000,867.259399 +2053.210000,867.308411 +2053.215000,867.299561 +2053.220000,867.301086 +2053.225000,867.270813 +2053.230000,867.069519 +2053.235000,867.139832 +2053.240000,867.358093 +2053.245000,867.346802 +2053.250000,867.224670 +2053.255000,867.129089 +2053.260000,867.304810 +2053.265000,867.250427 +2053.270000,867.241943 +2053.275000,867.263611 +2053.280000,867.232483 +2053.285000,867.353210 +2053.290000,867.151733 +2053.295000,867.252014 +2053.300000,867.353333 +2053.305000,867.354492 +2053.310000,867.119324 +2053.315000,867.248291 +2053.320000,867.365723 +2053.325000,867.168213 +2053.330000,867.360168 +2053.335000,867.325867 +2053.340000,867.263123 +2053.345000,867.184814 +2053.350000,867.085266 +2053.355000,866.974854 +2053.360000,866.946838 +2053.365000,867.310547 +2053.370000,867.112610 +2053.375000,867.092407 +2053.380000,867.268005 +2053.385000,867.038696 +2053.390000,867.094238 +2053.395000,867.177307 +2053.400000,867.151245 +2053.405000,867.178284 +2053.410000,867.236389 +2053.415000,867.187439 +2053.420000,867.188843 +2053.425000,867.338318 +2053.430000,867.130066 +2053.435000,866.983643 +2053.440000,867.058899 +2053.445000,867.059204 +2053.450000,867.100098 +2053.455000,867.034119 +2053.460000,867.050415 +2053.465000,867.140991 +2053.470000,867.145081 +2053.475000,867.039246 +2053.480000,867.169312 +2053.485000,867.180054 +2053.490000,867.017090 +2053.495000,867.128113 +2053.500000,867.000122 +2053.505000,866.896057 +2053.510000,867.172913 +2053.515000,867.269287 +2053.520000,867.067566 +2053.525000,867.062500 +2053.530000,867.058105 +2053.535000,867.106628 +2053.540000,867.113586 +2053.545000,867.084290 +2053.550000,867.163452 +2053.555000,867.106750 +2053.560000,867.210693 +2053.565000,867.135742 +2053.570000,866.976990 +2053.575000,867.123047 +2053.580000,867.062500 +2053.585000,867.128784 +2053.590000,867.239197 +2053.595000,866.985168 +2053.600000,866.964600 +2053.605000,867.084839 +2053.610000,867.170166 +2053.615000,867.261475 +2053.620000,867.230225 +2053.625000,867.161377 +2053.630000,867.106628 +2053.635000,867.018799 +2053.640000,866.975159 +2053.645000,867.118042 +2053.650000,867.075500 +2053.655000,867.042480 +2053.660000,867.016541 +2053.665000,866.955811 +2053.670000,867.039856 +2053.675000,867.051392 +2053.680000,867.019043 +2053.685000,866.999451 +2053.690000,867.042297 +2053.695000,867.030884 +2053.700000,867.147156 +2053.705000,867.083008 +2053.710000,866.963318 +2053.715000,867.083008 +2053.720000,867.060730 +2053.725000,867.048767 +2053.730000,867.038696 +2053.735000,867.009888 +2053.740000,867.078735 +2053.745000,866.959534 +2053.750000,866.857117 +2053.755000,866.999451 +2053.760000,867.046082 +2053.765000,867.094238 +2053.770000,867.138062 +2053.775000,867.096680 +2053.780000,867.062988 +2053.785000,867.002747 +2053.790000,866.968323 +2053.795000,866.963989 +2053.800000,867.009033 +2053.805000,866.966553 +2053.810000,867.044128 +2053.815000,867.002869 +2053.820000,866.936279 +2053.825000,867.020142 +2053.830000,866.986877 +2053.835000,867.039856 +2053.840000,867.033813 +2053.845000,867.095215 +2053.850000,867.083984 +2053.855000,866.963440 +2053.860000,867.043762 +2053.865000,867.014282 +2053.870000,866.989197 +2053.875000,866.900269 +2053.880000,867.018066 +2053.885000,867.099792 +2053.890000,866.890015 +2053.895000,866.940552 +2053.900000,867.032532 +2053.905000,867.003845 +2053.910000,867.035461 +2053.915000,866.940552 +2053.920000,866.964600 +2053.925000,867.087891 +2053.930000,867.071472 +2053.935000,867.029419 +2053.940000,866.979736 +2053.945000,866.999634 +2053.950000,866.926025 +2053.955000,866.945862 +2053.960000,867.064270 +2053.965000,867.106445 +2053.970000,867.041321 +2053.975000,866.908630 +2053.980000,867.019653 +2053.985000,867.044434 +2053.990000,867.039673 +2053.995000,867.104492 +2054.000000,867.002563 +2054.005000,866.969299 +2054.010000,867.048645 +2054.015000,866.984192 +2054.020000,866.925537 +2054.025000,867.113586 +2054.030000,866.951050 +2054.035000,866.911194 +2054.040000,867.046204 +2054.045000,867.097656 +2054.050000,867.102539 +2054.055000,866.978088 +2054.060000,866.978638 +2054.065000,867.020996 +2054.070000,867.073730 +2054.075000,867.054199 +2054.080000,867.046814 +2054.085000,867.114441 +2054.090000,866.993774 +2054.095000,867.010254 +2054.100000,867.044556 +2054.105000,867.045410 +2054.110000,867.055298 +2054.115000,866.970947 +2054.120000,867.045837 +2054.125000,867.069519 +2054.130000,867.094360 +2054.135000,867.119019 +2054.140000,867.036743 +2054.145000,866.941650 +2054.150000,866.918030 +2054.155000,866.983643 +2054.160000,866.854370 +2054.165000,866.951904 +2054.170000,866.996704 +2054.175000,866.904480 +2054.180000,867.024902 +2054.185000,866.979736 +2054.190000,866.923401 +2054.195000,867.002075 +2054.200000,867.038208 +2054.205000,867.072083 +2054.210000,866.969543 +2054.215000,866.904480 +2054.220000,867.001770 +2054.225000,867.041626 +2054.230000,866.966736 +2054.235000,867.018799 +2054.240000,867.002197 +2054.245000,866.869202 +2054.250000,867.006958 +2054.255000,867.041931 +2054.260000,867.032349 +2054.265000,867.084290 +2054.270000,866.985596 +2054.275000,866.971497 +2054.280000,866.954834 +2054.285000,867.050415 +2054.290000,867.190979 +2054.295000,867.127625 +2054.300000,866.966370 +2054.305000,867.035950 +2054.310000,867.075195 +2054.315000,866.983948 +2054.320000,866.970276 +2054.325000,866.951294 +2054.330000,867.007629 +2054.335000,866.916870 +2054.340000,866.858276 +2054.345000,866.999817 +2054.350000,866.942810 +2054.355000,867.055603 +2054.360000,867.050293 +2054.365000,867.008728 +2054.370000,867.012939 +2054.375000,866.964111 +2054.380000,867.076782 +2054.385000,866.908386 +2054.390000,867.001404 +2054.395000,867.037720 +2054.400000,866.916870 +2054.405000,866.958130 +2054.410000,866.890686 +2054.415000,867.039856 +2054.420000,867.020996 +2054.425000,867.021118 +2054.430000,867.015442 +2054.435000,866.918823 +2054.440000,867.035095 +2054.445000,867.010559 +2054.450000,866.995239 +2054.455000,867.035767 +2054.460000,866.981018 +2054.465000,866.978943 +2054.470000,866.960083 +2054.475000,866.980042 +2054.480000,866.936951 +2054.485000,867.009583 +2054.490000,867.193420 +2054.495000,867.032043 +2054.500000,867.055481 +2054.505000,866.983337 +2054.510000,867.021118 +2054.515000,867.167053 +2054.520000,866.933167 +2054.525000,867.002380 +2054.530000,866.979736 +2054.535000,866.996704 +2054.540000,867.045532 +2054.545000,867.030396 +2054.550000,867.119019 +2054.555000,867.083191 +2054.560000,867.136902 +2054.565000,867.086121 +2054.570000,867.067383 +2054.575000,867.118469 +2054.580000,866.974426 +2054.585000,867.104980 +2054.590000,866.930908 +2054.595000,866.816101 +2054.600000,867.037720 +2054.605000,867.015564 +2054.610000,867.007935 +2054.615000,867.012329 +2054.620000,867.002380 +2054.625000,866.893433 +2054.630000,866.922424 +2054.635000,867.117371 +2054.640000,867.077454 +2054.645000,867.168640 +2054.650000,867.032166 +2054.655000,866.804382 +2054.660000,866.982971 +2054.665000,866.959106 +2054.670000,866.972900 +2054.675000,867.003418 +2054.680000,866.948120 +2054.685000,866.957947 +2054.690000,866.984192 +2054.695000,867.002197 +2054.700000,867.023682 +2054.705000,866.998169 +2054.710000,867.044739 +2054.715000,867.117371 +2054.720000,867.039001 +2054.725000,866.960693 +2054.730000,867.052673 +2054.735000,867.082520 +2054.740000,866.815247 +2054.745000,866.975708 +2054.750000,867.079102 +2054.755000,867.064087 +2054.760000,867.039551 +2054.765000,866.853027 +2054.770000,866.949341 +2054.775000,866.925537 +2054.780000,866.997498 +2054.785000,867.089050 +2054.790000,866.859070 +2054.795000,867.048645 +2054.800000,867.050720 +2054.805000,866.938049 +2054.810000,867.034668 +2054.815000,866.981995 +2054.820000,867.007446 +2054.825000,866.917725 +2054.830000,866.944885 +2054.835000,867.061157 +2054.840000,866.943237 +2054.845000,867.015137 +2054.850000,867.016846 +2054.855000,866.928589 +2054.860000,866.918518 +2054.865000,867.007751 +2054.870000,867.115417 +2054.875000,866.946716 +2054.880000,866.877441 +2054.885000,867.022400 +2054.890000,867.075806 +2054.895000,867.055176 +2054.900000,867.026489 +2054.905000,867.133484 +2054.910000,867.072083 +2054.915000,866.939209 +2054.920000,867.054321 +2054.925000,866.970154 +2054.930000,867.004028 +2054.935000,867.011658 +2054.940000,867.019165 +2054.945000,867.031738 +2054.950000,866.979919 +2054.955000,867.123352 +2054.960000,866.977783 +2054.965000,866.896362 +2054.970000,866.997681 +2054.975000,866.902222 +2054.980000,866.956604 +2054.985000,867.033325 +2054.990000,867.033142 +2054.995000,866.983215 +2055.000000,866.984314 +2055.005000,866.956482 +2055.010000,866.910339 +2055.015000,866.994080 +2055.020000,867.073425 +2055.025000,867.044128 +2055.030000,867.017395 +2055.035000,866.931702 +2055.040000,866.856323 +2055.045000,867.005493 +2055.050000,866.960388 +2055.055000,866.951050 +2055.060000,866.924255 +2055.065000,866.927795 +2055.070000,867.000793 +2055.075000,866.963989 +2055.080000,866.992981 +2055.085000,866.917542 +2055.090000,866.954651 +2055.095000,867.067017 +2055.100000,866.991638 +2055.105000,866.915222 +2055.110000,866.991455 +2055.115000,866.927979 +2055.120000,866.980591 +2055.125000,867.018066 +2055.130000,866.919006 +2055.135000,866.970947 +2055.140000,866.997192 +2055.145000,867.063782 +2055.150000,867.091980 +2055.155000,866.942505 +2055.160000,866.883972 +2055.165000,867.027832 +2055.170000,866.996521 +2055.175000,866.941833 +2055.180000,867.035645 +2055.185000,867.025330 +2055.190000,866.945190 +2055.195000,867.055847 +2055.200000,866.971130 +2055.205000,866.817078 +2055.210000,866.961853 +2055.215000,866.896362 +2055.220000,866.867371 +2055.225000,866.944458 +2055.230000,866.986572 +2055.235000,867.021118 +2055.240000,866.911194 +2055.245000,867.011536 +2055.250000,866.974182 +2055.255000,866.911316 +2055.260000,867.104004 +2055.265000,866.981689 +2055.270000,867.028259 +2055.275000,867.067993 +2055.280000,866.964111 +2055.285000,866.973755 +2055.290000,867.078125 +2055.295000,866.998657 +2055.300000,866.990173 +2055.305000,867.205322 +2055.310000,867.153992 +2055.315000,867.144775 +2055.320000,867.206787 +2055.325000,867.096863 +2055.330000,867.031860 +2055.335000,867.096985 +2055.340000,867.066589 +2055.345000,867.036072 +2055.350000,867.095703 +2055.355000,866.917053 +2055.360000,866.981567 +2055.365000,867.093933 +2055.370000,867.012207 +2055.375000,867.149658 +2055.380000,867.050110 +2055.385000,866.981262 +2055.390000,867.092957 +2055.395000,867.042480 +2055.400000,867.186584 +2055.405000,866.941162 +2055.410000,866.873108 +2055.415000,867.166382 +2055.420000,867.018494 +2055.425000,866.981567 +2055.430000,867.090698 +2055.435000,867.079712 +2055.440000,867.001892 +2055.445000,867.051941 +2055.450000,867.092102 +2055.455000,866.922302 +2055.460000,866.941528 +2055.465000,866.971924 +2055.470000,866.939575 +2055.475000,867.089722 +2055.480000,867.028259 +2055.485000,867.087219 +2055.490000,867.115234 +2055.495000,866.918823 +2055.500000,866.966064 +2055.505000,866.972900 +2055.510000,866.999451 +2055.515000,866.996338 +2055.520000,866.965942 +2055.525000,866.933838 +2055.530000,866.938232 +2055.535000,867.066223 +2055.540000,866.995911 +2055.545000,866.888428 +2055.550000,867.007935 +2055.555000,867.076355 +2055.560000,867.105164 +2055.565000,867.176331 +2055.570000,867.052917 +2055.575000,866.947144 +2055.580000,867.007324 +2055.585000,867.134949 +2055.590000,867.178284 +2055.595000,867.004822 +2055.600000,866.884521 +2055.605000,866.909912 +2055.610000,867.004517 +2055.615000,866.979736 +2055.620000,866.872131 +2055.625000,866.954346 +2055.630000,866.869507 +2055.635000,866.888062 +2055.640000,867.006958 +2055.645000,866.970520 +2055.650000,866.991150 +2055.655000,867.040833 +2055.660000,867.041199 +2055.665000,867.005493 +2055.670000,866.968872 +2055.675000,866.888855 +2055.680000,866.995056 +2055.685000,867.121094 +2055.690000,866.991455 +2055.695000,866.966736 +2055.700000,867.006104 +2055.705000,867.085815 +2055.710000,867.079590 +2055.715000,866.941162 +2055.720000,866.958435 +2055.725000,867.036255 +2055.730000,867.047668 +2055.735000,867.004700 +2055.740000,866.948120 +2055.745000,866.883850 +2055.750000,866.872253 +2055.755000,866.969543 +2055.760000,867.138550 +2055.765000,867.013916 +2055.770000,866.911560 +2055.775000,867.030884 +2055.780000,866.877319 +2055.785000,866.983826 +2055.790000,867.025879 +2055.795000,866.905457 +2055.800000,866.926208 +2055.805000,866.968689 +2055.810000,867.010254 +2055.815000,866.940308 +2055.820000,866.927307 +2055.825000,866.894409 +2055.830000,866.856934 +2055.835000,866.948364 +2055.840000,866.973572 +2055.845000,866.953369 +2055.850000,866.941528 +2055.855000,866.942139 +2055.860000,866.998169 +2055.865000,866.955505 +2055.870000,866.897644 +2055.875000,866.935791 +2055.880000,867.005371 +2055.885000,867.068359 +2055.890000,866.921753 +2055.895000,866.915100 +2055.900000,866.975403 +2055.905000,866.979431 +2055.910000,866.976807 +2055.915000,866.811218 +2055.920000,866.885803 +2055.925000,867.066589 +2055.930000,867.016113 +2055.935000,866.872559 +2055.940000,866.999939 +2055.945000,866.947998 +2055.950000,866.821655 +2055.955000,866.973755 +2055.960000,866.915100 +2055.965000,866.906982 +2055.970000,866.974854 +2055.975000,866.903198 +2055.980000,866.949097 +2055.985000,866.909363 +2055.990000,866.925659 +2055.995000,867.020996 +2056.000000,867.049438 +2056.005000,866.978088 +2056.010000,866.990356 +2056.015000,866.998962 +2056.020000,866.846741 +2056.025000,866.840881 +2056.030000,866.916199 +2056.035000,866.985291 diff --git a/lib/pyarrow_arm/pyarrow_test.py b/lib/pyarrow_arm/pyarrow_test.py new file mode 100644 index 0000000..233eb69 --- /dev/null +++ b/lib/pyarrow_arm/pyarrow_test.py @@ -0,0 +1,18 @@ + +import pyarrow.parquet as pq +import pyarrow.csv as pv + +csvfile = 'pressureVacuum.csv' + +tb = pv.read_csv(csvfile,parse_options=pv.ParseOptions(delimiter=',')) + +print(tb) + +parquetfile = 'pressureVacuum.parquet' + +pq.write_table(tb,parquetfile,compression='SNAPPY') +# {‘NONE’, ‘SNAPPY’, ‘GZIP’, ‘LZO’, ‘BROTLI’, ‘LZ4’, ‘ZSTD’} + +df = pq.read_table(parquetfile,columns=None) + +print(df) diff --git a/lib/pyarrow_arm/sync_pi.sh b/lib/pyarrow_arm/sync_pi.sh new file mode 100755 index 0000000..5a68d1a --- /dev/null +++ b/lib/pyarrow_arm/sync_pi.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +if [ -z "$1" ] +then + exit 1 +fi + +scp $1 pirate@mf-pi-40:/home/pirate/pyarrow/ diff --git a/setup.py b/setup.py index 005883a..4ae46d5 100644 --- a/setup.py +++ b/setup.py @@ -4,6 +4,10 @@ from Cython.Build import cythonize extensions = Extension( name="raw_eater", + version="0.1.0", + author="Mario Fink", + author_email="mario.fink@record-evolution.de", + url="https://github.com/RecordEvolution/raw_eater.git", sources=["raw_eater.pyx"], # libraries=[""], library_dirs=["src"], diff --git a/src/main.cpp b/src/main.cpp index d4d708c..eb4d4d7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -57,8 +57,8 @@ int main(int argc, char* argv[]) // for ( unsigned long int i = 0; i < 10; i++ ) std::cout<