Package: python3-seaborn
Version: 0.10.0-1
Severity: important
Tags: patch upstream

Dear Maintainers,

With certain datasets having a particular distribution, the
seaborn library crashes with a runtime error, issued first by
the python3-statsmodels library.  statsmodels seems to expect
the caller to trap the error and adapt its logic, but seaborn
as available currently in Sid does not do so.

There is a patch upstream that fixes this issue, available at
the following location:

        
https://github.com/mwaskom/seaborn/commit/09fef026ad89a299e13db44fa5b92885fb5b2823

This patch is part of seaborn 0.10.1, so getting this fix
brought to Sid will just be a matter of upgrading to that
version or later, hopefuly.


This issue is preventing the autopkgtest base of NanoPlot, which
is currently being packaged by the Debian Med Team, to run
properly, hence the severity set to "important":

        https://salsa.debian.org/med-team/nanoplot

The issue can be reproduced with building the nanoplot package,
building the package python3-nanoget-examples which stores the
test data, installing both on the system, and running the test.
Here is the relevant part of the test output for reference:

        Traceback (most recent call last):
          File 
"/usr/lib/python3/dist-packages/statsmodels/nonparametric/kde.py", line 451, in 
kdensityfft
            bw = float(bw)
        ValueError: could not convert string to float: 'scott'
        
        During handling of the above exception, another exception occurred:
        
        Traceback (most recent call last):
          File "/usr/bin/NanoPlot", line 11, in <module>
            load_entry_point('NanoPlot==1.29.0', 'console_scripts', 
'NanoPlot')()
          File "/usr/lib/python3/dist-packages/nanoplot/NanoPlot.py", line 96, 
in main
            plots = make_plots(datadf, settings)
          File "/usr/lib/python3/dist-packages/nanoplot/NanoPlot.py", line 227, 
in make_plots
            nanoplotter.scatter(
          File 
"/usr/lib/python3/dist-packages/nanoplotter/nanoplotter_main.py", line 193, in 
scatter
            plot = sns.jointplot(
          File "/usr/lib/python3/dist-packages/seaborn/axisgrid.py", line 2338, 
in jointplot
            grid.plot_marginals(kdeplot, **marginal_kws)
          File "/usr/lib/python3/dist-packages/seaborn/axisgrid.py", line 1823, 
in plot_marginals
            func(self.x, **kwargs)
          File "/usr/lib/python3/dist-packages/seaborn/distributions.py", line 
703, in kdeplot
            ax = _univariate_kdeplot(data, shade, vertical, kernel, bw,
          File "/usr/lib/python3/dist-packages/seaborn/distributions.py", line 
293, in _univariate_kdeplot
            x, y = _statsmodels_univariate_kde(data, kernel, bw,
          File "/usr/lib/python3/dist-packages/seaborn/distributions.py", line 
367, in _statsmodels_univariate_kde
            kde.fit(kernel, bw, fft, gridsize=gridsize, cut=cut, clip=clip)
          File 
"/usr/lib/python3/dist-packages/statsmodels/nonparametric/kde.py", line 138, in 
fit
            density, grid, bw = kdensityfft(endog, kernel=kernel, bw=bw,
          File 
"/usr/lib/python3/dist-packages/statsmodels/nonparametric/kde.py", line 453, in 
kdensityfft
            bw = bandwidths.select_bandwidth(X, bw, kern) # will cross-val fit 
this pattern?
          File 
"/usr/lib/python3/dist-packages/statsmodels/nonparametric/bandwidths.py", line 
174, in select_bandwidth
            raise RuntimeError(err)
        RuntimeError: Selected KDE bandwidth is 0. Cannot estimate density.

Manually patching the file seaborn/distributions.py with
upstream's approach to solving the problem allowed me to go
through the autopkgtest suite of NanoPlot.

Kind Regards,
Étienne.


-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, riscv64

Kernel: Linux 5.5.6 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE=C.UTF-8 
(charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages python3-seaborn depends on:
ii  python3             3.8.2-3
ii  python3-matplotlib  3.2.1-1+b1
ii  python3-numpy       1:1.18.3-1
ii  python3-pandas      0.25.3+dfsg-9
ii  python3-scipy       1.4.1-2
ii  python3-tk          3.8.2-2

Versions of packages python3-seaborn recommends:
ii  python3-bs4    4.9.0-2
ii  python3-patsy  0.5.1-1

python3-seaborn suggests no packages.

Edited to add the package affecting the behavior of
python3-seaborn, while not being referenced in its metadata:
ii  python3-statsmodels  0.11.1-2

-- no debconf information

Reply via email to