From dc768d4136dea668bf95530368a6f757f112bd42 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Tue, 11 Jul 2023 10:50:33 +0200 Subject: [PATCH 1/9] update setup requirements (#266) --- pyproject.toml | 3 +-- setup.cfg | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ab2973280..cecafa7c3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,7 @@ [build-system] requires = [ "setuptools>=42", - "wheel", - "setuptools_scm[toml]>=7.0", + "setuptools_scm>=7.0", ] build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index efeb355e9..d1c4e31b4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -58,9 +58,7 @@ dev = black < 23 flake8 isort - setuptools twine - wheel [flake8] ignore= From de55522092ce0862b335726454efa27c4e421210 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Tue, 11 Jul 2023 15:17:54 +0200 Subject: [PATCH 2/9] add aerosol file to data folder (#268) --- data/isaod_gl_2022.dat | 2087 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2087 insertions(+) create mode 100644 data/isaod_gl_2022.dat diff --git a/data/isaod_gl_2022.dat b/data/isaod_gl_2022.dat new file mode 100644 index 000000000..d5988b556 --- /dev/null +++ b/data/isaod_gl_2022.dat @@ -0,0 +1,2087 @@ +# scripturl01 :: http://climexp.knmi.nl/getindices.cgi?STATION=stratospheric_AOD&TYPE=i&WMO=NASAData/saod_gl&id=id +# global Optical Thickness at 550 nm +# from NASA/GISS +# AOD [1] stratospheric aerosol optical depth +# institution :: NASA/GISS +# title :: GISS stratospheric aerosol optical depth at 550 nm +# contact :: https://www.giss.nasa.gov/staff/makiko_sato.html +# references :: Bourassa, A.E., A. Robock, et al. 2012: Large volcanic aerosol load in the stratosphere linked to Asian monsoon transport. Science 337, 78-81, doi:10.1126/science.1219371 +# source_url :: https://data.giss.nasa.gov/modelforce/strataer/ +# history :: retrieved and converted 2023-07-10 21:49:40 +# climexp_url :: https://climexp.knmi.nl/getindices.cgi?NASAData/saod_gl +1850 1 0.004 +1850 2 0.004 +1850 3 0.004 +1850 4 0.004 +1850 5 0.004 +1850 6 0.004 +1850 7 0.003 +1850 8 0.003 +1850 9 0.003 +1850 10 0.003 +1850 11 0.003 +1850 12 0.003 +1851 1 0.003 +1851 2 0.003 +1851 3 0.003 +1851 4 0.003 +1851 5 0.003 +1851 6 0.003 +1851 7 0.002 +1851 8 0.002 +1851 9 0.002 +1851 10 0.002 +1851 11 0.002 +1851 12 0.002 +1852 1 0.002 +1852 2 0.002 +1852 3 0.002 +1852 4 0.002 +1852 5 0.002 +1852 6 0.002 +1852 7 0.001 +1852 8 0.001 +1852 9 0.001 +1852 10 0.001 +1852 11 0.001 +1852 12 0.001 +1853 1 0.001 +1853 2 0.001 +1853 3 0.001 +1853 4 0.001 +1853 5 0.001 +1853 6 0.001 +1853 7 0.001 +1853 8 0.001 +1853 9 0.001 +1853 10 0.001 +1853 11 0.000 +1853 12 0.000 +1854 1 0.000 +1854 2 0.000 +1854 3 0.000 +1854 4 0.000 +1854 5 0.000 +1854 6 0.000 +1854 7 0.000 +1854 8 0.000 +1854 9 0.000 +1854 10 0.000 +1854 11 0.000 +1854 12 0.000 +1855 1 0.000 +1855 2 0.000 +1855 3 0.000 +1855 4 0.000 +1855 5 0.000 +1855 6 0.000 +1855 7 0.000 +1855 8 0.000 +1855 9 0.000 +1855 10 0.003 +1855 11 0.007 +1855 12 0.012 +1856 1 0.017 +1856 2 0.021 +1856 3 0.026 +1856 4 0.031 +1856 5 0.035 +1856 6 0.040 +1856 7 0.043 +1856 8 0.046 +1856 9 0.048 +1856 10 0.050 +1856 11 0.052 +1856 12 0.055 +1857 1 0.057 +1857 2 0.059 +1857 3 0.062 +1857 4 0.064 +1857 5 0.066 +1857 6 0.068 +1857 7 0.068 +1857 8 0.064 +1857 9 0.060 +1857 10 0.056 +1857 11 0.052 +1857 12 0.048 +1858 1 0.044 +1858 2 0.041 +1858 3 0.037 +1858 4 0.034 +1858 5 0.032 +1858 6 0.029 +1858 7 0.027 +1858 8 0.025 +1858 9 0.023 +1858 10 0.021 +1858 11 0.019 +1858 12 0.018 +1859 1 0.016 +1859 2 0.015 +1859 3 0.014 +1859 4 0.013 +1859 5 0.012 +1859 6 0.011 +1859 7 0.010 +1859 8 0.010 +1859 9 0.009 +1859 10 0.009 +1859 11 0.008 +1859 12 0.007 +1860 1 0.007 +1860 2 0.006 +1860 3 0.006 +1860 4 0.005 +1860 5 0.005 +1860 6 0.005 +1860 7 0.004 +1860 8 0.004 +1860 9 0.004 +1860 10 0.003 +1860 11 0.003 +1860 12 0.003 +1861 1 0.003 +1861 2 0.002 +1861 3 0.002 +1861 4 0.002 +1861 5 0.002 +1861 6 0.002 +1861 7 0.002 +1861 8 0.003 +1861 9 0.004 +1861 10 0.005 +1861 11 0.007 +1861 12 0.008 +1862 1 0.009 +1862 2 0.010 +1862 3 0.012 +1862 4 0.013 +1862 5 0.014 +1862 6 0.016 +1862 7 0.016 +1862 8 0.016 +1862 9 0.015 +1862 10 0.014 +1862 11 0.014 +1862 12 0.014 +1863 1 0.013 +1863 2 0.012 +1863 3 0.012 +1863 4 0.011 +1863 5 0.011 +1863 6 0.010 +1863 7 0.010 +1863 8 0.009 +1863 9 0.009 +1863 10 0.008 +1863 11 0.008 +1863 12 0.007 +1864 1 0.007 +1864 2 0.006 +1864 3 0.006 +1864 4 0.005 +1864 5 0.005 +1864 6 0.005 +1864 7 0.004 +1864 8 0.004 +1864 9 0.004 +1864 10 0.004 +1864 11 0.003 +1864 12 0.003 +1865 1 0.003 +1865 2 0.003 +1865 3 0.002 +1865 4 0.002 +1865 5 0.002 +1865 6 0.002 +1865 7 0.002 +1865 8 0.002 +1865 9 0.002 +1865 10 0.002 +1865 11 0.001 +1865 12 0.001 +1866 1 0.001 +1866 2 0.001 +1866 3 0.001 +1866 4 0.001 +1866 5 0.001 +1866 6 0.001 +1866 7 0.001 +1866 8 0.001 +1866 9 0.001 +1866 10 0.001 +1866 11 0.001 +1866 12 0.001 +1867 1 0.001 +1867 2 0.001 +1867 3 0.000 +1867 4 0.000 +1867 5 0.000 +1867 6 0.000 +1867 7 0.000 +1867 8 0.000 +1867 9 0.000 +1867 10 0.000 +1867 11 0.000 +1867 12 0.000 +1868 1 0.000 +1868 2 0.000 +1868 3 0.000 +1868 4 0.000 +1868 5 0.000 +1868 6 0.000 +1868 7 0.000 +1868 8 0.000 +1868 9 0.000 +1868 10 0.000 +1868 11 0.000 +1868 12 0.000 +1869 1 0.000 +1869 2 0.000 +1869 3 0.001 +1869 4 0.001 +1869 5 0.001 +1869 6 0.001 +1869 7 0.001 +1869 8 0.001 +1869 9 0.001 +1869 10 0.001 +1869 11 0.001 +1869 12 0.001 +1870 1 0.001 +1870 2 0.001 +1870 3 0.001 +1870 4 0.001 +1870 5 0.001 +1870 6 0.001 +1870 7 0.001 +1870 8 0.001 +1870 9 0.001 +1870 10 0.001 +1870 11 0.001 +1870 12 0.001 +1871 1 0.001 +1871 2 0.001 +1871 3 0.001 +1871 4 0.001 +1871 5 0.001 +1871 6 0.001 +1871 7 0.001 +1871 8 0.001 +1871 9 0.001 +1871 10 0.001 +1871 11 0.001 +1871 12 0.001 +1872 1 0.001 +1872 2 0.001 +1872 3 0.001 +1872 4 0.001 +1872 5 0.001 +1872 6 0.001 +1872 7 0.001 +1872 8 0.001 +1872 9 0.002 +1872 10 0.002 +1872 11 0.002 +1872 12 0.002 +1873 1 0.002 +1873 2 0.003 +1873 3 0.003 +1873 4 0.003 +1873 5 0.003 +1873 6 0.003 +1873 7 0.003 +1873 8 0.003 +1873 9 0.003 +1873 10 0.003 +1873 11 0.003 +1873 12 0.003 +1874 1 0.003 +1874 2 0.002 +1874 3 0.002 +1874 4 0.002 +1874 5 0.002 +1874 6 0.002 +1874 7 0.002 +1874 8 0.002 +1874 9 0.002 +1874 10 0.002 +1874 11 0.001 +1874 12 0.001 +1875 1 0.001 +1875 2 0.001 +1875 3 0.001 +1875 4 0.001 +1875 5 0.001 +1875 6 0.001 +1875 7 0.001 +1875 8 0.001 +1875 9 0.001 +1875 10 0.002 +1875 11 0.002 +1875 12 0.003 +1876 1 0.004 +1876 2 0.004 +1876 3 0.005 +1876 4 0.006 +1876 5 0.007 +1876 6 0.007 +1876 7 0.007 +1876 8 0.007 +1876 9 0.007 +1876 10 0.007 +1876 11 0.007 +1876 12 0.007 +1877 1 0.006 +1877 2 0.006 +1877 3 0.006 +1877 4 0.006 +1877 5 0.006 +1877 6 0.005 +1877 7 0.005 +1877 8 0.005 +1877 9 0.005 +1877 10 0.005 +1877 11 0.004 +1877 12 0.004 +1878 1 0.004 +1878 2 0.004 +1878 3 0.004 +1878 4 0.004 +1878 5 0.003 +1878 6 0.003 +1878 7 0.003 +1878 8 0.003 +1878 9 0.003 +1878 10 0.003 +1878 11 0.003 +1878 12 0.002 +1879 1 0.002 +1879 2 0.002 +1879 3 0.002 +1879 4 0.002 +1879 5 0.002 +1879 6 0.002 +1879 7 0.002 +1879 8 0.002 +1879 9 0.002 +1879 10 0.002 +1879 11 0.002 +1879 12 0.002 +1880 1 0.002 +1880 2 0.001 +1880 3 0.001 +1880 4 0.001 +1880 5 0.001 +1880 6 0.001 +1880 7 0.001 +1880 8 0.001 +1880 9 0.001 +1880 10 0.001 +1880 11 0.001 +1880 12 0.001 +1881 1 0.001 +1881 2 0.001 +1881 3 0.001 +1881 4 0.001 +1881 5 0.001 +1881 6 0.001 +1881 7 0.001 +1881 8 0.001 +1881 9 0.001 +1881 10 0.001 +1881 11 0.001 +1881 12 0.001 +1882 1 0.001 +1882 2 0.001 +1882 3 0.001 +1882 4 0.001 +1882 5 0.001 +1882 6 0.001 +1882 7 0.001 +1882 8 0.001 +1882 9 0.001 +1882 10 0.001 +1882 11 0.001 +1882 12 0.001 +1883 1 0.029 +1883 2 0.033 +1883 3 0.030 +1883 4 0.028 +1883 5 0.025 +1883 6 0.023 +1883 7 0.022 +1883 8 0.020 +1883 9 0.041 +1883 10 0.078 +1883 11 0.106 +1883 12 0.132 +1884 1 0.152 +1884 2 0.152 +1884 3 0.163 +1884 4 0.164 +1884 5 0.157 +1884 6 0.153 +1884 7 0.152 +1884 8 0.139 +1884 9 0.135 +1884 10 0.125 +1884 11 0.115 +1884 12 0.108 +1885 1 0.101 +1885 2 0.087 +1885 3 0.082 +1885 4 0.073 +1885 5 0.067 +1885 6 0.062 +1885 7 0.058 +1885 8 0.053 +1885 9 0.049 +1885 10 0.047 +1885 11 0.043 +1885 12 0.041 +1886 1 0.038 +1886 2 0.034 +1886 3 0.031 +1886 4 0.029 +1886 5 0.026 +1886 6 0.024 +1886 7 0.023 +1886 8 0.020 +1886 9 0.020 +1886 10 0.069 +1886 11 0.064 +1886 12 0.059 +1887 1 0.054 +1887 2 0.050 +1887 3 0.046 +1887 4 0.042 +1887 5 0.039 +1887 6 0.036 +1887 7 0.033 +1887 8 0.034 +1887 9 0.032 +1887 10 0.029 +1887 11 0.027 +1887 12 0.025 +1888 1 0.023 +1888 2 0.021 +1888 3 0.019 +1888 4 0.018 +1888 5 0.016 +1888 6 0.011 +1888 7 0.013 +1888 8 0.015 +1888 9 0.022 +1888 10 0.030 +1888 11 0.037 +1888 12 0.038 +1889 1 0.038 +1889 2 0.039 +1889 3 0.036 +1889 4 0.033 +1889 5 0.031 +1889 6 0.028 +1889 7 0.026 +1889 8 0.024 +1889 9 0.022 +1889 10 0.020 +1889 11 0.019 +1889 12 0.026 +1890 1 0.032 +1890 2 0.039 +1890 3 0.042 +1890 4 0.045 +1890 5 0.048 +1890 6 0.044 +1890 7 0.041 +1890 8 0.038 +1890 9 0.034 +1890 10 0.033 +1890 11 0.036 +1890 12 0.038 +1891 1 0.040 +1891 2 0.042 +1891 3 0.039 +1891 4 0.036 +1891 5 0.033 +1891 6 0.030 +1891 7 0.028 +1891 8 0.026 +1891 9 0.024 +1891 10 0.022 +1891 11 0.021 +1891 12 0.021 +1892 1 0.021 +1892 2 0.021 +1892 3 0.023 +1892 4 0.025 +1892 5 0.028 +1892 6 0.025 +1892 7 0.023 +1892 8 0.022 +1892 9 0.020 +1892 10 0.018 +1892 11 0.017 +1892 12 0.015 +1893 1 0.014 +1893 2 0.013 +1893 3 0.012 +1893 4 0.011 +1893 5 0.010 +1893 6 0.009 +1893 7 0.009 +1893 8 0.008 +1893 9 0.007 +1893 10 0.007 +1893 11 0.006 +1893 12 0.006 +1894 1 0.005 +1894 2 0.005 +1894 3 0.004 +1894 4 0.004 +1894 5 0.004 +1894 6 0.004 +1894 7 0.003 +1894 8 0.003 +1894 9 0.003 +1894 10 0.002 +1894 11 0.002 +1894 12 0.002 +1895 1 0.002 +1895 2 0.002 +1895 3 0.002 +1895 4 0.002 +1895 5 0.002 +1895 6 0.001 +1895 7 0.001 +1895 8 0.001 +1895 9 0.001 +1895 10 0.001 +1895 11 0.001 +1895 12 0.001 +1896 1 0.006 +1896 2 0.006 +1896 3 0.007 +1896 4 0.013 +1896 5 0.020 +1896 6 0.023 +1896 7 0.025 +1896 8 0.028 +1896 9 0.026 +1896 10 0.024 +1896 11 0.022 +1896 12 0.020 +1897 1 0.019 +1897 2 0.017 +1897 3 0.016 +1897 4 0.014 +1897 5 0.014 +1897 6 0.014 +1897 7 0.015 +1897 8 0.015 +1897 9 0.017 +1897 10 0.020 +1897 11 0.022 +1897 12 0.020 +1898 1 0.018 +1898 2 0.017 +1898 3 0.015 +1898 4 0.014 +1898 5 0.013 +1898 6 0.012 +1898 7 0.011 +1898 8 0.010 +1898 9 0.009 +1898 10 0.009 +1898 11 0.008 +1898 12 0.007 +1899 1 0.007 +1899 2 0.006 +1899 3 0.006 +1899 4 0.005 +1899 5 0.005 +1899 6 0.005 +1899 7 0.004 +1899 8 0.004 +1899 9 0.004 +1899 10 0.003 +1899 11 0.003 +1899 12 0.003 +1900 1 0.003 +1900 2 0.002 +1900 3 0.002 +1900 4 0.002 +1900 5 0.002 +1900 6 0.002 +1900 7 0.002 +1900 8 0.002 +1900 9 0.001 +1900 10 0.001 +1900 11 0.001 +1900 12 0.001 +1901 1 0.001 +1901 2 0.001 +1901 3 0.001 +1901 4 0.001 +1901 5 0.001 +1901 6 0.001 +1901 7 0.001 +1901 8 0.001 +1901 9 0.001 +1901 10 0.001 +1901 11 0.001 +1901 12 0.001 +1902 1 0.003 +1902 2 0.004 +1902 3 0.007 +1902 4 0.009 +1902 5 0.011 +1902 6 0.010 +1902 7 0.009 +1902 8 0.010 +1902 9 0.021 +1902 10 0.039 +1902 11 0.053 +1902 12 0.066 +1903 1 0.076 +1903 2 0.076 +1903 3 0.082 +1903 4 0.082 +1903 5 0.079 +1903 6 0.076 +1903 7 0.076 +1903 8 0.070 +1903 9 0.068 +1903 10 0.063 +1903 11 0.058 +1903 12 0.054 +1904 1 0.051 +1904 2 0.044 +1904 3 0.041 +1904 4 0.036 +1904 5 0.034 +1904 6 0.031 +1904 7 0.029 +1904 8 0.026 +1904 9 0.024 +1904 10 0.023 +1904 11 0.022 +1904 12 0.021 +1905 1 0.019 +1905 2 0.017 +1905 3 0.016 +1905 4 0.015 +1905 5 0.013 +1905 6 0.012 +1905 7 0.011 +1905 8 0.010 +1905 9 0.010 +1905 10 0.009 +1905 11 0.009 +1905 12 0.009 +1906 1 0.009 +1906 2 0.009 +1906 3 0.007 +1906 4 0.007 +1906 5 0.006 +1906 6 0.006 +1906 7 0.005 +1906 8 0.009 +1906 9 0.008 +1906 10 0.008 +1906 11 0.007 +1906 12 0.007 +1907 1 0.006 +1907 2 0.006 +1907 3 0.007 +1907 4 0.009 +1907 5 0.011 +1907 6 0.011 +1907 7 0.011 +1907 8 0.011 +1907 9 0.010 +1907 10 0.009 +1907 11 0.009 +1907 12 0.010 +1908 1 0.013 +1908 2 0.015 +1908 3 0.014 +1908 4 0.013 +1908 5 0.012 +1908 6 0.011 +1908 7 0.010 +1908 8 0.009 +1908 9 0.008 +1908 10 0.008 +1908 11 0.007 +1908 12 0.007 +1909 1 0.006 +1909 2 0.006 +1909 3 0.005 +1909 4 0.005 +1909 5 0.004 +1909 6 0.004 +1909 7 0.004 +1909 8 0.003 +1909 9 0.003 +1909 10 0.003 +1909 11 0.003 +1909 12 0.002 +1910 1 0.003 +1910 2 0.004 +1910 3 0.004 +1910 4 0.004 +1910 5 0.004 +1910 6 0.003 +1910 7 0.003 +1910 8 0.003 +1910 9 0.003 +1910 10 0.002 +1910 11 0.002 +1910 12 0.002 +1911 1 0.002 +1911 2 0.002 +1911 3 0.002 +1911 4 0.002 +1911 5 0.002 +1911 6 0.002 +1911 7 0.002 +1911 8 0.002 +1911 9 0.001 +1911 10 0.001 +1911 11 0.001 +1911 12 0.001 +1912 1 0.001 +1912 2 0.002 +1912 3 0.002 +1912 4 0.002 +1912 5 0.002 +1912 6 0.015 +1912 7 0.027 +1912 8 0.040 +1912 9 0.038 +1912 10 0.036 +1912 11 0.034 +1912 12 0.033 +1913 1 0.032 +1913 2 0.032 +1913 3 0.029 +1913 4 0.027 +1913 5 0.028 +1913 6 0.025 +1913 7 0.023 +1913 8 0.022 +1913 9 0.020 +1913 10 0.018 +1913 11 0.017 +1913 12 0.015 +1914 1 0.014 +1914 2 0.013 +1914 3 0.013 +1914 4 0.012 +1914 5 0.011 +1914 6 0.010 +1914 7 0.009 +1914 8 0.009 +1914 9 0.008 +1914 10 0.007 +1914 11 0.007 +1914 12 0.006 +1915 1 0.006 +1915 2 0.005 +1915 3 0.005 +1915 4 0.004 +1915 5 0.004 +1915 6 0.004 +1915 7 0.004 +1915 8 0.003 +1915 9 0.003 +1915 10 0.003 +1915 11 0.003 +1915 12 0.003 +1916 1 0.004 +1916 2 0.003 +1916 3 0.003 +1916 4 0.003 +1916 5 0.003 +1916 6 0.002 +1916 7 0.002 +1916 8 0.002 +1916 9 0.003 +1916 10 0.002 +1916 11 0.003 +1916 12 0.003 +1917 1 0.003 +1917 2 0.003 +1917 3 0.003 +1917 4 0.003 +1917 5 0.002 +1917 6 0.002 +1917 7 0.002 +1917 8 0.002 +1917 9 0.002 +1917 10 0.002 +1917 11 0.002 +1917 12 0.001 +1918 1 0.002 +1918 2 0.002 +1918 3 0.003 +1918 4 0.002 +1918 5 0.002 +1918 6 0.002 +1918 7 0.002 +1918 8 0.002 +1918 9 0.002 +1918 10 0.002 +1918 11 0.001 +1918 12 0.001 +1919 1 0.001 +1919 2 0.002 +1919 3 0.003 +1919 4 0.003 +1919 5 0.002 +1919 6 0.002 +1919 7 0.002 +1919 8 0.002 +1919 9 0.002 +1919 10 0.002 +1919 11 0.002 +1919 12 0.001 +1920 1 0.001 +1920 2 0.001 +1920 3 0.001 +1920 4 0.003 +1920 5 0.007 +1920 6 0.010 +1920 7 0.014 +1920 8 0.017 +1920 9 0.016 +1920 10 0.015 +1920 11 0.014 +1920 12 0.013 +1921 1 0.012 +1921 2 0.011 +1921 3 0.010 +1921 4 0.009 +1921 5 0.008 +1921 6 0.008 +1921 7 0.007 +1921 8 0.007 +1921 9 0.006 +1921 10 0.005 +1921 11 0.005 +1921 12 0.005 +1922 1 0.004 +1922 2 0.004 +1922 3 0.004 +1922 4 0.003 +1922 5 0.003 +1922 6 0.003 +1922 7 0.003 +1922 8 0.002 +1922 9 0.002 +1922 10 0.002 +1922 11 0.002 +1922 12 0.002 +1923 1 0.002 +1923 2 0.002 +1923 3 0.001 +1923 4 0.001 +1923 5 0.001 +1923 6 0.001 +1923 7 0.001 +1923 8 0.001 +1923 9 0.001 +1923 10 0.001 +1923 11 0.001 +1923 12 0.001 +1924 1 0.003 +1924 2 0.003 +1924 3 0.003 +1924 4 0.003 +1924 5 0.003 +1924 6 0.004 +1924 7 0.004 +1924 8 0.004 +1924 9 0.004 +1924 10 0.004 +1924 11 0.004 +1924 12 0.003 +1925 1 0.003 +1925 2 0.003 +1925 3 0.003 +1925 4 0.003 +1925 5 0.004 +1925 6 0.003 +1925 7 0.003 +1925 8 0.003 +1925 9 0.003 +1925 10 0.002 +1925 11 0.002 +1925 12 0.002 +1926 1 0.002 +1926 2 0.002 +1926 3 0.002 +1926 4 0.002 +1926 5 0.001 +1926 6 0.003 +1926 7 0.003 +1926 8 0.003 +1926 9 0.003 +1926 10 0.003 +1926 11 0.003 +1926 12 0.002 +1927 1 0.002 +1927 2 0.002 +1927 3 0.002 +1927 4 0.002 +1927 5 0.002 +1927 6 0.002 +1927 7 0.001 +1927 8 0.001 +1927 9 0.001 +1927 10 0.001 +1927 11 0.001 +1927 12 0.001 +1928 1 0.002 +1928 2 0.002 +1928 3 0.003 +1928 4 0.003 +1928 5 0.004 +1928 6 0.006 +1928 7 0.007 +1928 8 0.007 +1928 9 0.007 +1928 10 0.007 +1928 11 0.007 +1928 12 0.008 +1929 1 0.009 +1929 2 0.010 +1929 3 0.010 +1929 4 0.010 +1929 5 0.010 +1929 6 0.010 +1929 7 0.010 +1929 8 0.011 +1929 9 0.010 +1929 10 0.010 +1929 11 0.009 +1929 12 0.009 +1930 1 0.008 +1930 2 0.007 +1930 3 0.007 +1930 4 0.006 +1930 5 0.007 +1930 6 0.006 +1930 7 0.006 +1930 8 0.006 +1930 9 0.006 +1930 10 0.005 +1930 11 0.005 +1930 12 0.005 +1931 1 0.005 +1931 2 0.005 +1931 3 0.005 +1931 4 0.005 +1931 5 0.005 +1931 6 0.005 +1931 7 0.005 +1931 8 0.004 +1931 9 0.004 +1931 10 0.004 +1931 11 0.004 +1931 12 0.004 +1932 1 0.005 +1932 2 0.006 +1932 3 0.006 +1932 4 0.007 +1932 5 0.007 +1932 6 0.009 +1932 7 0.010 +1932 8 0.010 +1932 9 0.010 +1932 10 0.010 +1932 11 0.010 +1932 12 0.010 +1933 1 0.009 +1933 2 0.009 +1933 3 0.008 +1933 4 0.008 +1933 5 0.007 +1933 6 0.007 +1933 7 0.006 +1933 8 0.006 +1933 9 0.005 +1933 10 0.005 +1933 11 0.004 +1933 12 0.004 +1934 1 0.004 +1934 2 0.004 +1934 3 0.003 +1934 4 0.003 +1934 5 0.003 +1934 6 0.003 +1934 7 0.004 +1934 8 0.004 +1934 9 0.004 +1934 10 0.004 +1934 11 0.005 +1934 12 0.005 +1935 1 0.004 +1935 2 0.004 +1935 3 0.005 +1935 4 0.005 +1935 5 0.005 +1935 6 0.005 +1935 7 0.004 +1935 8 0.004 +1935 9 0.004 +1935 10 0.004 +1935 11 0.004 +1935 12 0.004 +1936 1 0.003 +1936 2 0.003 +1936 3 0.003 +1936 4 0.003 +1936 5 0.003 +1936 6 0.003 +1936 7 0.003 +1936 8 0.004 +1936 9 0.003 +1936 10 0.004 +1936 11 0.004 +1936 12 0.004 +1937 1 0.003 +1937 2 0.003 +1937 3 0.003 +1937 4 0.003 +1937 5 0.002 +1937 6 0.002 +1937 7 0.002 +1937 8 0.003 +1937 9 0.003 +1937 10 0.003 +1937 11 0.003 +1937 12 0.003 +1938 1 0.003 +1938 2 0.004 +1938 3 0.005 +1938 4 0.005 +1938 5 0.005 +1938 6 0.005 +1938 7 0.005 +1938 8 0.005 +1938 9 0.006 +1938 10 0.006 +1938 11 0.005 +1938 12 0.005 +1939 1 0.005 +1939 2 0.004 +1939 3 0.005 +1939 4 0.005 +1939 5 0.005 +1939 6 0.005 +1939 7 0.004 +1939 8 0.004 +1939 9 0.004 +1939 10 0.003 +1939 11 0.003 +1939 12 0.003 +1940 1 0.003 +1940 2 0.004 +1940 3 0.004 +1940 4 0.003 +1940 5 0.003 +1940 6 0.003 +1940 7 0.003 +1940 8 0.003 +1940 9 0.003 +1940 10 0.003 +1940 11 0.003 +1940 12 0.003 +1941 1 0.003 +1941 2 0.002 +1941 3 0.002 +1941 4 0.002 +1941 5 0.002 +1941 6 0.002 +1941 7 0.002 +1941 8 0.002 +1941 9 0.002 +1941 10 0.002 +1941 11 0.002 +1941 12 0.002 +1942 1 0.003 +1942 2 0.003 +1942 3 0.003 +1942 4 0.003 +1942 5 0.003 +1942 6 0.004 +1942 7 0.004 +1942 8 0.004 +1942 9 0.006 +1942 10 0.006 +1942 11 0.006 +1942 12 0.006 +1943 1 0.006 +1943 2 0.006 +1943 3 0.005 +1943 4 0.005 +1943 5 0.004 +1943 6 0.004 +1943 7 0.004 +1943 8 0.004 +1943 9 0.004 +1943 10 0.004 +1943 11 0.004 +1943 12 0.003 +1944 1 0.003 +1944 2 0.003 +1944 3 0.002 +1944 4 0.002 +1944 5 0.002 +1944 6 0.002 +1944 7 0.002 +1944 8 0.002 +1944 9 0.002 +1944 10 0.002 +1944 11 0.002 +1944 12 0.002 +1945 1 0.002 +1945 2 0.003 +1945 3 0.003 +1945 4 0.003 +1945 5 0.002 +1945 6 0.002 +1945 7 0.002 +1945 8 0.002 +1945 9 0.002 +1945 10 0.002 +1945 11 0.002 +1945 12 0.001 +1946 1 0.002 +1946 2 0.002 +1946 3 0.001 +1946 4 0.001 +1946 5 0.002 +1946 6 0.003 +1946 7 0.002 +1946 8 0.002 +1946 9 0.002 +1946 10 0.002 +1946 11 0.002 +1946 12 0.002 +1947 1 0.002 +1947 2 0.001 +1947 3 0.001 +1947 4 0.001 +1947 5 0.001 +1947 6 0.001 +1947 7 0.004 +1947 8 0.004 +1947 9 0.004 +1947 10 0.003 +1947 11 0.003 +1947 12 0.003 +1948 1 0.002 +1948 2 0.002 +1948 3 0.002 +1948 4 0.002 +1948 5 0.002 +1948 6 0.002 +1948 7 0.002 +1948 8 0.002 +1948 9 0.001 +1948 10 0.001 +1948 11 0.001 +1948 12 0.001 +1949 1 0.001 +1949 2 0.001 +1949 3 0.003 +1949 4 0.003 +1949 5 0.003 +1949 6 0.004 +1949 7 0.004 +1949 8 0.004 +1949 9 0.004 +1949 10 0.004 +1949 11 0.004 +1949 12 0.004 +1950 1 0.003 +1950 2 0.003 +1950 3 0.003 +1950 4 0.003 +1950 5 0.004 +1950 6 0.003 +1950 7 0.003 +1950 8 0.003 +1950 9 0.003 +1950 10 0.002 +1950 11 0.002 +1950 12 0.002 +1951 1 0.002 +1951 2 0.002 +1951 3 0.002 +1951 4 0.002 +1951 5 0.001 +1951 6 0.001 +1951 7 0.001 +1951 8 0.001 +1951 9 0.002 +1951 10 0.003 +1951 11 0.003 +1951 12 0.003 +1952 1 0.004 +1952 2 0.004 +1952 3 0.004 +1952 4 0.004 +1952 5 0.004 +1952 6 0.004 +1952 7 0.004 +1952 8 0.004 +1952 9 0.004 +1952 10 0.003 +1952 11 0.003 +1952 12 0.003 +1953 1 0.003 +1953 2 0.002 +1953 3 0.002 +1953 4 0.002 +1953 5 0.002 +1953 6 0.003 +1953 7 0.003 +1953 8 0.004 +1953 9 0.005 +1953 10 0.004 +1953 11 0.004 +1953 12 0.005 +1954 1 0.005 +1954 2 0.005 +1954 3 0.005 +1954 4 0.004 +1954 5 0.004 +1954 6 0.004 +1954 7 0.003 +1954 8 0.003 +1954 9 0.003 +1954 10 0.003 +1954 11 0.002 +1954 12 0.002 +1955 1 0.002 +1955 2 0.002 +1955 3 0.002 +1955 4 0.002 +1955 5 0.002 +1955 6 0.001 +1955 7 0.001 +1955 8 0.002 +1955 9 0.002 +1955 10 0.002 +1955 11 0.002 +1955 12 0.002 +1956 1 0.002 +1956 2 0.002 +1956 3 0.001 +1956 4 0.001 +1956 5 0.001 +1956 6 0.001 +1956 7 0.001 +1956 8 0.001 +1956 9 0.001 +1956 10 0.001 +1956 11 0.001 +1956 12 0.001 +1957 1 0.001 +1957 2 0.001 +1957 3 0.001 +1957 4 0.001 +1957 5 0.001 +1957 6 0.001 +1957 7 0.001 +1957 8 0.001 +1957 9 0.001 +1957 10 0.000 +1957 11 0.000 +1957 12 0.000 +1958 1 0.000 +1958 2 0.000 +1958 3 0.000 +1958 4 0.000 +1958 5 0.000 +1958 6 0.000 +1958 7 0.000 +1958 8 0.000 +1958 9 0.000 +1958 10 0.000 +1958 11 0.000 +1958 12 0.000 +1959 1 0.000 +1959 2 0.000 +1959 3 0.000 +1959 4 0.000 +1959 5 0.000 +1959 6 0.000 +1959 7 0.000 +1959 8 0.000 +1959 9 0.000 +1959 10 0.000 +1959 11 0.000 +1959 12 0.000 +1960 1 0.000 +1960 2 0.000 +1960 3 0.000 +1960 4 0.002 +1960 5 0.003 +1960 6 0.004 +1960 7 0.006 +1960 8 0.007 +1960 9 0.008 +1960 10 0.008 +1960 11 0.008 +1960 12 0.008 +1961 1 0.008 +1961 2 0.009 +1961 3 0.012 +1961 4 0.013 +1961 5 0.012 +1961 6 0.011 +1961 7 0.010 +1961 8 0.011 +1961 9 0.012 +1961 10 0.012 +1961 11 0.011 +1961 12 0.010 +1962 1 0.009 +1962 2 0.009 +1962 3 0.014 +1962 4 0.015 +1962 5 0.014 +1962 6 0.013 +1962 7 0.013 +1962 8 0.016 +1962 9 0.015 +1962 10 0.014 +1962 11 0.013 +1962 12 0.013 +1963 1 0.012 +1963 2 0.012 +1963 3 0.012 +1963 4 0.017 +1963 5 0.034 +1963 6 0.047 +1963 7 0.052 +1963 8 0.056 +1963 9 0.060 +1963 10 0.075 +1963 11 0.089 +1963 12 0.085 +1964 1 0.080 +1964 2 0.075 +1964 3 0.070 +1964 4 0.067 +1964 5 0.067 +1964 6 0.070 +1964 7 0.080 +1964 8 0.080 +1964 9 0.074 +1964 10 0.069 +1964 11 0.066 +1964 12 0.063 +1965 1 0.060 +1965 2 0.057 +1965 3 0.053 +1965 4 0.049 +1965 5 0.047 +1965 6 0.043 +1965 7 0.041 +1965 8 0.037 +1965 9 0.035 +1965 10 0.032 +1965 11 0.031 +1965 12 0.033 +1966 1 0.033 +1966 2 0.031 +1966 3 0.029 +1966 4 0.027 +1966 5 0.025 +1966 6 0.024 +1966 7 0.022 +1966 8 0.021 +1966 9 0.019 +1966 10 0.018 +1966 11 0.016 +1966 12 0.015 +1967 1 0.014 +1967 2 0.013 +1967 3 0.012 +1967 4 0.011 +1967 5 0.011 +1967 6 0.013 +1967 7 0.014 +1967 8 0.016 +1967 9 0.018 +1967 10 0.019 +1967 11 0.018 +1967 12 0.016 +1968 1 0.015 +1968 2 0.014 +1968 3 0.013 +1968 4 0.012 +1968 5 0.014 +1968 6 0.021 +1968 7 0.028 +1968 8 0.034 +1968 9 0.041 +1968 10 0.047 +1968 11 0.046 +1968 12 0.045 +1969 1 0.043 +1969 2 0.041 +1969 3 0.040 +1969 4 0.038 +1969 5 0.037 +1969 6 0.035 +1969 7 0.034 +1969 8 0.032 +1969 9 0.031 +1969 10 0.029 +1969 11 0.027 +1969 12 0.026 +1970 1 0.024 +1970 2 0.023 +1970 3 0.021 +1970 4 0.020 +1970 5 0.018 +1970 6 0.017 +1970 7 0.015 +1970 8 0.014 +1970 9 0.013 +1970 10 0.012 +1970 11 0.011 +1970 12 0.010 +1971 1 0.009 +1971 2 0.009 +1971 3 0.008 +1971 4 0.007 +1971 5 0.007 +1971 6 0.006 +1971 7 0.006 +1971 8 0.005 +1971 9 0.006 +1971 10 0.005 +1971 11 0.005 +1971 12 0.005 +1972 1 0.004 +1972 2 0.004 +1972 3 0.004 +1972 4 0.003 +1972 5 0.003 +1972 6 0.003 +1972 7 0.003 +1972 8 0.004 +1972 9 0.004 +1972 10 0.004 +1972 11 0.005 +1972 12 0.005 +1973 1 0.006 +1973 2 0.006 +1973 3 0.007 +1973 4 0.007 +1973 5 0.007 +1973 6 0.008 +1973 7 0.008 +1973 8 0.008 +1973 9 0.009 +1973 10 0.009 +1973 11 0.009 +1973 12 0.010 +1974 1 0.010 +1974 2 0.011 +1974 3 0.011 +1974 4 0.011 +1974 5 0.012 +1974 6 0.012 +1974 7 0.013 +1974 8 0.013 +1974 9 0.013 +1974 10 0.014 +1974 11 0.014 +1974 12 0.018 +1975 1 0.023 +1975 2 0.027 +1975 3 0.031 +1975 4 0.036 +1975 5 0.040 +1975 6 0.037 +1975 7 0.034 +1975 8 0.031 +1975 9 0.029 +1975 10 0.026 +1975 11 0.024 +1975 12 0.022 +1976 1 0.021 +1976 2 0.019 +1976 3 0.018 +1976 4 0.016 +1976 5 0.015 +1976 6 0.014 +1976 7 0.013 +1976 8 0.012 +1976 9 0.011 +1976 10 0.010 +1976 11 0.009 +1976 12 0.008 +1977 1 0.008 +1977 2 0.007 +1977 3 0.007 +1977 4 0.006 +1977 5 0.005 +1977 6 0.005 +1977 7 0.005 +1977 8 0.004 +1977 9 0.004 +1977 10 0.004 +1977 11 0.003 +1977 12 0.003 +1978 1 0.003 +1978 2 0.003 +1978 3 0.002 +1978 4 0.003 +1978 5 0.005 +1978 6 0.007 +1978 7 0.008 +1978 8 0.010 +1978 9 0.012 +1978 10 0.012 +1978 11 0.012 +1978 12 0.013 +1979 1 0.013 +1979 2 0.013 +1979 3 0.012 +1979 4 0.011 +1979 5 0.010 +1979 6 0.009 +1979 7 0.009 +1979 8 0.008 +1979 9 0.007 +1979 10 0.007 +1979 11 0.006 +1979 12 0.006 +1980 1 0.005 +1980 2 0.005 +1980 3 0.004 +1980 4 0.004 +1980 5 0.004 +1980 6 0.004 +1980 7 0.004 +1980 8 0.005 +1980 9 0.005 +1980 10 0.005 +1980 11 0.005 +1980 12 0.005 +1981 1 0.005 +1981 2 0.005 +1981 3 0.005 +1981 4 0.004 +1981 5 0.004 +1981 6 0.005 +1981 7 0.005 +1981 8 0.005 +1981 9 0.005 +1981 10 0.005 +1981 11 0.005 +1981 12 0.005 +1982 1 0.006 +1982 2 0.006 +1982 3 0.006 +1982 4 0.024 +1982 5 0.043 +1982 6 0.053 +1982 7 0.068 +1982 8 0.074 +1982 9 0.078 +1982 10 0.084 +1982 11 0.090 +1982 12 0.098 +1983 1 0.096 +1983 2 0.094 +1983 3 0.096 +1983 4 0.091 +1983 5 0.086 +1983 6 0.079 +1983 7 0.073 +1983 8 0.067 +1983 9 0.062 +1983 10 0.057 +1983 11 0.052 +1983 12 0.049 +1984 1 0.045 +1984 2 0.042 +1984 3 0.038 +1984 4 0.035 +1984 5 0.032 +1984 6 0.030 +1984 7 0.028 +1984 8 0.026 +1984 9 0.024 +1984 10 0.022 +1984 11 0.020 +1984 12 0.019 +1985 1 0.016 +1985 2 0.016 +1985 3 0.014 +1985 4 0.014 +1985 5 0.013 +1985 6 0.013 +1985 7 0.012 +1985 8 0.012 +1985 9 0.010 +1985 10 0.010 +1985 11 0.010 +1985 12 0.012 +1986 1 0.015 +1986 2 0.016 +1986 3 0.014 +1986 4 0.015 +1986 5 0.014 +1986 6 0.013 +1986 7 0.013 +1986 8 0.014 +1986 9 0.013 +1986 10 0.013 +1986 11 0.012 +1986 12 0.012 +1987 1 0.012 +1987 2 0.011 +1987 3 0.011 +1987 4 0.010 +1987 5 0.010 +1987 6 0.010 +1987 7 0.011 +1987 8 0.011 +1987 9 0.010 +1987 10 0.009 +1987 11 0.009 +1987 12 0.009 +1988 1 0.009 +1988 2 0.009 +1988 3 0.008 +1988 4 0.007 +1988 5 0.007 +1988 6 0.007 +1988 7 0.008 +1988 8 0.010 +1988 9 0.007 +1988 10 0.007 +1988 11 0.007 +1988 12 0.007 +1989 1 0.007 +1989 2 0.006 +1989 3 0.006 +1989 4 0.006 +1989 5 0.005 +1989 6 0.006 +1989 7 0.007 +1989 8 0.008 +1989 9 0.006 +1989 10 0.005 +1989 11 0.005 +1989 12 0.005 +1990 1 0.006 +1990 2 0.007 +1990 3 0.006 +1990 4 0.004 +1990 5 0.004 +1990 6 0.006 +1990 7 0.007 +1990 8 0.007 +1990 9 0.007 +1990 10 0.006 +1990 11 0.006 +1990 12 0.006 +1991 1 0.006 +1991 2 0.006 +1991 3 0.005 +1991 4 0.005 +1991 5 0.005 +1991 6 0.018 +1991 7 0.038 +1991 8 0.071 +1991 9 0.096 +1991 10 0.120 +1991 11 0.138 +1991 12 0.139 +1992 1 0.148 +1992 2 0.149 +1992 3 0.143 +1992 4 0.139 +1992 5 0.138 +1992 6 0.126 +1992 7 0.123 +1992 8 0.114 +1992 9 0.104 +1992 10 0.098 +1992 11 0.092 +1992 12 0.079 +1993 1 0.074 +1993 2 0.066 +1993 3 0.061 +1993 4 0.056 +1993 5 0.052 +1993 6 0.048 +1993 7 0.045 +1993 8 0.043 +1993 9 0.039 +1993 10 0.038 +1993 11 0.035 +1993 12 0.031 +1994 1 0.029 +1994 2 0.026 +1994 3 0.024 +1994 4 0.022 +1994 5 0.021 +1994 6 0.019 +1994 7 0.018 +1994 8 0.017 +1994 9 0.016 +1994 10 0.017 +1994 11 0.016 +1994 12 0.016 +1995 1 0.012 +1995 2 0.012 +1995 3 0.011 +1995 4 0.010 +1995 5 0.010 +1995 6 0.009 +1995 7 0.009 +1995 8 0.009 +1995 9 0.009 +1995 10 0.009 +1995 11 0.009 +1995 12 0.008 +1996 1 0.007 +1996 2 0.007 +1996 3 0.007 +1996 4 0.006 +1996 5 0.007 +1996 6 0.006 +1996 7 0.007 +1996 8 0.006 +1996 9 0.006 +1996 10 0.006 +1996 11 0.006 +1996 12 0.006 +1997 1 0.006 +1997 2 0.006 +1997 3 0.005 +1997 4 0.005 +1997 5 0.005 +1997 6 0.005 +1997 7 0.005 +1997 8 0.005 +1997 9 0.005 +1997 10 0.005 +1997 11 0.005 +1997 12 0.004 +1998 1 0.004 +1998 2 0.004 +1998 3 0.003 +1998 4 0.003 +1998 5 0.003 +1998 6 0.003 +1998 7 0.002 +1998 8 0.002 +1998 9 0.002 +1998 10 0.002 +1998 11 0.002 +1998 12 0.002 +1999 1 0.002 +1999 2 0.002 +1999 3 0.002 +1999 4 0.002 +1999 5 0.002 +1999 6 0.002 +1999 7 0.002 +1999 8 0.002 +1999 9 0.002 +1999 10 0.002 +1999 11 0.002 +1999 12 0.002 +2000 1 0.002 +2000 2 0.002 +2000 3 0.002 +2000 4 0.002 +2000 5 0.002 +2000 6 0.002 +2000 7 0.002 +2000 8 0.002 +2000 9 0.002 +2000 10 0.002 +2000 11 0.002 +2000 12 0.002 +2001 1 0.002 +2001 2 0.002 +2001 3 0.002 +2001 4 0.002 +2001 5 0.002 +2001 6 0.002 +2001 7 0.002 +2001 8 0.002 +2001 9 0.002 +2001 10 0.002 +2001 11 0.002 +2001 12 0.002 +2002 1 0.002 +2002 2 0.002 +2002 3 0.002 +2002 4 0.002 +2002 5 0.002 +2002 6 0.002 +2002 7 0.002 +2002 8 0.002 +2002 9 0.002 +2002 10 0.002 +2002 11 0.002 +2002 12 0.003 +2003 1 0.003 +2003 2 0.003 +2003 3 0.003 +2003 4 0.003 +2003 5 0.002 +2003 6 0.002 +2003 7 0.003 +2003 8 0.003 +2003 9 0.003 +2003 10 0.003 +2003 11 0.003 +2003 12 0.003 +2004 1 0.002 +2004 2 0.002 +2004 3 0.002 +2004 4 0.002 +2004 5 0.002 +2004 6 0.002 +2004 7 0.002 +2004 8 0.002 +2004 9 0.002 +2004 10 0.002 +2004 11 0.002 +2004 12 0.003 +2005 1 0.003 +2005 2 0.003 +2005 3 0.003 +2005 4 0.004 +2005 5 0.003 +2005 6 0.003 +2005 7 0.003 +2005 8 0.004 +2005 9 0.004 +2005 10 0.004 +2005 11 0.004 +2005 12 0.004 +2006 1 0.003 +2006 2 0.003 +2006 3 0.003 +2006 4 0.003 +2006 5 0.003 +2006 6 0.003 +2006 7 0.004 +2006 8 0.004 +2006 9 0.004 +2006 10 0.004 +2006 11 0.005 +2006 12 0.005 +2007 1 0.005 +2007 2 0.005 +2007 3 0.004 +2007 4 0.004 +2007 5 0.004 +2007 6 0.004 +2007 7 0.004 +2007 8 0.004 +2007 9 0.004 +2007 10 0.004 +2007 11 0.004 +2007 12 0.004 +2008 1 0.004 +2008 2 0.004 +2008 3 0.003 +2008 4 0.003 +2008 5 0.003 +2008 6 0.003 +2008 7 0.003 +2008 8 0.004 +2008 9 0.004 +2008 10 0.005 +2008 11 0.005 +2008 12 0.005 +2009 1 0.004 +2009 2 0.004 +2009 3 0.004 +2009 4 0.004 +2009 5 0.004 +2009 6 0.004 +2009 7 0.005 +2009 8 0.006 +2009 9 0.006 +2009 10 0.006 +2009 11 0.005 +2009 12 0.005 +2010 1 0.004 +2010 2 0.004 +2010 3 0.003 +2010 4 0.003 +2010 5 0.003 +2010 6 0.003 +2010 7 0.003 +2010 8 0.004 +2010 9 0.004 +2010 10 0.003 +2010 11 0.004 +2010 12 0.004 +2011 1 0.004 +2011 2 0.004 +2011 3 0.004 +2011 4 0.004 +2011 5 0.003 +2011 6 0.003 +2011 7 0.005 +2011 8 0.007 +2011 9 0.007 +2011 10 0.006 +2011 11 0.006 +2011 12 0.005 +2012 1 0.005 +2012 2 0.004 +2012 3 0.004 +2012 4 0.004 +2012 5 0.004 +2012 6 0.003 +2012 7 0.003 +2012 8 0.003 +2012 9 0.004 +2012 10 0.000 +2012 11 0.000 +2012 12 0.000 +2013 1 0.000 +2013 2 0.000 +2013 3 0.000 +2013 4 0.000 +2013 5 0.000 +2013 6 0.000 +2013 7 0.000 +2013 8 0.000 +2013 9 0.000 +2013 10 0.000 +2013 11 0.000 +2013 12 0.000 +2014 1 0.000 +2014 2 0.000 +2014 3 0.000 +2014 4 0.000 +2014 5 0.000 +2014 6 0.000 +2014 7 0.000 +2014 8 0.000 +2014 9 0.000 +2014 10 0.000 +2014 11 0.000 +2014 12 0.000 +2015 1 0.000 +2015 2 0.000 +2015 3 0.000 +2015 4 0.000 +2015 5 0.000 +2015 6 0.000 +2015 7 0.000 +2015 8 0.000 +2015 9 0.000 +2015 10 0.000 +2015 11 0.000 +2015 12 0.000 +2016 1 0.000 +2016 2 0.000 +2016 3 0.000 +2016 4 0.000 +2016 5 0.000 +2016 6 0.000 +2016 7 0.000 +2016 8 0.000 +2016 9 0.000 +2016 10 0.000 +2016 11 0.000 +2016 12 0.000 +2017 1 0.000 +2017 2 0.000 +2017 3 0.000 +2017 4 0.000 +2017 5 0.000 +2017 6 0.000 +2017 7 0.000 +2017 8 0.000 +2017 9 0.000 +2017 10 0.000 +2017 11 0.000 +2017 12 0.000 +2018 1 0.000 +2018 2 0.000 +2018 3 0.000 +2018 4 0.000 +2018 5 0.000 +2018 6 0.000 +2018 7 0.000 +2018 8 0.000 +2018 9 0.000 +2018 10 0.000 +2018 11 0.000 +2018 12 0.000 +2019 1 0.000 +2019 2 0.000 +2019 3 0.000 +2019 4 0.000 +2019 5 0.000 +2019 6 0.000 +2019 7 0.000 +2019 8 0.000 +2019 9 0.000 +2019 10 0.000 +2019 11 0.000 +2019 12 0.000 +2020 1 0.000 +2020 2 0.000 +2020 3 0.000 +2020 4 0.000 +2020 5 0.000 +2020 6 0.000 +2020 7 0.000 +2020 8 0.000 +2020 9 0.000 +2020 10 0.000 +2020 11 0.000 +2020 12 0.000 +2021 1 0.000 +2021 2 0.000 +2021 3 0.000 +2021 4 0.000 +2021 5 0.000 +2021 6 0.000 +2021 7 0.000 +2021 8 0.000 +2021 9 0.000 +2021 10 0.000 +2021 11 0.000 +2021 12 0.000 +2022 1 0.000 +2022 2 0.000 +2022 3 0.000 +2022 4 0.000 +2022 5 0.000 +2022 6 0.000 +2022 7 0.000 +2022 8 0.000 +2022 9 0.000 +2022 10 0.000 +2022 11 0.000 +2022 12 0.000 From 80ac9d5c3f2500cf06d97679807f00adc7428874 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Wed, 12 Jul 2023 14:23:30 +0200 Subject: [PATCH 3/9] provide aerosol data via pooch (#267) * provide aerosol data via pooch * fix hash * fix correct docstring * changelog --- CHANGELOG.rst | 5 + data/README.md | 3 + environment.yml | 1 + mesmer/calibrate_mesmer/train_gt.py | 18 +- mesmer/core/_data.py | 25 + mesmer/io/load_obs.py | 20 +- setup.cfg | 1 + .../observations/aerosols/isaod_gl.dat | 2059 ----------------- 8 files changed, 61 insertions(+), 2071 deletions(-) create mode 100644 data/README.md create mode 100644 mesmer/core/_data.py delete mode 100755 tests/test-data/calibrate-coarse-grid/observations/aerosols/isaod_gl.dat diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 931484321..5f5b8850d 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -62,6 +62,11 @@ New Features `_). By `Mathias Hauser `_. +- The aerosol data is now automatically downloaded using `pooch `__. + (`#267 `_). By `Mathias Hauser + `_. + + Breaking changes ^^^^^^^^^^^^^^^^ diff --git a/data/README.md b/data/README.md new file mode 100644 index 000000000..af0cfe094 --- /dev/null +++ b/data/README.md @@ -0,0 +1,3 @@ +# mesmer data + +This folder contains auxiliary data for mesmer. They are downloaded on demand using [pooch](https://www.fatiando.org/pooch/latest/). diff --git a/environment.yml b/environment.yml index 74fcf7d56..bcd0e2a98 100644 --- a/environment.yml +++ b/environment.yml @@ -12,6 +12,7 @@ dependencies: - numpy - packaging - pandas<2.0 + - pooch - regionmask>=0.8 - scikit-learn - sphinx diff --git a/mesmer/calibrate_mesmer/train_gt.py b/mesmer/calibrate_mesmer/train_gt.py index 3b3f19c00..73550978f 100644 --- a/mesmer/calibrate_mesmer/train_gt.py +++ b/mesmer/calibrate_mesmer/train_gt.py @@ -6,6 +6,7 @@ Functions to train global trend module of MESMER. """ +import warnings import numpy as np import xarray as xr @@ -126,7 +127,7 @@ def train_gt(var, targ, esm, time, cfg, save_params=True): var_all = np.unique(var_all, axis=0) params_gt["saod"], params_gt["hist"] = train_gt_ic_OLSVOLC( - var_all, gt_lowess_hist, params_gt["time"]["hist"], cfg + var_all, gt_lowess_hist, params_gt["time"]["hist"] ) elif params_gt["method"] == "LOWESS": params_gt["hist"] = gt_lowess_hist @@ -201,7 +202,7 @@ def train_gt_ic_LOWESS(data): return gt_lowess, frac_lowess_name -def train_gt_ic_OLSVOLC(var, gt_lowess, time, cfg): +def train_gt_ic_OLSVOLC(var, gt_lowess, time, cfg=None): """ Derive global trend (emissions + volcanoes) parameters from single ESM ic ensemble by adding volcanic spikes to LOWESS trend. @@ -214,8 +215,8 @@ def train_gt_ic_OLSVOLC(var, gt_lowess, time, cfg): 1d array of smooth global trend of variable time : np.ndarray 1d array of years - cfg : module - config file containing metadata needed to load in stratospheric AOD time series + cfg : None + Passing cfg is no longer required. Returns ------- @@ -231,14 +232,17 @@ def train_gt_ic_OLSVOLC(var, gt_lowess, time, cfg): """ - # specify necessary variables from cfg file - dir_obs = cfg.dir_obs + if cfg is not None: + warnings.warn( + "Passing ``cfg`` to ``train_gt_ic_OLSVOLC`` is no longer necessary", + FutureWarning, + ) nr_runs, nr_ts = var.shape # account for volcanic eruptions in historical time period # load in observed stratospheric aerosol optical depth - aod_obs = load_strat_aod(time, dir_obs) + aod_obs = load_strat_aod(time) # drop "year" coords - aod_obs does not have coords (currently) aod_obs = aod_obs.drop_vars("year") diff --git a/mesmer/core/_data.py b/mesmer/core/_data.py new file mode 100644 index 000000000..863906ed6 --- /dev/null +++ b/mesmer/core/_data.py @@ -0,0 +1,25 @@ +import pooch + +import mesmer + + +def fetch_remote_data(name): + """ + uses pooch to cache files + """ + + cache_dir = pooch.os_cache("mesmer") + + REMOTE_RESSOURCE = pooch.create( + path=cache_dir, + # The remote data is on Github + base_url="https://github.com/MESMER-group/mesmer/raw/{version}/data/", + registry={ + "isaod_gl_2022.dat": "3d26e78bf0ee96a02c99e2a7a448dafda0ac847a5c914a75c7d9745e95fe68ee", + }, + version=f"v{mesmer.__version__}", + version_dev="main", + ) + + # the file will be downloaded automatically the first time this is run. + return REMOTE_RESSOURCE.fetch(name) diff --git a/mesmer/io/load_obs.py b/mesmer/io/load_obs.py index 89c1d77c0..5f012fb53 100644 --- a/mesmer/io/load_obs.py +++ b/mesmer/io/load_obs.py @@ -7,11 +7,14 @@ """ import os +import warnings import numpy as np import pandas as pd import xarray as xr +from mesmer.core._data import fetch_remote_data + def load_obs(targ, prod, lon, lat, cfg, sel_ref="native", ignore_nans=True): """Load observations which you previously downloaded. @@ -163,15 +166,15 @@ def load_obs_tblend(prod, lon, lat, cfg, sel_ref): return tblend, time -def load_strat_aod(time, dir_obs): +def load_strat_aod(time, dir_obs=None): """Load observed global stratospheric aerosol optical depth time series. Parameters ---------- time : np.ndarray 1d array of years the AOD time series is required for - dir_obs : str - pathway to observations + dir_obs : None + Deprecated. Returns ------- @@ -184,9 +187,16 @@ def load_strat_aod(time, dir_obs): cimp6, 1850 - 2005 for cmip5) """ - path_file = os.path.join(dir_obs, "aerosols", "isaod_gl.dat") + if dir_obs is not None: + warnings.warn( + "The aerosol data is now shipped with mesmer. Passing `dir_obs` to " + "``load_strat_aod`` is no longer necessary", + FutureWarning, + ) + + filename = fetch_remote_data("isaod_gl_2022.dat") df = pd.read_csv( - path_file, + filename, delim_whitespace=True, skiprows=11, names=("year", "month", "AOD"), diff --git a/setup.cfg b/setup.cfg index d1c4e31b4..fd5ab22e7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -36,6 +36,7 @@ install_requires = numpy packaging pandas < 2.0 + pooch regionmask scikit-learn statsmodels diff --git a/tests/test-data/calibrate-coarse-grid/observations/aerosols/isaod_gl.dat b/tests/test-data/calibrate-coarse-grid/observations/aerosols/isaod_gl.dat deleted file mode 100755 index 53d5f09ad..000000000 --- a/tests/test-data/calibrate-coarse-grid/observations/aerosols/isaod_gl.dat +++ /dev/null @@ -1,2059 +0,0 @@ -# scripturl01 :: https://climexp.knmi.nl/getindices.cgi?STATION=stratospheric_AOD&TYPE=i&WMO=NASAData/saod_gl&id=$id -# global Optical Thickness at 550 nm -# from NASA/GISS -# AOD [1] stratospheric aerosol optical depth -# institution :: NASA/GISS -# title :: GISS stratospheric aerosol optical depth at 550 nm -# contact :: https://www.giss.nasa.gov/staff/makiko_sato.html -# references :: Bourassa, A.E., A. Robock, et al. 2012: Large volcanic aerosol load in the stratosphere linked to Asian monsoon transport. Science 337, 78-81, doi:10.1126/science.1219371 -# source_url :: https://data.giss.nasa.gov/modelforce/strataer/ -# history :: retrieved and converted 2020-08-14 17:12:30 -# climexp_url :: https://climexp.knmi.nl/getindices.cgi?NASAData/saod_gl -1850 1 0.004 -1850 2 0.004 -1850 3 0.004 -1850 4 0.004 -1850 5 0.004 -1850 6 0.004 -1850 7 0.003 -1850 8 0.003 -1850 9 0.003 -1850 10 0.003 -1850 11 0.003 -1850 12 0.003 -1851 1 0.003 -1851 2 0.003 -1851 3 0.003 -1851 4 0.003 -1851 5 0.003 -1851 6 0.003 -1851 7 0.002 -1851 8 0.002 -1851 9 0.002 -1851 10 0.002 -1851 11 0.002 -1851 12 0.002 -1852 1 0.002 -1852 2 0.002 -1852 3 0.002 -1852 4 0.002 -1852 5 0.002 -1852 6 0.002 -1852 7 0.001 -1852 8 0.001 -1852 9 0.001 -1852 10 0.001 -1852 11 0.001 -1852 12 0.001 -1853 1 0.001 -1853 2 0.001 -1853 3 0.001 -1853 4 0.001 -1853 5 0.001 -1853 6 0.001 -1853 7 0.001 -1853 8 0.001 -1853 9 0.001 -1853 10 0.001 -1853 11 0.000 -1853 12 0.000 -1854 1 0.000 -1854 2 0.000 -1854 3 0.000 -1854 4 0.000 -1854 5 0.000 -1854 6 0.000 -1854 7 0.000 -1854 8 0.000 -1854 9 0.000 -1854 10 0.000 -1854 11 0.000 -1854 12 0.000 -1855 1 0.000 -1855 2 0.000 -1855 3 0.000 -1855 4 0.000 -1855 5 0.000 -1855 6 0.000 -1855 7 0.000 -1855 8 0.000 -1855 9 0.000 -1855 10 0.003 -1855 11 0.007 -1855 12 0.012 -1856 1 0.017 -1856 2 0.021 -1856 3 0.026 -1856 4 0.031 -1856 5 0.035 -1856 6 0.040 -1856 7 0.043 -1856 8 0.046 -1856 9 0.048 -1856 10 0.050 -1856 11 0.052 -1856 12 0.055 -1857 1 0.057 -1857 2 0.059 -1857 3 0.062 -1857 4 0.064 -1857 5 0.066 -1857 6 0.068 -1857 7 0.068 -1857 8 0.064 -1857 9 0.060 -1857 10 0.056 -1857 11 0.052 -1857 12 0.048 -1858 1 0.044 -1858 2 0.041 -1858 3 0.037 -1858 4 0.034 -1858 5 0.032 -1858 6 0.029 -1858 7 0.027 -1858 8 0.025 -1858 9 0.023 -1858 10 0.021 -1858 11 0.019 -1858 12 0.018 -1859 1 0.016 -1859 2 0.015 -1859 3 0.014 -1859 4 0.013 -1859 5 0.012 -1859 6 0.011 -1859 7 0.010 -1859 8 0.010 -1859 9 0.009 -1859 10 0.009 -1859 11 0.008 -1859 12 0.007 -1860 1 0.007 -1860 2 0.006 -1860 3 0.006 -1860 4 0.005 -1860 5 0.005 -1860 6 0.005 -1860 7 0.004 -1860 8 0.004 -1860 9 0.004 -1860 10 0.003 -1860 11 0.003 -1860 12 0.003 -1861 1 0.003 -1861 2 0.002 -1861 3 0.002 -1861 4 0.002 -1861 5 0.002 -1861 6 0.002 -1861 7 0.002 -1861 8 0.003 -1861 9 0.004 -1861 10 0.005 -1861 11 0.007 -1861 12 0.008 -1862 1 0.009 -1862 2 0.010 -1862 3 0.012 -1862 4 0.013 -1862 5 0.014 -1862 6 0.016 -1862 7 0.016 -1862 8 0.016 -1862 9 0.015 -1862 10 0.014 -1862 11 0.014 -1862 12 0.014 -1863 1 0.013 -1863 2 0.012 -1863 3 0.012 -1863 4 0.011 -1863 5 0.011 -1863 6 0.010 -1863 7 0.010 -1863 8 0.009 -1863 9 0.009 -1863 10 0.008 -1863 11 0.008 -1863 12 0.007 -1864 1 0.007 -1864 2 0.006 -1864 3 0.006 -1864 4 0.005 -1864 5 0.005 -1864 6 0.005 -1864 7 0.004 -1864 8 0.004 -1864 9 0.004 -1864 10 0.004 -1864 11 0.003 -1864 12 0.003 -1865 1 0.003 -1865 2 0.003 -1865 3 0.002 -1865 4 0.002 -1865 5 0.002 -1865 6 0.002 -1865 7 0.002 -1865 8 0.002 -1865 9 0.002 -1865 10 0.002 -1865 11 0.001 -1865 12 0.001 -1866 1 0.001 -1866 2 0.001 -1866 3 0.001 -1866 4 0.001 -1866 5 0.001 -1866 6 0.001 -1866 7 0.001 -1866 8 0.001 -1866 9 0.001 -1866 10 0.001 -1866 11 0.001 -1866 12 0.001 -1867 1 0.001 -1867 2 0.001 -1867 3 0.000 -1867 4 0.000 -1867 5 0.000 -1867 6 0.000 -1867 7 0.000 -1867 8 0.000 -1867 9 0.000 -1867 10 0.000 -1867 11 0.000 -1867 12 0.000 -1868 1 0.000 -1868 2 0.000 -1868 3 0.000 -1868 4 0.000 -1868 5 0.000 -1868 6 0.000 -1868 7 0.000 -1868 8 0.000 -1868 9 0.000 -1868 10 0.000 -1868 11 0.000 -1868 12 0.000 -1869 1 0.000 -1869 2 0.000 -1869 3 0.001 -1869 4 0.001 -1869 5 0.001 -1869 6 0.001 -1869 7 0.001 -1869 8 0.001 -1869 9 0.001 -1869 10 0.001 -1869 11 0.001 -1869 12 0.001 -1870 1 0.001 -1870 2 0.001 -1870 3 0.001 -1870 4 0.001 -1870 5 0.001 -1870 6 0.001 -1870 7 0.001 -1870 8 0.001 -1870 9 0.001 -1870 10 0.001 -1870 11 0.001 -1870 12 0.001 -1871 1 0.001 -1871 2 0.001 -1871 3 0.001 -1871 4 0.001 -1871 5 0.001 -1871 6 0.001 -1871 7 0.001 -1871 8 0.001 -1871 9 0.001 -1871 10 0.001 -1871 11 0.001 -1871 12 0.001 -1872 1 0.001 -1872 2 0.001 -1872 3 0.001 -1872 4 0.001 -1872 5 0.001 -1872 6 0.001 -1872 7 0.001 -1872 8 0.001 -1872 9 0.002 -1872 10 0.002 -1872 11 0.002 -1872 12 0.002 -1873 1 0.002 -1873 2 0.003 -1873 3 0.003 -1873 4 0.003 -1873 5 0.003 -1873 6 0.003 -1873 7 0.003 -1873 8 0.003 -1873 9 0.003 -1873 10 0.003 -1873 11 0.003 -1873 12 0.003 -1874 1 0.003 -1874 2 0.002 -1874 3 0.002 -1874 4 0.002 -1874 5 0.002 -1874 6 0.002 -1874 7 0.002 -1874 8 0.002 -1874 9 0.002 -1874 10 0.002 -1874 11 0.001 -1874 12 0.001 -1875 1 0.001 -1875 2 0.001 -1875 3 0.001 -1875 4 0.001 -1875 5 0.001 -1875 6 0.001 -1875 7 0.001 -1875 8 0.001 -1875 9 0.001 -1875 10 0.002 -1875 11 0.002 -1875 12 0.003 -1876 1 0.004 -1876 2 0.004 -1876 3 0.005 -1876 4 0.006 -1876 5 0.007 -1876 6 0.007 -1876 7 0.007 -1876 8 0.007 -1876 9 0.007 -1876 10 0.007 -1876 11 0.007 -1876 12 0.007 -1877 1 0.006 -1877 2 0.006 -1877 3 0.006 -1877 4 0.006 -1877 5 0.006 -1877 6 0.005 -1877 7 0.005 -1877 8 0.005 -1877 9 0.005 -1877 10 0.005 -1877 11 0.004 -1877 12 0.004 -1878 1 0.004 -1878 2 0.004 -1878 3 0.004 -1878 4 0.004 -1878 5 0.003 -1878 6 0.003 -1878 7 0.003 -1878 8 0.003 -1878 9 0.003 -1878 10 0.003 -1878 11 0.003 -1878 12 0.002 -1879 1 0.002 -1879 2 0.002 -1879 3 0.002 -1879 4 0.002 -1879 5 0.002 -1879 6 0.002 -1879 7 0.002 -1879 8 0.002 -1879 9 0.002 -1879 10 0.002 -1879 11 0.002 -1879 12 0.002 -1880 1 0.002 -1880 2 0.001 -1880 3 0.001 -1880 4 0.001 -1880 5 0.001 -1880 6 0.001 -1880 7 0.001 -1880 8 0.001 -1880 9 0.001 -1880 10 0.001 -1880 11 0.001 -1880 12 0.001 -1881 1 0.001 -1881 2 0.001 -1881 3 0.001 -1881 4 0.001 -1881 5 0.001 -1881 6 0.001 -1881 7 0.001 -1881 8 0.001 -1881 9 0.001 -1881 10 0.001 -1881 11 0.001 -1881 12 0.001 -1882 1 0.001 -1882 2 0.001 -1882 3 0.001 -1882 4 0.001 -1882 5 0.001 -1882 6 0.001 -1882 7 0.001 -1882 8 0.001 -1882 9 0.001 -1882 10 0.001 -1882 11 0.001 -1882 12 0.001 -1883 1 0.029 -1883 2 0.033 -1883 3 0.030 -1883 4 0.028 -1883 5 0.025 -1883 6 0.023 -1883 7 0.022 -1883 8 0.020 -1883 9 0.041 -1883 10 0.078 -1883 11 0.106 -1883 12 0.132 -1884 1 0.152 -1884 2 0.152 -1884 3 0.163 -1884 4 0.164 -1884 5 0.157 -1884 6 0.153 -1884 7 0.152 -1884 8 0.139 -1884 9 0.135 -1884 10 0.125 -1884 11 0.115 -1884 12 0.108 -1885 1 0.101 -1885 2 0.087 -1885 3 0.082 -1885 4 0.073 -1885 5 0.067 -1885 6 0.062 -1885 7 0.058 -1885 8 0.053 -1885 9 0.049 -1885 10 0.047 -1885 11 0.043 -1885 12 0.041 -1886 1 0.038 -1886 2 0.034 -1886 3 0.031 -1886 4 0.029 -1886 5 0.026 -1886 6 0.024 -1886 7 0.023 -1886 8 0.020 -1886 9 0.020 -1886 10 0.069 -1886 11 0.064 -1886 12 0.059 -1887 1 0.054 -1887 2 0.050 -1887 3 0.046 -1887 4 0.042 -1887 5 0.039 -1887 6 0.036 -1887 7 0.033 -1887 8 0.034 -1887 9 0.032 -1887 10 0.029 -1887 11 0.027 -1887 12 0.025 -1888 1 0.023 -1888 2 0.021 -1888 3 0.019 -1888 4 0.018 -1888 5 0.016 -1888 6 0.011 -1888 7 0.013 -1888 8 0.015 -1888 9 0.022 -1888 10 0.030 -1888 11 0.037 -1888 12 0.038 -1889 1 0.038 -1889 2 0.039 -1889 3 0.036 -1889 4 0.033 -1889 5 0.031 -1889 6 0.028 -1889 7 0.026 -1889 8 0.024 -1889 9 0.022 -1889 10 0.020 -1889 11 0.019 -1889 12 0.026 -1890 1 0.032 -1890 2 0.039 -1890 3 0.042 -1890 4 0.045 -1890 5 0.048 -1890 6 0.044 -1890 7 0.041 -1890 8 0.038 -1890 9 0.034 -1890 10 0.033 -1890 11 0.036 -1890 12 0.038 -1891 1 0.040 -1891 2 0.042 -1891 3 0.039 -1891 4 0.036 -1891 5 0.033 -1891 6 0.030 -1891 7 0.028 -1891 8 0.026 -1891 9 0.024 -1891 10 0.022 -1891 11 0.021 -1891 12 0.021 -1892 1 0.021 -1892 2 0.021 -1892 3 0.023 -1892 4 0.025 -1892 5 0.028 -1892 6 0.025 -1892 7 0.023 -1892 8 0.022 -1892 9 0.020 -1892 10 0.018 -1892 11 0.017 -1892 12 0.015 -1893 1 0.014 -1893 2 0.013 -1893 3 0.012 -1893 4 0.011 -1893 5 0.010 -1893 6 0.009 -1893 7 0.009 -1893 8 0.008 -1893 9 0.007 -1893 10 0.007 -1893 11 0.006 -1893 12 0.006 -1894 1 0.005 -1894 2 0.005 -1894 3 0.004 -1894 4 0.004 -1894 5 0.004 -1894 6 0.004 -1894 7 0.003 -1894 8 0.003 -1894 9 0.003 -1894 10 0.002 -1894 11 0.002 -1894 12 0.002 -1895 1 0.002 -1895 2 0.002 -1895 3 0.002 -1895 4 0.002 -1895 5 0.002 -1895 6 0.001 -1895 7 0.001 -1895 8 0.001 -1895 9 0.001 -1895 10 0.001 -1895 11 0.001 -1895 12 0.001 -1896 1 0.006 -1896 2 0.006 -1896 3 0.007 -1896 4 0.013 -1896 5 0.020 -1896 6 0.023 -1896 7 0.025 -1896 8 0.028 -1896 9 0.026 -1896 10 0.024 -1896 11 0.022 -1896 12 0.020 -1897 1 0.019 -1897 2 0.017 -1897 3 0.016 -1897 4 0.014 -1897 5 0.014 -1897 6 0.014 -1897 7 0.015 -1897 8 0.015 -1897 9 0.017 -1897 10 0.020 -1897 11 0.022 -1897 12 0.020 -1898 1 0.018 -1898 2 0.017 -1898 3 0.015 -1898 4 0.014 -1898 5 0.013 -1898 6 0.012 -1898 7 0.011 -1898 8 0.010 -1898 9 0.009 -1898 10 0.009 -1898 11 0.008 -1898 12 0.007 -1899 1 0.007 -1899 2 0.006 -1899 3 0.006 -1899 4 0.005 -1899 5 0.005 -1899 6 0.005 -1899 7 0.004 -1899 8 0.004 -1899 9 0.004 -1899 10 0.003 -1899 11 0.003 -1899 12 0.003 -1900 1 0.003 -1900 2 0.002 -1900 3 0.002 -1900 4 0.002 -1900 5 0.002 -1900 6 0.002 -1900 7 0.002 -1900 8 0.002 -1900 9 0.001 -1900 10 0.001 -1900 11 0.001 -1900 12 0.001 -1901 1 0.001 -1901 2 0.001 -1901 3 0.001 -1901 4 0.001 -1901 5 0.001 -1901 6 0.001 -1901 7 0.001 -1901 8 0.001 -1901 9 0.001 -1901 10 0.001 -1901 11 0.001 -1901 12 0.001 -1902 1 0.003 -1902 2 0.004 -1902 3 0.007 -1902 4 0.009 -1902 5 0.011 -1902 6 0.010 -1902 7 0.009 -1902 8 0.010 -1902 9 0.021 -1902 10 0.039 -1902 11 0.053 -1902 12 0.066 -1903 1 0.076 -1903 2 0.076 -1903 3 0.082 -1903 4 0.082 -1903 5 0.079 -1903 6 0.076 -1903 7 0.076 -1903 8 0.070 -1903 9 0.068 -1903 10 0.063 -1903 11 0.058 -1903 12 0.054 -1904 1 0.051 -1904 2 0.044 -1904 3 0.041 -1904 4 0.036 -1904 5 0.034 -1904 6 0.031 -1904 7 0.029 -1904 8 0.026 -1904 9 0.024 -1904 10 0.023 -1904 11 0.022 -1904 12 0.021 -1905 1 0.019 -1905 2 0.017 -1905 3 0.016 -1905 4 0.015 -1905 5 0.013 -1905 6 0.012 -1905 7 0.011 -1905 8 0.010 -1905 9 0.010 -1905 10 0.009 -1905 11 0.009 -1905 12 0.009 -1906 1 0.009 -1906 2 0.009 -1906 3 0.007 -1906 4 0.007 -1906 5 0.006 -1906 6 0.006 -1906 7 0.005 -1906 8 0.009 -1906 9 0.008 -1906 10 0.008 -1906 11 0.007 -1906 12 0.007 -1907 1 0.006 -1907 2 0.006 -1907 3 0.007 -1907 4 0.009 -1907 5 0.011 -1907 6 0.011 -1907 7 0.011 -1907 8 0.011 -1907 9 0.010 -1907 10 0.009 -1907 11 0.009 -1907 12 0.010 -1908 1 0.013 -1908 2 0.015 -1908 3 0.014 -1908 4 0.013 -1908 5 0.012 -1908 6 0.011 -1908 7 0.010 -1908 8 0.009 -1908 9 0.008 -1908 10 0.008 -1908 11 0.007 -1908 12 0.007 -1909 1 0.006 -1909 2 0.006 -1909 3 0.005 -1909 4 0.005 -1909 5 0.004 -1909 6 0.004 -1909 7 0.004 -1909 8 0.003 -1909 9 0.003 -1909 10 0.003 -1909 11 0.003 -1909 12 0.002 -1910 1 0.003 -1910 2 0.004 -1910 3 0.004 -1910 4 0.004 -1910 5 0.004 -1910 6 0.003 -1910 7 0.003 -1910 8 0.003 -1910 9 0.003 -1910 10 0.002 -1910 11 0.002 -1910 12 0.002 -1911 1 0.002 -1911 2 0.002 -1911 3 0.002 -1911 4 0.002 -1911 5 0.002 -1911 6 0.002 -1911 7 0.002 -1911 8 0.002 -1911 9 0.001 -1911 10 0.001 -1911 11 0.001 -1911 12 0.001 -1912 1 0.001 -1912 2 0.002 -1912 3 0.002 -1912 4 0.002 -1912 5 0.002 -1912 6 0.015 -1912 7 0.027 -1912 8 0.040 -1912 9 0.038 -1912 10 0.036 -1912 11 0.034 -1912 12 0.033 -1913 1 0.032 -1913 2 0.032 -1913 3 0.029 -1913 4 0.027 -1913 5 0.028 -1913 6 0.025 -1913 7 0.023 -1913 8 0.022 -1913 9 0.020 -1913 10 0.018 -1913 11 0.017 -1913 12 0.015 -1914 1 0.014 -1914 2 0.013 -1914 3 0.013 -1914 4 0.012 -1914 5 0.011 -1914 6 0.010 -1914 7 0.009 -1914 8 0.009 -1914 9 0.008 -1914 10 0.007 -1914 11 0.007 -1914 12 0.006 -1915 1 0.006 -1915 2 0.005 -1915 3 0.005 -1915 4 0.004 -1915 5 0.004 -1915 6 0.004 -1915 7 0.004 -1915 8 0.003 -1915 9 0.003 -1915 10 0.003 -1915 11 0.003 -1915 12 0.003 -1916 1 0.004 -1916 2 0.003 -1916 3 0.003 -1916 4 0.003 -1916 5 0.003 -1916 6 0.002 -1916 7 0.002 -1916 8 0.002 -1916 9 0.003 -1916 10 0.002 -1916 11 0.003 -1916 12 0.003 -1917 1 0.003 -1917 2 0.003 -1917 3 0.003 -1917 4 0.003 -1917 5 0.002 -1917 6 0.002 -1917 7 0.002 -1917 8 0.002 -1917 9 0.002 -1917 10 0.002 -1917 11 0.002 -1917 12 0.001 -1918 1 0.002 -1918 2 0.002 -1918 3 0.003 -1918 4 0.002 -1918 5 0.002 -1918 6 0.002 -1918 7 0.002 -1918 8 0.002 -1918 9 0.002 -1918 10 0.002 -1918 11 0.001 -1918 12 0.001 -1919 1 0.001 -1919 2 0.002 -1919 3 0.003 -1919 4 0.003 -1919 5 0.002 -1919 6 0.002 -1919 7 0.002 -1919 8 0.002 -1919 9 0.002 -1919 10 0.002 -1919 11 0.002 -1919 12 0.001 -1920 1 0.001 -1920 2 0.001 -1920 3 0.001 -1920 4 0.003 -1920 5 0.007 -1920 6 0.010 -1920 7 0.014 -1920 8 0.017 -1920 9 0.016 -1920 10 0.015 -1920 11 0.014 -1920 12 0.013 -1921 1 0.012 -1921 2 0.011 -1921 3 0.010 -1921 4 0.009 -1921 5 0.008 -1921 6 0.008 -1921 7 0.007 -1921 8 0.007 -1921 9 0.006 -1921 10 0.005 -1921 11 0.005 -1921 12 0.005 -1922 1 0.004 -1922 2 0.004 -1922 3 0.004 -1922 4 0.003 -1922 5 0.003 -1922 6 0.003 -1922 7 0.003 -1922 8 0.002 -1922 9 0.002 -1922 10 0.002 -1922 11 0.002 -1922 12 0.002 -1923 1 0.002 -1923 2 0.002 -1923 3 0.001 -1923 4 0.001 -1923 5 0.001 -1923 6 0.001 -1923 7 0.001 -1923 8 0.001 -1923 9 0.001 -1923 10 0.001 -1923 11 0.001 -1923 12 0.001 -1924 1 0.003 -1924 2 0.003 -1924 3 0.003 -1924 4 0.003 -1924 5 0.003 -1924 6 0.004 -1924 7 0.004 -1924 8 0.004 -1924 9 0.004 -1924 10 0.004 -1924 11 0.004 -1924 12 0.003 -1925 1 0.003 -1925 2 0.003 -1925 3 0.003 -1925 4 0.003 -1925 5 0.004 -1925 6 0.003 -1925 7 0.003 -1925 8 0.003 -1925 9 0.003 -1925 10 0.002 -1925 11 0.002 -1925 12 0.002 -1926 1 0.002 -1926 2 0.002 -1926 3 0.002 -1926 4 0.002 -1926 5 0.001 -1926 6 0.003 -1926 7 0.003 -1926 8 0.003 -1926 9 0.003 -1926 10 0.003 -1926 11 0.003 -1926 12 0.002 -1927 1 0.002 -1927 2 0.002 -1927 3 0.002 -1927 4 0.002 -1927 5 0.002 -1927 6 0.002 -1927 7 0.001 -1927 8 0.001 -1927 9 0.001 -1927 10 0.001 -1927 11 0.001 -1927 12 0.001 -1928 1 0.002 -1928 2 0.002 -1928 3 0.003 -1928 4 0.003 -1928 5 0.004 -1928 6 0.006 -1928 7 0.007 -1928 8 0.007 -1928 9 0.007 -1928 10 0.007 -1928 11 0.007 -1928 12 0.008 -1929 1 0.009 -1929 2 0.010 -1929 3 0.010 -1929 4 0.010 -1929 5 0.010 -1929 6 0.010 -1929 7 0.010 -1929 8 0.011 -1929 9 0.010 -1929 10 0.010 -1929 11 0.009 -1929 12 0.009 -1930 1 0.008 -1930 2 0.007 -1930 3 0.007 -1930 4 0.006 -1930 5 0.007 -1930 6 0.006 -1930 7 0.006 -1930 8 0.006 -1930 9 0.006 -1930 10 0.005 -1930 11 0.005 -1930 12 0.005 -1931 1 0.005 -1931 2 0.005 -1931 3 0.005 -1931 4 0.005 -1931 5 0.005 -1931 6 0.005 -1931 7 0.005 -1931 8 0.004 -1931 9 0.004 -1931 10 0.004 -1931 11 0.004 -1931 12 0.004 -1932 1 0.005 -1932 2 0.006 -1932 3 0.006 -1932 4 0.007 -1932 5 0.007 -1932 6 0.009 -1932 7 0.010 -1932 8 0.010 -1932 9 0.010 -1932 10 0.010 -1932 11 0.010 -1932 12 0.010 -1933 1 0.009 -1933 2 0.009 -1933 3 0.008 -1933 4 0.008 -1933 5 0.007 -1933 6 0.007 -1933 7 0.006 -1933 8 0.006 -1933 9 0.005 -1933 10 0.005 -1933 11 0.004 -1933 12 0.004 -1934 1 0.004 -1934 2 0.004 -1934 3 0.003 -1934 4 0.003 -1934 5 0.003 -1934 6 0.003 -1934 7 0.004 -1934 8 0.004 -1934 9 0.004 -1934 10 0.004 -1934 11 0.005 -1934 12 0.005 -1935 1 0.004 -1935 2 0.004 -1935 3 0.005 -1935 4 0.005 -1935 5 0.005 -1935 6 0.005 -1935 7 0.004 -1935 8 0.004 -1935 9 0.004 -1935 10 0.004 -1935 11 0.004 -1935 12 0.004 -1936 1 0.003 -1936 2 0.003 -1936 3 0.003 -1936 4 0.003 -1936 5 0.003 -1936 6 0.003 -1936 7 0.003 -1936 8 0.004 -1936 9 0.003 -1936 10 0.004 -1936 11 0.004 -1936 12 0.004 -1937 1 0.003 -1937 2 0.003 -1937 3 0.003 -1937 4 0.003 -1937 5 0.002 -1937 6 0.002 -1937 7 0.002 -1937 8 0.003 -1937 9 0.003 -1937 10 0.003 -1937 11 0.003 -1937 12 0.003 -1938 1 0.003 -1938 2 0.004 -1938 3 0.005 -1938 4 0.005 -1938 5 0.005 -1938 6 0.005 -1938 7 0.005 -1938 8 0.005 -1938 9 0.006 -1938 10 0.006 -1938 11 0.005 -1938 12 0.005 -1939 1 0.005 -1939 2 0.004 -1939 3 0.005 -1939 4 0.005 -1939 5 0.005 -1939 6 0.005 -1939 7 0.004 -1939 8 0.004 -1939 9 0.004 -1939 10 0.003 -1939 11 0.003 -1939 12 0.003 -1940 1 0.003 -1940 2 0.004 -1940 3 0.004 -1940 4 0.003 -1940 5 0.003 -1940 6 0.003 -1940 7 0.003 -1940 8 0.003 -1940 9 0.003 -1940 10 0.003 -1940 11 0.003 -1940 12 0.003 -1941 1 0.003 -1941 2 0.002 -1941 3 0.002 -1941 4 0.002 -1941 5 0.002 -1941 6 0.002 -1941 7 0.002 -1941 8 0.002 -1941 9 0.002 -1941 10 0.002 -1941 11 0.002 -1941 12 0.002 -1942 1 0.003 -1942 2 0.003 -1942 3 0.003 -1942 4 0.003 -1942 5 0.003 -1942 6 0.004 -1942 7 0.004 -1942 8 0.004 -1942 9 0.006 -1942 10 0.006 -1942 11 0.006 -1942 12 0.006 -1943 1 0.006 -1943 2 0.006 -1943 3 0.005 -1943 4 0.005 -1943 5 0.004 -1943 6 0.004 -1943 7 0.004 -1943 8 0.004 -1943 9 0.004 -1943 10 0.004 -1943 11 0.004 -1943 12 0.003 -1944 1 0.003 -1944 2 0.003 -1944 3 0.002 -1944 4 0.002 -1944 5 0.002 -1944 6 0.002 -1944 7 0.002 -1944 8 0.002 -1944 9 0.002 -1944 10 0.002 -1944 11 0.002 -1944 12 0.002 -1945 1 0.002 -1945 2 0.003 -1945 3 0.003 -1945 4 0.003 -1945 5 0.002 -1945 6 0.002 -1945 7 0.002 -1945 8 0.002 -1945 9 0.002 -1945 10 0.002 -1945 11 0.002 -1945 12 0.001 -1946 1 0.002 -1946 2 0.002 -1946 3 0.001 -1946 4 0.001 -1946 5 0.002 -1946 6 0.003 -1946 7 0.002 -1946 8 0.002 -1946 9 0.002 -1946 10 0.002 -1946 11 0.002 -1946 12 0.002 -1947 1 0.002 -1947 2 0.001 -1947 3 0.001 -1947 4 0.001 -1947 5 0.001 -1947 6 0.001 -1947 7 0.004 -1947 8 0.004 -1947 9 0.004 -1947 10 0.003 -1947 11 0.003 -1947 12 0.003 -1948 1 0.002 -1948 2 0.002 -1948 3 0.002 -1948 4 0.002 -1948 5 0.002 -1948 6 0.002 -1948 7 0.002 -1948 8 0.002 -1948 9 0.001 -1948 10 0.001 -1948 11 0.001 -1948 12 0.001 -1949 1 0.001 -1949 2 0.001 -1949 3 0.003 -1949 4 0.003 -1949 5 0.003 -1949 6 0.004 -1949 7 0.004 -1949 8 0.004 -1949 9 0.004 -1949 10 0.004 -1949 11 0.004 -1949 12 0.004 -1950 1 0.003 -1950 2 0.003 -1950 3 0.003 -1950 4 0.003 -1950 5 0.004 -1950 6 0.003 -1950 7 0.003 -1950 8 0.003 -1950 9 0.003 -1950 10 0.002 -1950 11 0.002 -1950 12 0.002 -1951 1 0.002 -1951 2 0.002 -1951 3 0.002 -1951 4 0.002 -1951 5 0.001 -1951 6 0.001 -1951 7 0.001 -1951 8 0.001 -1951 9 0.002 -1951 10 0.003 -1951 11 0.003 -1951 12 0.003 -1952 1 0.004 -1952 2 0.004 -1952 3 0.004 -1952 4 0.004 -1952 5 0.004 -1952 6 0.004 -1952 7 0.004 -1952 8 0.004 -1952 9 0.004 -1952 10 0.003 -1952 11 0.003 -1952 12 0.003 -1953 1 0.003 -1953 2 0.002 -1953 3 0.002 -1953 4 0.002 -1953 5 0.002 -1953 6 0.003 -1953 7 0.003 -1953 8 0.004 -1953 9 0.005 -1953 10 0.004 -1953 11 0.004 -1953 12 0.005 -1954 1 0.005 -1954 2 0.005 -1954 3 0.005 -1954 4 0.004 -1954 5 0.004 -1954 6 0.004 -1954 7 0.003 -1954 8 0.003 -1954 9 0.003 -1954 10 0.003 -1954 11 0.002 -1954 12 0.002 -1955 1 0.002 -1955 2 0.002 -1955 3 0.002 -1955 4 0.002 -1955 5 0.002 -1955 6 0.001 -1955 7 0.001 -1955 8 0.002 -1955 9 0.002 -1955 10 0.002 -1955 11 0.002 -1955 12 0.002 -1956 1 0.002 -1956 2 0.002 -1956 3 0.001 -1956 4 0.001 -1956 5 0.001 -1956 6 0.001 -1956 7 0.001 -1956 8 0.001 -1956 9 0.001 -1956 10 0.001 -1956 11 0.001 -1956 12 0.001 -1957 1 0.001 -1957 2 0.001 -1957 3 0.001 -1957 4 0.001 -1957 5 0.001 -1957 6 0.001 -1957 7 0.001 -1957 8 0.001 -1957 9 0.001 -1957 10 0.000 -1957 11 0.000 -1957 12 0.000 -1958 1 0.000 -1958 2 0.000 -1958 3 0.000 -1958 4 0.000 -1958 5 0.000 -1958 6 0.000 -1958 7 0.000 -1958 8 0.000 -1958 9 0.000 -1958 10 0.000 -1958 11 0.000 -1958 12 0.000 -1959 1 0.000 -1959 2 0.000 -1959 3 0.000 -1959 4 0.000 -1959 5 0.000 -1959 6 0.000 -1959 7 0.000 -1959 8 0.000 -1959 9 0.000 -1959 10 0.000 -1959 11 0.000 -1959 12 0.000 -1960 1 0.000 -1960 2 0.000 -1960 3 0.000 -1960 4 0.002 -1960 5 0.003 -1960 6 0.004 -1960 7 0.006 -1960 8 0.007 -1960 9 0.008 -1960 10 0.008 -1960 11 0.008 -1960 12 0.008 -1961 1 0.008 -1961 2 0.009 -1961 3 0.012 -1961 4 0.013 -1961 5 0.012 -1961 6 0.011 -1961 7 0.010 -1961 8 0.011 -1961 9 0.012 -1961 10 0.012 -1961 11 0.011 -1961 12 0.010 -1962 1 0.009 -1962 2 0.009 -1962 3 0.014 -1962 4 0.015 -1962 5 0.014 -1962 6 0.013 -1962 7 0.013 -1962 8 0.016 -1962 9 0.015 -1962 10 0.014 -1962 11 0.013 -1962 12 0.013 -1963 1 0.012 -1963 2 0.012 -1963 3 0.012 -1963 4 0.017 -1963 5 0.034 -1963 6 0.047 -1963 7 0.052 -1963 8 0.056 -1963 9 0.060 -1963 10 0.075 -1963 11 0.089 -1963 12 0.085 -1964 1 0.080 -1964 2 0.075 -1964 3 0.070 -1964 4 0.067 -1964 5 0.067 -1964 6 0.070 -1964 7 0.080 -1964 8 0.080 -1964 9 0.074 -1964 10 0.069 -1964 11 0.066 -1964 12 0.063 -1965 1 0.060 -1965 2 0.057 -1965 3 0.053 -1965 4 0.049 -1965 5 0.047 -1965 6 0.043 -1965 7 0.041 -1965 8 0.037 -1965 9 0.035 -1965 10 0.032 -1965 11 0.031 -1965 12 0.033 -1966 1 0.033 -1966 2 0.031 -1966 3 0.029 -1966 4 0.027 -1966 5 0.025 -1966 6 0.024 -1966 7 0.022 -1966 8 0.021 -1966 9 0.019 -1966 10 0.018 -1966 11 0.016 -1966 12 0.015 -1967 1 0.014 -1967 2 0.013 -1967 3 0.012 -1967 4 0.011 -1967 5 0.011 -1967 6 0.013 -1967 7 0.014 -1967 8 0.016 -1967 9 0.018 -1967 10 0.019 -1967 11 0.018 -1967 12 0.016 -1968 1 0.015 -1968 2 0.014 -1968 3 0.013 -1968 4 0.012 -1968 5 0.014 -1968 6 0.021 -1968 7 0.028 -1968 8 0.034 -1968 9 0.041 -1968 10 0.047 -1968 11 0.046 -1968 12 0.045 -1969 1 0.043 -1969 2 0.041 -1969 3 0.040 -1969 4 0.038 -1969 5 0.037 -1969 6 0.035 -1969 7 0.034 -1969 8 0.032 -1969 9 0.031 -1969 10 0.029 -1969 11 0.027 -1969 12 0.026 -1970 1 0.024 -1970 2 0.023 -1970 3 0.021 -1970 4 0.020 -1970 5 0.018 -1970 6 0.017 -1970 7 0.015 -1970 8 0.014 -1970 9 0.013 -1970 10 0.012 -1970 11 0.011 -1970 12 0.010 -1971 1 0.009 -1971 2 0.009 -1971 3 0.008 -1971 4 0.007 -1971 5 0.007 -1971 6 0.006 -1971 7 0.006 -1971 8 0.005 -1971 9 0.006 -1971 10 0.005 -1971 11 0.005 -1971 12 0.005 -1972 1 0.004 -1972 2 0.004 -1972 3 0.004 -1972 4 0.003 -1972 5 0.003 -1972 6 0.003 -1972 7 0.003 -1972 8 0.004 -1972 9 0.004 -1972 10 0.004 -1972 11 0.005 -1972 12 0.005 -1973 1 0.006 -1973 2 0.006 -1973 3 0.007 -1973 4 0.007 -1973 5 0.007 -1973 6 0.008 -1973 7 0.008 -1973 8 0.008 -1973 9 0.009 -1973 10 0.009 -1973 11 0.009 -1973 12 0.010 -1974 1 0.010 -1974 2 0.011 -1974 3 0.011 -1974 4 0.011 -1974 5 0.012 -1974 6 0.012 -1974 7 0.013 -1974 8 0.013 -1974 9 0.013 -1974 10 0.014 -1974 11 0.014 -1974 12 0.018 -1975 1 0.023 -1975 2 0.027 -1975 3 0.031 -1975 4 0.036 -1975 5 0.040 -1975 6 0.037 -1975 7 0.034 -1975 8 0.031 -1975 9 0.029 -1975 10 0.026 -1975 11 0.024 -1975 12 0.022 -1976 1 0.021 -1976 2 0.019 -1976 3 0.018 -1976 4 0.016 -1976 5 0.015 -1976 6 0.014 -1976 7 0.013 -1976 8 0.012 -1976 9 0.011 -1976 10 0.010 -1976 11 0.009 -1976 12 0.008 -1977 1 0.008 -1977 2 0.007 -1977 3 0.007 -1977 4 0.006 -1977 5 0.005 -1977 6 0.005 -1977 7 0.005 -1977 8 0.004 -1977 9 0.004 -1977 10 0.004 -1977 11 0.003 -1977 12 0.003 -1978 1 0.003 -1978 2 0.003 -1978 3 0.002 -1978 4 0.003 -1978 5 0.005 -1978 6 0.007 -1978 7 0.008 -1978 8 0.010 -1978 9 0.012 -1978 10 0.012 -1978 11 0.012 -1978 12 0.013 -1979 1 0.013 -1979 2 0.013 -1979 3 0.012 -1979 4 0.011 -1979 5 0.010 -1979 6 0.009 -1979 7 0.009 -1979 8 0.008 -1979 9 0.007 -1979 10 0.007 -1979 11 0.006 -1979 12 0.006 -1980 1 0.005 -1980 2 0.005 -1980 3 0.004 -1980 4 0.004 -1980 5 0.004 -1980 6 0.004 -1980 7 0.004 -1980 8 0.005 -1980 9 0.005 -1980 10 0.005 -1980 11 0.005 -1980 12 0.005 -1981 1 0.005 -1981 2 0.005 -1981 3 0.005 -1981 4 0.004 -1981 5 0.004 -1981 6 0.005 -1981 7 0.005 -1981 8 0.005 -1981 9 0.005 -1981 10 0.005 -1981 11 0.005 -1981 12 0.005 -1982 1 0.006 -1982 2 0.006 -1982 3 0.006 -1982 4 0.024 -1982 5 0.043 -1982 6 0.053 -1982 7 0.068 -1982 8 0.074 -1982 9 0.078 -1982 10 0.084 -1982 11 0.090 -1982 12 0.098 -1983 1 0.096 -1983 2 0.094 -1983 3 0.096 -1983 4 0.091 -1983 5 0.086 -1983 6 0.079 -1983 7 0.073 -1983 8 0.067 -1983 9 0.062 -1983 10 0.057 -1983 11 0.052 -1983 12 0.049 -1984 1 0.045 -1984 2 0.042 -1984 3 0.038 -1984 4 0.035 -1984 5 0.032 -1984 6 0.030 -1984 7 0.028 -1984 8 0.026 -1984 9 0.024 -1984 10 0.022 -1984 11 0.020 -1984 12 0.019 -1985 1 0.016 -1985 2 0.016 -1985 3 0.014 -1985 4 0.014 -1985 5 0.013 -1985 6 0.013 -1985 7 0.012 -1985 8 0.012 -1985 9 0.010 -1985 10 0.010 -1985 11 0.010 -1985 12 0.012 -1986 1 0.015 -1986 2 0.016 -1986 3 0.014 -1986 4 0.015 -1986 5 0.014 -1986 6 0.013 -1986 7 0.013 -1986 8 0.014 -1986 9 0.013 -1986 10 0.013 -1986 11 0.012 -1986 12 0.012 -1987 1 0.012 -1987 2 0.011 -1987 3 0.011 -1987 4 0.010 -1987 5 0.010 -1987 6 0.010 -1987 7 0.011 -1987 8 0.011 -1987 9 0.010 -1987 10 0.009 -1987 11 0.009 -1987 12 0.009 -1988 1 0.009 -1988 2 0.009 -1988 3 0.008 -1988 4 0.007 -1988 5 0.007 -1988 6 0.007 -1988 7 0.008 -1988 8 0.010 -1988 9 0.007 -1988 10 0.007 -1988 11 0.007 -1988 12 0.007 -1989 1 0.007 -1989 2 0.006 -1989 3 0.006 -1989 4 0.006 -1989 5 0.005 -1989 6 0.006 -1989 7 0.007 -1989 8 0.008 -1989 9 0.006 -1989 10 0.005 -1989 11 0.005 -1989 12 0.005 -1990 1 0.006 -1990 2 0.007 -1990 3 0.006 -1990 4 0.004 -1990 5 0.004 -1990 6 0.006 -1990 7 0.007 -1990 8 0.007 -1990 9 0.007 -1990 10 0.006 -1990 11 0.006 -1990 12 0.006 -1991 1 0.006 -1991 2 0.006 -1991 3 0.005 -1991 4 0.005 -1991 5 0.005 -1991 6 0.018 -1991 7 0.038 -1991 8 0.071 -1991 9 0.096 -1991 10 0.120 -1991 11 0.138 -1991 12 0.139 -1992 1 0.148 -1992 2 0.149 -1992 3 0.143 -1992 4 0.139 -1992 5 0.138 -1992 6 0.126 -1992 7 0.123 -1992 8 0.114 -1992 9 0.104 -1992 10 0.098 -1992 11 0.092 -1992 12 0.079 -1993 1 0.074 -1993 2 0.066 -1993 3 0.061 -1993 4 0.056 -1993 5 0.052 -1993 6 0.048 -1993 7 0.045 -1993 8 0.043 -1993 9 0.039 -1993 10 0.038 -1993 11 0.035 -1993 12 0.031 -1994 1 0.029 -1994 2 0.026 -1994 3 0.024 -1994 4 0.022 -1994 5 0.021 -1994 6 0.019 -1994 7 0.018 -1994 8 0.017 -1994 9 0.016 -1994 10 0.017 -1994 11 0.016 -1994 12 0.016 -1995 1 0.012 -1995 2 0.012 -1995 3 0.011 -1995 4 0.010 -1995 5 0.010 -1995 6 0.009 -1995 7 0.009 -1995 8 0.009 -1995 9 0.009 -1995 10 0.009 -1995 11 0.009 -1995 12 0.008 -1996 1 0.007 -1996 2 0.007 -1996 3 0.007 -1996 4 0.006 -1996 5 0.007 -1996 6 0.006 -1996 7 0.007 -1996 8 0.006 -1996 9 0.006 -1996 10 0.006 -1996 11 0.006 -1996 12 0.006 -1997 1 0.006 -1997 2 0.006 -1997 3 0.005 -1997 4 0.005 -1997 5 0.005 -1997 6 0.005 -1997 7 0.005 -1997 8 0.005 -1997 9 0.005 -1997 10 0.005 -1997 11 0.005 -1997 12 0.004 -1998 1 0.004 -1998 2 0.004 -1998 3 0.003 -1998 4 0.003 -1998 5 0.003 -1998 6 0.003 -1998 7 0.002 -1998 8 0.002 -1998 9 0.002 -1998 10 0.002 -1998 11 0.002 -1998 12 0.002 -1999 1 0.002 -1999 2 0.002 -1999 3 0.002 -1999 4 0.002 -1999 5 0.002 -1999 6 0.002 -1999 7 0.002 -1999 8 0.002 -1999 9 0.002 -1999 10 0.002 -1999 11 0.002 -1999 12 0.002 -2000 1 0.002 -2000 2 0.002 -2000 3 0.002 -2000 4 0.002 -2000 5 0.002 -2000 6 0.002 -2000 7 0.002 -2000 8 0.002 -2000 9 0.002 -2000 10 0.002 -2000 11 0.002 -2000 12 0.002 -2001 1 0.002 -2001 2 0.002 -2001 3 0.002 -2001 4 0.002 -2001 5 0.002 -2001 6 0.002 -2001 7 0.002 -2001 8 0.002 -2001 9 0.002 -2001 10 0.002 -2001 11 0.002 -2001 12 0.002 -2002 1 0.002 -2002 2 0.002 -2002 3 0.002 -2002 4 0.002 -2002 5 0.002 -2002 6 0.002 -2002 7 0.002 -2002 8 0.002 -2002 9 0.002 -2002 10 0.002 -2002 11 0.002 -2002 12 0.003 -2003 1 0.003 -2003 2 0.003 -2003 3 0.003 -2003 4 0.003 -2003 5 0.002 -2003 6 0.002 -2003 7 0.003 -2003 8 0.003 -2003 9 0.003 -2003 10 0.003 -2003 11 0.003 -2003 12 0.003 -2004 1 0.002 -2004 2 0.002 -2004 3 0.002 -2004 4 0.002 -2004 5 0.002 -2004 6 0.002 -2004 7 0.002 -2004 8 0.002 -2004 9 0.002 -2004 10 0.002 -2004 11 0.002 -2004 12 0.003 -2005 1 0.003 -2005 2 0.003 -2005 3 0.003 -2005 4 0.004 -2005 5 0.003 -2005 6 0.003 -2005 7 0.003 -2005 8 0.004 -2005 9 0.004 -2005 10 0.004 -2005 11 0.004 -2005 12 0.004 -2006 1 0.003 -2006 2 0.003 -2006 3 0.003 -2006 4 0.003 -2006 5 0.003 -2006 6 0.003 -2006 7 0.004 -2006 8 0.004 -2006 9 0.004 -2006 10 0.004 -2006 11 0.005 -2006 12 0.005 -2007 1 0.005 -2007 2 0.005 -2007 3 0.004 -2007 4 0.004 -2007 5 0.004 -2007 6 0.004 -2007 7 0.004 -2007 8 0.004 -2007 9 0.004 -2007 10 0.004 -2007 11 0.004 -2007 12 0.004 -2008 1 0.004 -2008 2 0.004 -2008 3 0.003 -2008 4 0.003 -2008 5 0.003 -2008 6 0.003 -2008 7 0.003 -2008 8 0.004 -2008 9 0.004 -2008 10 0.005 -2008 11 0.005 -2008 12 0.005 -2009 1 0.004 -2009 2 0.004 -2009 3 0.004 -2009 4 0.004 -2009 5 0.004 -2009 6 0.004 -2009 7 0.005 -2009 8 0.006 -2009 9 0.006 -2009 10 0.006 -2009 11 0.005 -2009 12 0.005 -2010 1 0.004 -2010 2 0.004 -2010 3 0.003 -2010 4 0.003 -2010 5 0.003 -2010 6 0.003 -2010 7 0.003 -2010 8 0.004 -2010 9 0.004 -2010 10 0.003 -2010 11 0.004 -2010 12 0.004 -2011 1 0.004 -2011 2 0.004 -2011 3 0.004 -2011 4 0.004 -2011 5 0.003 -2011 6 0.003 -2011 7 0.005 -2011 8 0.007 -2011 9 0.007 -2011 10 0.006 -2011 11 0.006 -2011 12 0.005 -2012 1 0.005 -2012 2 0.004 -2012 3 0.004 -2012 4 0.004 -2012 5 0.004 -2012 6 0.003 -2012 7 0.003 -2012 8 0.003 -2012 9 0.004 -2012 10 0.000 -2012 11 0.000 -2012 12 0.000 -2013 1 0.000 -2013 2 0.000 -2013 3 0.000 -2013 4 0.000 -2013 5 0.000 -2013 6 0.000 -2013 7 0.000 -2013 8 0.000 -2013 9 0.000 -2013 10 0.000 -2013 11 0.000 -2013 12 0.000 -2014 1 0.000 -2014 2 0.000 -2014 3 0.000 -2014 4 0.000 -2014 5 0.000 -2014 6 0.000 -2014 7 0.000 -2014 8 0.000 -2014 9 0.000 -2014 10 0.000 -2014 11 0.000 -2014 12 0.000 -2015 1 0.000 -2015 2 0.000 -2015 3 0.000 -2015 4 0.000 -2015 5 0.000 -2015 6 0.000 -2015 7 0.000 -2015 8 0.000 -2015 9 0.000 -2015 10 0.000 -2015 11 0.000 -2015 12 0.000 -2016 1 0.000 -2016 2 0.000 -2016 3 0.000 -2016 4 0.000 -2016 5 0.000 -2016 6 0.000 -2016 7 0.000 -2016 8 0.000 -2016 9 0.000 -2016 10 0.000 -2016 11 0.000 -2016 12 0.000 -2017 1 0.000 -2017 2 0.000 -2017 3 0.000 -2017 4 0.000 -2017 5 0.000 -2017 6 0.000 -2017 7 0.000 -2017 8 0.000 -2017 9 0.000 -2017 10 0.000 -2017 11 0.000 -2017 12 0.000 -2018 1 0.000 -2018 2 0.000 -2018 3 0.000 -2018 4 0.000 -2018 5 0.000 -2018 6 0.000 -2018 7 0.000 -2018 8 0.000 -2018 9 0.000 -2018 10 0.000 -2018 11 0.000 -2018 12 0.000 -2019 1 0.000 -2019 2 0.000 -2019 3 0.000 -2019 4 0.000 -2019 5 0.000 -2019 6 0.000 -2019 7 0.000 -2019 8 0.000 -2019 9 0.000 -2019 10 0.000 -2019 11 0.000 -2019 12 0.000 -2020 1 0.000 -2020 2 0.000 -2020 3 0.000 -2020 4 0.000 -2020 5 0.000 -2020 6 0.000 -2020 7 0.000 - From 088188505590c44c2ab9f960b7acd52f3c43448c Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Fri, 1 Sep 2023 16:37:15 +0200 Subject: [PATCH 4/9] flake8 6.1: ignore E721 (#271) --- tests/integration/test_calibrate_mesmer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/test_calibrate_mesmer.py b/tests/integration/test_calibrate_mesmer.py index b70369103..d374bcee6 100644 --- a/tests/integration/test_calibrate_mesmer.py +++ b/tests/integration/test_calibrate_mesmer.py @@ -70,7 +70,7 @@ def test_calibrate_mesmer( exp = joblib.load(expected_output_file) assert isinstance(res, dict) - assert type(res) == type(exp) + assert type(res) == type(exp) # noqa: E721 assert res.keys() == exp.keys() # check all keys of res match exp From 0232bd5bf1d0d83dbb2127cd0e6c26eeb44b4020 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Fri, 1 Sep 2023 16:46:02 +0200 Subject: [PATCH 5/9] add longitude wrap functions (#270) --- CHANGELOG.rst | 3 + docs/source/api.rst | 2 + mesmer/xarray_utils/grid.py | 70 ++++++++++++++++++++ tests/unit/test_grid_wrap.py | 125 +++++++++++++++++++++++++++++++++++ 4 files changed, 200 insertions(+) create mode 100644 tests/unit/test_grid_wrap.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 5f5b8850d..c1f09e84f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -61,6 +61,9 @@ New Features - Added functions to calculate the weighted global mean (`#220 `_). By `Mathias Hauser `_. + - Added functions to wrap arrays to [-180, 180) and [0, 360), respectively (`#270 + `_). By `Mathias Hauser + `_. - The aerosol data is now automatically downloaded using `pooch `__. (`#267 `_). By `Mathias Hauser diff --git a/docs/source/api.rst b/docs/source/api.rst index 04ad31321..6fff1c777 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -68,6 +68,8 @@ Data manipulation .. autosummary:: :toctree: generated/ + ~xarray_utils.grid.wrap_to_180 + ~xarray_utils.grid.wrap_to_360 ~xarray_utils.grid.stack_lat_lon ~xarray_utils.grid.unstack_lat_lon_and_align ~xarray_utils.grid.unstack_lat_lon diff --git a/mesmer/xarray_utils/grid.py b/mesmer/xarray_utils/grid.py index ce3333974..55e457294 100644 --- a/mesmer/xarray_utils/grid.py +++ b/mesmer/xarray_utils/grid.py @@ -3,6 +3,76 @@ from packaging.version import Version +def _lon_to_180(lon): + + with xr.set_options(keep_attrs=True): + lon = ((lon + 180) % 360) - 180 + + if isinstance(lon, xr.DataArray): + lon = lon.assign_coords({lon.name: lon}) + + return lon + + +def _lon_to_360(lon): + + with xr.set_options(keep_attrs=True): + lon = lon % 360 + + if isinstance(lon, xr.DataArray): + lon = lon.assign_coords({lon.name: lon}) + + return lon + + +def wrap_to_180(obj, lon_name="lon"): + """ + wrap longitude coordinates to [-180..180) + + Parameters + ---------- + obj : xr.Dataset or xr.DataArray + object with longitude coordinates + lon : str, default: "lon" + name of the longitude ('lon', 'longitude', ...) + + Returns + ------- + wrapped : Dataset + Another dataset array wrapped around. + """ + + new_lon = _lon_to_180(obj[lon_name]) + + obj = obj.assign_coords(**{lon_name: new_lon}) + obj = obj.sortby(lon_name) + + return obj + + +def wrap_to_360(obj, lon_name="lon"): + """ + wrap longitude coordinates to [0..360) + Parameters + ---------- + obj : xr.Dataset or xr.DataArray + object with longitude coordinates + lon : str, default: "lon" + name of the longitude ('lon', 'longitude', ...) + Returns + ------- + wrapped : Dataset + Another dataset array wrapped around. + """ + + new_lon = _lon_to_360(obj[lon_name]) + + obj = obj.assign_coords(**{lon_name: new_lon}) + obj = obj.sortby(lon_name) + + return obj + + def stack_lat_lon( data, *, diff --git a/tests/unit/test_grid_wrap.py b/tests/unit/test_grid_wrap.py new file mode 100644 index 000000000..efaa35ac3 --- /dev/null +++ b/tests/unit/test_grid_wrap.py @@ -0,0 +1,125 @@ +import numpy as np +import pytest +import xarray as xr + +from mesmer import xarray_utils as xru + + +def test_lon_to_180(): + + arr = np.array([-180.1, -180, -1, 0, 179.99, 180, 179 + 2 * 360]) + + expected = np.array([179.9, -180, -1, 0, 179.99, -180, 179]) + + result = xru.grid._lon_to_180(arr) + np.testing.assert_allclose(result, expected) + + # ensure arr is not updated in-place + assert not (arr == result).all() + + attrs = {"name": "test"} + da = xr.DataArray(arr, dims="lon", coords={"lon": arr}, attrs=attrs, name="lon") + expected = xr.DataArray( + expected, dims="lon", coords={"lon": expected}, attrs=attrs, name="lon" + ) + + result = xru.grid._lon_to_180(da) + + xr.testing.assert_allclose(result, expected) + + assert result.attrs == expected.attrs + + +def test_lon_to_360(): + + arr = np.array([-180.1, -180, -1, 0, 179.99, 180, 179 + 2 * 360, 259.9, 360]) + + expected = np.array([179.9, 180, 359, 0, 179.99, 180, 179, 259.9, 0]) + + result = xru.grid._lon_to_360(arr) + np.testing.assert_allclose(result, expected) + + # ensure arr is not updated in-place + assert not (arr == result).all() + + attrs = {"name": "test"} + da = xr.DataArray(arr, dims="lon", coords={"lon": arr}, attrs=attrs, name="lon") + expected = xr.DataArray( + expected, dims="lon", coords={"lon": expected}, attrs=attrs, name="lon" + ) + + result = xru.grid._lon_to_360(da) + + xr.testing.assert_allclose(result, expected) + + assert result.attrs == expected.attrs + + +@pytest.mark.parametrize("as_dataset", (True, False)) +def test_wrap180(as_dataset): + + attrs = {"name": "test"} + obj = xr.DataArray( + [0, 1, 2, 3, 4], + dims="lon", + coords={"lon": [-1, 1, 179, 180, 360]}, + name="data", + attrs=attrs, + ) + obj.lon.attrs = {"coord": "attrs"} + expected = xr.DataArray( + [3, 0, 4, 1, 2], + dims="lon", + coords={"lon": [-180, -1, 0, 1, 179]}, + name="data", + attrs=attrs, + ) + expected.lon.attrs = {"coord": "attrs"} + + if as_dataset: + obj = obj.to_dataset() + expected = expected.to_dataset() + + result = xru.grid.wrap_to_180(obj) + + obj = obj.rename(lon="longitude") + expected = expected.rename(lon="longitude") + + result = xru.grid.wrap_to_180(obj, lon_name="longitude") + + xr.testing.assert_identical(result, expected) + + +@pytest.mark.parametrize("as_dataset", (True, False)) +def test_wrap360(as_dataset): + + attrs = {"name": "test"} + obj = xr.DataArray( + [0, 1, 2, 3, 4], + dims="lon", + coords={"lon": [-5, 1, 180, 359, 360]}, + name="data", + attrs=attrs, + ) + obj.lon.attrs = {"coord": "attrs"} + expected = xr.DataArray( + [4, 1, 2, 0, 3], + dims="lon", + coords={"lon": [0, 1, 180, 355, 359]}, + name="data", + attrs=attrs, + ) + expected.lon.attrs = {"coord": "attrs"} + + if as_dataset: + obj = obj.to_dataset() + expected = expected.to_dataset() + + result = xru.grid.wrap_to_360(obj) + + obj = obj.rename(lon="longitude") + expected = expected.rename(lon="longitude") + + result = xru.grid.wrap_to_360(obj, lon_name="longitude") + + xr.testing.assert_identical(result, expected) From f8f55c26815f7f4fe291d2cea84e3d737df49180 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Mon, 4 Sep 2023 09:06:51 +0200 Subject: [PATCH 6/9] load_cmipng: use wrap_to_360 & small refactor (#272) * load_cmipng: use wrap_to_360 & small refactor * fix used wrap function --- mesmer/io/_load_cmipng.py | 40 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/mesmer/io/_load_cmipng.py b/mesmer/io/_load_cmipng.py index 716a8e680..12db9da3e 100644 --- a/mesmer/io/_load_cmipng.py +++ b/mesmer/io/_load_cmipng.py @@ -12,6 +12,8 @@ import numpy as np import xarray as xr +import mesmer + def extract_time_lon_lat_wgt3d(data): """ @@ -283,38 +285,28 @@ def load_cmipng_file(run_path, gen, scen): # rename to time for consistency with cmip6 data = data.rename({"year": "time"}) - # roll so land in center - data = data.roll(lon=72, roll_coords=True) - - # assign_coords so that labels = reasonable - data = data.assign_coords(lon=(((data.lon + 180) % 360) - 180)) - # extract ens member run = int(data.attrs["source_ensemble"].split("r")[1].split("i")[0]) if gen == 6: + + run_path_hist = run_path.replace(scen, "historical") + paths = [run_path_hist, run_path] + preprocess = None + if "ssp534-over" in run_path: - run_path_ssp_534over = run_path run_path_ssp_585 = run_path.replace(scen, "ssp585") - run_path_hist = run_path.replace(scen, "historical") - data = xr.open_mfdataset( - [run_path_hist, run_path_ssp_585, run_path_ssp_534over], - combine="by_coords", - preprocess=preprocess_ssp534over, - ) - else: # for every other scenario - run_path_ssp = run_path - run_path_hist = run_path.replace(scen, "historical") - data = xr.open_mfdataset([run_path_hist, run_path_ssp], combine="by_coords") - - # roll so land in center - data = data.roll(lon=72, roll_coords=True) - - # assign_coords so that labels = reasonable - data = data.assign_coords(lon=(((data.lon + 180) % 360) - 180)) - data = data.sortby(["lat", "lon"]) + + paths.append(run_path_ssp_585) + preprocess = preprocess_ssp534over + + data = xr.open_mfdataset(paths, combine="by_coords", preprocess=preprocess) + run = data.attrs["realization_index"] + # wrap data to [-180, 180) + data = mesmer.xarray_utils.grid.wrap_to_180(data) + return data, run From 041230800fb0e179f63d2cd860d20d2657bbb05c Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Mon, 4 Sep 2023 09:41:39 +0200 Subject: [PATCH 7/9] grid_wrap: roundtrip tests (#273) * grid_wrap: roundtrip tests * CHANGELOG --- CHANGELOG.rst | 3 ++- tests/unit/test_grid_wrap.py | 50 ++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c1f09e84f..38296c7ad 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -62,7 +62,8 @@ New Features `_). By `Mathias Hauser `_. - Added functions to wrap arrays to [-180, 180) and [0, 360), respectively (`#270 - `_). By `Mathias Hauser + `_ and `#273 + `_). By `Mathias Hauser `_. - The aerosol data is now automatically downloaded using `pooch `__. diff --git a/tests/unit/test_grid_wrap.py b/tests/unit/test_grid_wrap.py index efaa35ac3..65ec161d1 100644 --- a/tests/unit/test_grid_wrap.py +++ b/tests/unit/test_grid_wrap.py @@ -56,7 +56,7 @@ def test_lon_to_360(): @pytest.mark.parametrize("as_dataset", (True, False)) -def test_wrap180(as_dataset): +def test_wrap_to_180(as_dataset): attrs = {"name": "test"} obj = xr.DataArray( @@ -91,7 +91,7 @@ def test_wrap180(as_dataset): @pytest.mark.parametrize("as_dataset", (True, False)) -def test_wrap360(as_dataset): +def test_wrap_to_360(as_dataset): attrs = {"name": "test"} obj = xr.DataArray( @@ -123,3 +123,49 @@ def test_wrap360(as_dataset): result = xru.grid.wrap_to_360(obj, lon_name="longitude") xr.testing.assert_identical(result, expected) + + +def _get_test_data_grid(lon, as_dataset): + lat = np.arange(90, -91, -10) + + data = np.random.randn(lat.size, lon.size) + + attrs = {"name": "test"} + orig = xr.DataArray( + data, + dims=("lat", "lon"), + coords={"lat": lat, "lon": lon}, + name="data", + attrs=attrs, + ) + + if as_dataset: + orig = orig.to_dataset() + + return orig + + +@pytest.mark.parametrize("as_dataset", (True, False)) +def test_wrap_to_360_roundtrip(as_dataset): + + lon = np.arange(-180, 180) + + orig = _get_test_data_grid(lon, as_dataset) + + wrapped = xru.grid.wrap_to_360(orig) + roundtripped = xru.grid.wrap_to_180(wrapped) + + xr.testing.assert_identical(orig, roundtripped) + + +@pytest.mark.parametrize("as_dataset", (True, False)) +def test_wrap_to_180_roundtrip(as_dataset): + + lon = np.arange(0, 360) + + orig = _get_test_data_grid(lon, as_dataset) + + wrapped = xru.grid.wrap_to_180(orig) + roundtripped = xru.grid.wrap_to_360(wrapped) + + xr.testing.assert_identical(orig, roundtripped) From 4e2b4084ff6905dadc38c18702ac3c2684f25831 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Mon, 4 Sep 2023 11:16:59 +0200 Subject: [PATCH 8/9] move data manipulation functions (#274) * move data manipulation functions * CHANGELOG --- CHANGELOG.rst | 2 ++ docs/source/api.rst | 22 ++++++------ mesmer/__init__.py | 15 ++++++-- mesmer/core/__init__.py | 0 .../global_mean.py => core/globmean.py} | 0 mesmer/{xarray_utils => core}/grid.py | 0 mesmer/{xarray_utils => core}/mask.py | 4 +-- mesmer/io/_load_cmipng.py | 2 +- mesmer/xarray_utils/__init__.py | 3 -- .../{test_global_mean.py => test_globmean.py} | 22 ++++++------ tests/unit/test_grid.py | 35 ++++++++++--------- tests/unit/test_grid_wrap.py | 26 +++++++------- tests/unit/test_mask.py | 22 ++++++------ 13 files changed, 83 insertions(+), 70 deletions(-) create mode 100644 mesmer/core/__init__.py rename mesmer/{xarray_utils/global_mean.py => core/globmean.py} (100%) rename mesmer/{xarray_utils => core}/grid.py (100%) rename mesmer/{xarray_utils => core}/mask.py (96%) delete mode 100644 mesmer/xarray_utils/__init__.py rename tests/unit/{test_global_mean.py => test_globmean.py} (79%) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 38296c7ad..4a99d3c85 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -159,6 +159,8 @@ Internal Changes By `Mathias Hauser `_. +- Moved the climate model data manipulation functions (`#237 `_). + By `Mathias Hauser `_. v0.8.3 - 2021-12-23 ------------------- diff --git a/docs/source/api.rst b/docs/source/api.rst index 6fff1c777..83624b303 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -68,17 +68,17 @@ Data manipulation .. autosummary:: :toctree: generated/ - ~xarray_utils.grid.wrap_to_180 - ~xarray_utils.grid.wrap_to_360 - ~xarray_utils.grid.stack_lat_lon - ~xarray_utils.grid.unstack_lat_lon_and_align - ~xarray_utils.grid.unstack_lat_lon - ~xarray_utils.grid.align_to_coords - ~xarray_utils.mask.mask_ocean_fraction - ~xarray_utils.mask.mask_ocean - ~xarray_utils.mask.mask_antarctica - ~xarray_utils.global_mean.lat_weights - ~xarray_utils.global_mean.weighted_mean + ~grid.wrap_to_180 + ~grid.wrap_to_360 + ~grid.stack_lat_lon + ~grid.unstack_lat_lon_and_align + ~grid.unstack_lat_lon + ~grid.align_to_coords + ~mask.mask_ocean_fraction + ~mask.mask_ocean + ~mask.mask_antarctica + ~globmean.lat_weights + ~globmean.weighted_mean Legacy functions ================ diff --git a/mesmer/__init__.py b/mesmer/__init__.py index e84c496f3..a8513edfc 100644 --- a/mesmer/__init__.py +++ b/mesmer/__init__.py @@ -6,9 +6,20 @@ The mesmer package provides tools to train the MESMER emulator, create emulations, and analyze the results. """ -# flake8: noqa -from . import calibrate_mesmer, create_emulations, io, utils, xarray_utils +from . import calibrate_mesmer, core, create_emulations, io, utils +from .core import globmean, grid, mask + +__all__ = [ + "calibrate_mesmer", + "core", + "create_emulations", + "grid", + "io", + "mask", + "utils", + "globmean", +] try: from importlib.metadata import version as _get_version diff --git a/mesmer/core/__init__.py b/mesmer/core/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/mesmer/xarray_utils/global_mean.py b/mesmer/core/globmean.py similarity index 100% rename from mesmer/xarray_utils/global_mean.py rename to mesmer/core/globmean.py diff --git a/mesmer/xarray_utils/grid.py b/mesmer/core/grid.py similarity index 100% rename from mesmer/xarray_utils/grid.py rename to mesmer/core/grid.py diff --git a/mesmer/xarray_utils/mask.py b/mesmer/core/mask.py similarity index 96% rename from mesmer/xarray_utils/mask.py rename to mesmer/core/mask.py index 919c61802..9ff83b94d 100644 --- a/mesmer/xarray_utils/mask.py +++ b/mesmer/core/mask.py @@ -46,7 +46,7 @@ def mask_ocean_fraction(data, threshold, *, x_coords="lon", y_coords="lat"): - Uses the 1:110m land mask from Natural Earth (http://www.naturalearthdata.com). - The fractional overlap of individual grid points and the land mask can only be computed for regularly-spaced 1D x- and y-coordinates. For irregularly spaced - coordinates use :py:func:`mesmer.xarray_utils.mask_land`. + coordinates use :py:func:`mesmer.mask.mask_land`. """ if np.ndim(threshold) != 0 or (threshold < 0) or (threshold > 1): @@ -95,7 +95,7 @@ def mask_ocean(data, *, x_coords="lon", y_coords="lat"): ----- - Uses the 1:110m land mask from Natural Earth (http://www.naturalearthdata.com). - Whether a grid cell is in the ocean or on land is based on its center. For - regularly spaced coordinates use :py:func:`mesmer.xarray_utils.mask_land_fraction`. + regularly spaced coordinates use :py:func:`mesmer.mask.mask_land_fraction`. """ # TODO: allow other masks? diff --git a/mesmer/io/_load_cmipng.py b/mesmer/io/_load_cmipng.py index 12db9da3e..7c1babffe 100644 --- a/mesmer/io/_load_cmipng.py +++ b/mesmer/io/_load_cmipng.py @@ -305,7 +305,7 @@ def load_cmipng_file(run_path, gen, scen): run = data.attrs["realization_index"] # wrap data to [-180, 180) - data = mesmer.xarray_utils.grid.wrap_to_180(data) + data = mesmer.grid.wrap_to_180(data) return data, run diff --git a/mesmer/xarray_utils/__init__.py b/mesmer/xarray_utils/__init__.py deleted file mode 100644 index d68a0785f..000000000 --- a/mesmer/xarray_utils/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# flake8: noqa - -from mesmer.xarray_utils import global_mean, grid, mask diff --git a/tests/unit/test_global_mean.py b/tests/unit/test_globmean.py similarity index 79% rename from tests/unit/test_global_mean.py rename to tests/unit/test_globmean.py index 198b99c01..05bffe456 100644 --- a/tests/unit/test_global_mean.py +++ b/tests/unit/test_globmean.py @@ -2,7 +2,7 @@ import pytest import xarray as xr -import mesmer.xarray_utils as mxu +import mesmer def data_lon_lat(as_dataset, x_dim="lon", y_dim="lat"): @@ -29,11 +29,11 @@ def data_lon_lat(as_dataset, x_dim="lon", y_dim="lat"): def test_lat_weights_scalar(): - np.testing.assert_allclose(mxu.global_mean.lat_weights(90), 0.0, atol=1e-7) - np.testing.assert_allclose(mxu.global_mean.lat_weights(45), np.sqrt(2) / 2) - np.testing.assert_allclose(mxu.global_mean.lat_weights(0), 1.0, atol=1e-7) - np.testing.assert_allclose(mxu.global_mean.lat_weights(-45), np.sqrt(2) / 2) - np.testing.assert_allclose(mxu.global_mean.lat_weights(-90), 0.0, atol=1e-7) + np.testing.assert_allclose(mesmer.globmean.lat_weights(90), 0.0, atol=1e-7) + np.testing.assert_allclose(mesmer.globmean.lat_weights(45), np.sqrt(2) / 2) + np.testing.assert_allclose(mesmer.globmean.lat_weights(0), 1.0, atol=1e-7) + np.testing.assert_allclose(mesmer.globmean.lat_weights(-45), np.sqrt(2) / 2) + np.testing.assert_allclose(mesmer.globmean.lat_weights(-90), 0.0, atol=1e-7) def test_lat_weights(): @@ -44,7 +44,7 @@ def test_lat_weights(): expected = np.cos(np.deg2rad(lat_coords)) expected = xr.DataArray(expected, dims=("lat"), coords={"lat": lat}, name="lat") - result = mxu.global_mean.lat_weights(lat) + result = mesmer.globmean.lat_weights(lat) xr.testing.assert_equal(result, expected) @@ -54,14 +54,14 @@ def test_lat_weights_2D_warn_2D(): lat = np.arange(10).reshape(2, 5) with pytest.warns(UserWarning, match="non-regular grids"): - mxu.global_mean.lat_weights(lat) + mesmer.globmean.lat_weights(lat) @pytest.mark.parametrize("lat", [-91, 90.1]) def test_lat_weights_2D_error_90(lat): with pytest.raises(ValueError, match="`lat_coords` must be between -90 and 90"): - mxu.global_mean.lat_weights(lat) + mesmer.globmean.lat_weights(lat) def _test_weighted_mean(as_dataset, **kwargs): @@ -70,9 +70,9 @@ def _test_weighted_mean(as_dataset, **kwargs): data = data_lon_lat(as_dataset, **kwargs) y_coords = kwargs.get("y_dim", "lat") - weights = mxu.global_mean.lat_weights(data[y_coords]) + weights = mesmer.globmean.lat_weights(data[y_coords]) - result = mxu.global_mean.weighted_mean(data, weights=weights, **kwargs) + result = mesmer.globmean.weighted_mean(data, weights=weights, **kwargs) if as_dataset: # ensure scalar is not broadcast diff --git a/tests/unit/test_grid.py b/tests/unit/test_grid.py index 33e2c57e1..081e620ff 100644 --- a/tests/unit/test_grid.py +++ b/tests/unit/test_grid.py @@ -2,7 +2,7 @@ import pytest import xarray as xr -import mesmer.xarray_utils as mxu +import mesmer def data_1D_coords(as_dataset, x_dim="lon", y_dim="lat", stack_dim="gridcell"): @@ -83,7 +83,7 @@ def data_2D_coords(as_dataset): def test_to_unstructured_defaults(as_dataset): da, expected = data_1D_coords(as_dataset) - result = mxu.grid.stack_lat_lon(da) + result = mesmer.grid.stack_lat_lon(da) xr.testing.assert_identical(result, expected) @@ -92,7 +92,7 @@ def test_to_unstructured_defaults(as_dataset): def test_to_unstructured_multiindex(as_dataset): da, expected = data_1D_coords(as_dataset) - result = mxu.grid.stack_lat_lon(da, multiindex=True) + result = mesmer.grid.stack_lat_lon(da, multiindex=True) expected = expected.set_index({"gridcell": ("lat", "lon")}) @@ -108,7 +108,7 @@ def test_to_unstructured(x_dim, y_dim, cell_dim, as_dataset): as_dataset, x_dim=x_dim, y_dim=y_dim, stack_dim=cell_dim ) - result = mxu.grid.stack_lat_lon(da, x_dim=x_dim, y_dim=y_dim, stack_dim=cell_dim) + result = mesmer.grid.stack_lat_lon(da, x_dim=x_dim, y_dim=y_dim, stack_dim=cell_dim) xr.testing.assert_identical(result, expected) @@ -117,7 +117,7 @@ def test_to_unstructured(x_dim, y_dim, cell_dim, as_dataset): def test_to_unstructured_2D_coords(as_dataset): da, expected = data_2D_coords(as_dataset) - result = mxu.grid.stack_lat_lon(da, x_dim="x", y_dim="y") + result = mesmer.grid.stack_lat_lon(da, x_dim="x", y_dim="y") xr.testing.assert_identical(result, expected) @@ -142,7 +142,7 @@ def test_to_unstructured_dropna(dropna, coords, time_pos): if dropna: expected = expected.dropna("gridcell") - result = mxu.grid.stack_lat_lon(da, dropna=dropna, **kwargs) + result = mesmer.grid.stack_lat_lon(da, dropna=dropna, **kwargs) xr.testing.assert_identical(result, expected) @@ -162,8 +162,10 @@ def test_unstructured_roundtrip_dropna_row(coords): da_structured[:, :, 0] = np.NaN expected = da_structured - da_unstructured = mxu.grid.stack_lat_lon(da_structured, **kwargs) - result = mxu.grid.unstack_lat_lon_and_align(da_unstructured, coords_orig, **kwargs) + da_unstructured = mesmer.grid.stack_lat_lon(da_structured, **kwargs) + result = mesmer.grid.unstack_lat_lon_and_align( + da_unstructured, coords_orig, **kwargs + ) # roundtripping adds x & y coords - not sure if there is something to be done about if coords == "2D": @@ -178,7 +180,7 @@ def test_from_unstructured_defaults(as_dataset): coords_orig = expected.coords.to_dataset()[["lon", "lat"]] - result = mxu.grid.unstack_lat_lon_and_align(da, coords_orig) + result = mesmer.grid.unstack_lat_lon_and_align(da, coords_orig) xr.testing.assert_identical(result, expected) @@ -193,7 +195,7 @@ def test_from_unstructured(x_dim, y_dim, stack_dim, as_dataset): ) coords_orig = expected.coords.to_dataset()[[x_dim, y_dim]] - result = mxu.grid.unstack_lat_lon_and_align( + result = mesmer.grid.unstack_lat_lon_and_align( da, coords_orig, x_dim=x_dim, y_dim=y_dim, stack_dim=stack_dim ) @@ -207,13 +209,13 @@ def test_unstructured_roundtrip_1D_coords(as_dataset): coords_orig = da_structured.coords.to_dataset()[["lon", "lat"]] - result = mxu.grid.unstack_lat_lon_and_align( - mxu.grid.stack_lat_lon(da_structured), coords_orig + result = mesmer.grid.unstack_lat_lon_and_align( + mesmer.grid.stack_lat_lon(da_structured), coords_orig ) xr.testing.assert_identical(result, da_structured) - result = mxu.grid.stack_lat_lon( - mxu.grid.unstack_lat_lon_and_align(da_unstructured, coords_orig) + result = mesmer.grid.stack_lat_lon( + mesmer.grid.unstack_lat_lon_and_align(da_unstructured, coords_orig) ) xr.testing.assert_identical(result, da_unstructured) @@ -227,7 +229,8 @@ def test_unstructured_roundtrip_2D_coords(as_dataset): coords_orig = da_structured.coords.to_dataset()[["x", "y"]] - result = mxu.grid.stack_lat_lon( - mxu.grid.unstack_lat_lon_and_align(da_unstructured, coords_orig, **dims), **dims + result = mesmer.grid.stack_lat_lon( + mesmer.grid.unstack_lat_lon_and_align(da_unstructured, coords_orig, **dims), + **dims ) xr.testing.assert_identical(result, da_unstructured) diff --git a/tests/unit/test_grid_wrap.py b/tests/unit/test_grid_wrap.py index 65ec161d1..30e3fd65c 100644 --- a/tests/unit/test_grid_wrap.py +++ b/tests/unit/test_grid_wrap.py @@ -2,7 +2,7 @@ import pytest import xarray as xr -from mesmer import xarray_utils as xru +import mesmer def test_lon_to_180(): @@ -11,7 +11,7 @@ def test_lon_to_180(): expected = np.array([179.9, -180, -1, 0, 179.99, -180, 179]) - result = xru.grid._lon_to_180(arr) + result = mesmer.grid._lon_to_180(arr) np.testing.assert_allclose(result, expected) # ensure arr is not updated in-place @@ -23,7 +23,7 @@ def test_lon_to_180(): expected, dims="lon", coords={"lon": expected}, attrs=attrs, name="lon" ) - result = xru.grid._lon_to_180(da) + result = mesmer.grid._lon_to_180(da) xr.testing.assert_allclose(result, expected) @@ -36,7 +36,7 @@ def test_lon_to_360(): expected = np.array([179.9, 180, 359, 0, 179.99, 180, 179, 259.9, 0]) - result = xru.grid._lon_to_360(arr) + result = mesmer.grid._lon_to_360(arr) np.testing.assert_allclose(result, expected) # ensure arr is not updated in-place @@ -48,7 +48,7 @@ def test_lon_to_360(): expected, dims="lon", coords={"lon": expected}, attrs=attrs, name="lon" ) - result = xru.grid._lon_to_360(da) + result = mesmer.grid._lon_to_360(da) xr.testing.assert_allclose(result, expected) @@ -80,12 +80,12 @@ def test_wrap_to_180(as_dataset): obj = obj.to_dataset() expected = expected.to_dataset() - result = xru.grid.wrap_to_180(obj) + result = mesmer.grid.wrap_to_180(obj) obj = obj.rename(lon="longitude") expected = expected.rename(lon="longitude") - result = xru.grid.wrap_to_180(obj, lon_name="longitude") + result = mesmer.grid.wrap_to_180(obj, lon_name="longitude") xr.testing.assert_identical(result, expected) @@ -115,12 +115,12 @@ def test_wrap_to_360(as_dataset): obj = obj.to_dataset() expected = expected.to_dataset() - result = xru.grid.wrap_to_360(obj) + result = mesmer.grid.wrap_to_360(obj) obj = obj.rename(lon="longitude") expected = expected.rename(lon="longitude") - result = xru.grid.wrap_to_360(obj, lon_name="longitude") + result = mesmer.grid.wrap_to_360(obj, lon_name="longitude") xr.testing.assert_identical(result, expected) @@ -152,8 +152,8 @@ def test_wrap_to_360_roundtrip(as_dataset): orig = _get_test_data_grid(lon, as_dataset) - wrapped = xru.grid.wrap_to_360(orig) - roundtripped = xru.grid.wrap_to_180(wrapped) + wrapped = mesmer.grid.wrap_to_360(orig) + roundtripped = mesmer.grid.wrap_to_180(wrapped) xr.testing.assert_identical(orig, roundtripped) @@ -165,7 +165,7 @@ def test_wrap_to_180_roundtrip(as_dataset): orig = _get_test_data_grid(lon, as_dataset) - wrapped = xru.grid.wrap_to_180(orig) - roundtripped = xru.grid.wrap_to_360(wrapped) + wrapped = mesmer.grid.wrap_to_180(orig) + roundtripped = mesmer.grid.wrap_to_360(wrapped) xr.testing.assert_identical(orig, roundtripped) diff --git a/tests/unit/test_mask.py b/tests/unit/test_mask.py index 2b9a49520..cf2f767fb 100644 --- a/tests/unit/test_mask.py +++ b/tests/unit/test_mask.py @@ -2,7 +2,7 @@ import pytest import xarray as xr -import mesmer.xarray_utils as mxu +import mesmer def data_lon_lat(as_dataset, x_coords="lon", y_coords="lat"): @@ -34,7 +34,7 @@ def test_ocean_land_fraction_errors(threshold): with pytest.raises( ValueError, match="`threshold` must be a scalar between 0 and 1" ): - mxu.mask.mask_ocean_fraction(data, threshold=threshold) + mesmer.mask.mask_ocean_fraction(data, threshold=threshold) def test_ocean_land_fraction_irregular(): @@ -48,15 +48,15 @@ def test_ocean_land_fraction_irregular(): ValueError, match="Cannot calculate fractional mask for irregularly-spaced coords", ): - mxu.mask.mask_ocean_fraction(data, threshold=0.5) + mesmer.mask.mask_ocean_fraction(data, threshold=0.5) def test_ocean_land_fraction_threshold(): # check that the threshold has an influence data = data_lon_lat(as_dataset=True) - result_033 = mxu.mask.mask_ocean_fraction(data, threshold=0.33) - result_066 = mxu.mask.mask_ocean_fraction(data, threshold=0.66) + result_033 = mesmer.mask.mask_ocean_fraction(data, threshold=0.33) + result_066 = mesmer.mask.mask_ocean_fraction(data, threshold=0.66) assert not (result_033.data == result_066.data).all() @@ -87,7 +87,7 @@ def _test_mask(func, as_dataset, threshold=None, **kwargs): @pytest.mark.parametrize("as_dataset", (True, False)) def test_ocean_land_fraction_default(as_dataset): - _test_mask(mxu.mask.mask_ocean_fraction, as_dataset, threshold=0.5) + _test_mask(mesmer.mask.mask_ocean_fraction, as_dataset, threshold=0.5) @pytest.mark.parametrize("as_dataset", (True, False)) @@ -96,7 +96,7 @@ def test_ocean_land_fraction_default(as_dataset): def test_ocean_land_fraction(as_dataset, x_coords, y_coords): _test_mask( - mxu.mask.mask_ocean_fraction, + mesmer.mask.mask_ocean_fraction, as_dataset, threshold=0.5, x_coords=x_coords, @@ -109,7 +109,7 @@ def test_ocean_land_default( as_dataset, ): - _test_mask(mxu.mask.mask_ocean, as_dataset) + _test_mask(mesmer.mask.mask_ocean, as_dataset) @pytest.mark.parametrize("as_dataset", (True, False)) @@ -117,7 +117,7 @@ def test_ocean_land_default( @pytest.mark.parametrize("y_coords", ("y", "lat")) def test_mask_land(as_dataset, x_coords, y_coords): - _test_mask(mxu.mask.mask_ocean, as_dataset, x_coords=x_coords, y_coords=y_coords) + _test_mask(mesmer.mask.mask_ocean, as_dataset, x_coords=x_coords, y_coords=y_coords) @pytest.mark.parametrize("as_dataset", (True, False)) @@ -125,11 +125,11 @@ def test_mask_antarctiva_default( as_dataset, ): - _test_mask(mxu.mask.mask_antarctica, as_dataset) + _test_mask(mesmer.mask.mask_antarctica, as_dataset) @pytest.mark.parametrize("as_dataset", (True, False)) @pytest.mark.parametrize("y_coords", ("y", "lat")) def test_mask_antarctiva(as_dataset, y_coords): - _test_mask(mxu.mask.mask_antarctica, as_dataset, y_coords=y_coords) + _test_mask(mesmer.mask.mask_antarctica, as_dataset, y_coords=y_coords) From 4b66b7098fdbc22d976fb475d265c93e38c07a71 Mon Sep 17 00:00:00 2001 From: Mathias Hauser Date: Mon, 4 Sep 2023 12:08:27 +0200 Subject: [PATCH 9/9] move regionmaskcompat to core (#275) --- mesmer/core/mask.py | 6 +++--- mesmer/{utils => core}/regionmaskcompat.py | 0 mesmer/io/load_constant_files.py | 2 +- tests/unit/test_regionmaskcompat.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename mesmer/{utils => core}/regionmaskcompat.py (100%) diff --git a/mesmer/core/mask.py b/mesmer/core/mask.py index 9ff83b94d..aedcea72b 100644 --- a/mesmer/core/mask.py +++ b/mesmer/core/mask.py @@ -2,7 +2,7 @@ import regionmask import xarray as xr -import mesmer.utils +import mesmer def _where_if_dim(obj, cond, dims): @@ -56,10 +56,10 @@ def mask_ocean_fraction(data, threshold, *, x_coords="lon", y_coords="lat"): land_110 = regionmask.defined_regions.natural_earth_v5_0_0.land_110 try: - mask_fraction = mesmer.utils.regionmaskcompat.mask_3D_frac_approx( + mask_fraction = mesmer.core.regionmaskcompat.mask_3D_frac_approx( land_110, data[x_coords], data[y_coords] ) - except mesmer.utils.regionmaskcompat.InvalidCoordsError as e: + except mesmer.core.regionmaskcompat.InvalidCoordsError as e: raise ValueError( "Cannot calculate fractional mask for irregularly-spaced coords - use " "``mask_land`` instead." diff --git a/mesmer/utils/regionmaskcompat.py b/mesmer/core/regionmaskcompat.py similarity index 100% rename from mesmer/utils/regionmaskcompat.py rename to mesmer/core/regionmaskcompat.py diff --git a/mesmer/io/load_constant_files.py b/mesmer/io/load_constant_files.py index cfe033988..563aa7bfc 100644 --- a/mesmer/io/load_constant_files.py +++ b/mesmer/io/load_constant_files.py @@ -16,7 +16,7 @@ import regionmask from packaging.version import Version -from ..utils.regionmaskcompat import mask_3D_frac_approx +from ..core.regionmaskcompat import mask_3D_frac_approx def load_phi_gc(lon, lat, ls, cfg, L_start=1500, L_end=10000, L_interval=250): diff --git a/tests/unit/test_regionmaskcompat.py b/tests/unit/test_regionmaskcompat.py index 358085705..5ef364dfc 100644 --- a/tests/unit/test_regionmaskcompat.py +++ b/tests/unit/test_regionmaskcompat.py @@ -4,7 +4,7 @@ import shapely.geometry import xarray as xr -from mesmer.utils.regionmaskcompat import ( +from mesmer.core.regionmaskcompat import ( InvalidCoordsError, mask_3D_frac_approx, sample_coord,