wdecoster / NanoPlot

Plotting scripts for long read sequencing data
http://nanoplot.bioinf.be
MIT License
401 stars 48 forks source link

NanoPlot 1.41.0 AttributeError: 'list' object has no attribute 'lower' #328

Closed ljz3216 closed 1 year ago

ljz3216 commented 1 year ago

Good evening, i installed NanoPlot in a fresh environment of python 3.7, and seaborn 0.10.1 was also installed. However, I got following issue when i run NanoPlot.

$ NanoPlot -t 2 --fastq filtered_reads.fastq.gz --maxlength 40000 --plots dot --legacy hex -o 02nanoplot_qc/ --verbose --dpi 300

2023-04-22 22:24:22,292 NanoPlot 1.41.0 started with arguments Namespace(N50=False, alength=False, bam=None, barcoded=False, color='#4CB391', colormap='Greens', cram=None, downsample=None, dpi=300, drop_outliers=False, fasta=None, fastq=['filtered_reads.fastq.gz'], fastq_minimal=None, fastq_rich=None, feather=None, font_scale=1, format=['png'], hide_stats=False, huge=False, info_in_report=False, legacy=['hex'], listcolormaps=False, listcolors=False, loglength=False, maxlength=40000, minlength=None, minqual=None, no_N50=False, no_static=False, no_supplementary=False, outdir='02nanoplot_qc/', path='02nanoplot_qc/', percentqual=False, pickle=None, plots=['dot'], prefix='', raw=False, readtype='1D', runtime_until=None, store=False, summary=None, threads=2, title=None, tsv_stats=False, ubam=None, verbose=True)
2023-04-22 22:24:22,292 Python version is: 3.7.12 | packaged by conda-forge | (default, Oct 26 2021, 06:08:53)  [GCC 9.4.0]
2023-04-22 22:24:22,302 Nanoget: Starting to collect statistics from plain fastq file.
2023-04-22 22:24:22,304 Nanoget: Decompressing gzipped fastq filtered_reads.fastq.gz
2023-04-22 22:35:37,749 Reduced DataFrame memory usage from 64.7526626586914Mb to 37.77238655090332Mb
2023-04-22 22:35:37,850 Nanoget: Gathered all metrics of 2829087 reads
2023-04-22 22:35:39,092 Calculated statistics
2023-04-22 22:35:39,094 Using sequenced read lengths for plotting.
2023-04-22 22:35:39,222 Hidding 0 reads longer than 40000bp in length plots.
2023-04-22 22:35:39,291 NanoPlot:  Valid color #4CB391.
2023-04-22 22:35:39,292 NanoPlot:  Valid colormap Greens.
2023-04-22 22:35:39,443 NanoPlot:  Creating length plots for Read length.
2023-04-22 22:35:39,447 NanoPlot:  Using 2829087 reads maximum of 19561bp.
2023-04-22 22:35:41,982 Saved 02nanoplot_qc/WeightedHistogramReadlength  as png (or png for --legacy)
2023-04-22 22:35:46,269 Saved 02nanoplot_qc/WeightedLogTransformed_HistogramReadlength  as png (or png for --legacy)
2023-04-22 22:35:47,775 Saved 02nanoplot_qc/Non_weightedHistogramReadlength  as png (or png for --legacy)
2023-04-22 22:35:49,546 Saved 02nanoplot_qc/Non_weightedLogTransformed_HistogramReadlength  as png (or png for --legacy)
2023-04-22 22:35:51,724 Saved 02nanoplot_qc/Yield_By_Length  as png (or png for --legacy)
2023-04-22 22:35:51,727 Created length plots
2023-04-22 22:35:51,842 NanoPlot: Creating Read lengths vs Average read quality plots using 2829087 reads.
2023-04-22 22:35:54,177 Saved 02nanoplot_qc/LengthvsQualityScatterPlot_dot  as png (or png for --legacy)
2023-04-22 22:35:54,660 NanoPlot: Creating Read lengths vs Average read quality legacy plots using 10000 reads.
2023-04-22 22:35:54,905 'list' object has no attribute 'lower'
Traceback (most recent call last):
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplot/NanoPlot.py", line 106, in main
    plots = make_plots(datadf, settings)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplot/NanoPlot.py", line 185, in make_plots
    settings=settings,
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplotter/nanoplotter_main.py", line 194, in scatter
    title=title,
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplotter/nanoplotter_main.py", line 278, in scatter_legacy
    hex_plot.save(settings)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplotter/plot.py", line 57, in save
    self.fig.savefig(fname=self.path, format=settings["format"], bbox_inches="tight")
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/seaborn/axisgrid.py", line 1899, in savefig
    self.fig.savefig(*args, **kwargs)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/matplotlib/figure.py", line 3058, in savefig
    self.canvas.print_figure(fname, **kwargs)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2256, in print_figure
    format = format.lower()
AttributeError: 'list' object has no attribute 'lower'

If you read this then NanoPlot 1.41.0 has crashed :-(
Please try updating NanoPlot and see if that helps...

If not, please report this issue at https://github.com/wdecoster/NanoPlot/issues
If you could include the log file that would be really helpful.
Thanks!

Traceback (most recent call last):
  File "/home/ljz/miniconda3/envs/m6a/bin/NanoPlot", line 10, in <module>
    sys.exit(main())
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplot/NanoPlot.py", line 106, in main
    plots = make_plots(datadf, settings)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplot/NanoPlot.py", line 185, in make_plots
    settings=settings,
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplotter/nanoplotter_main.py", line 194, in scatter
    title=title,
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplotter/nanoplotter_main.py", line 278, in scatter_legacy
    hex_plot.save(settings)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/nanoplotter/plot.py", line 57, in save
    self.fig.savefig(fname=self.path, format=settings["format"], bbox_inches="tight")
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/seaborn/axisgrid.py", line 1899, in savefig
    self.fig.savefig(*args, **kwargs)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/matplotlib/figure.py", line 3058, in savefig
    self.canvas.print_figure(fname, **kwargs)
  File "/home/ljz/miniconda3/envs/m6a/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2256, in print_figure
    format = format.lower()
AttributeError: 'list' object has no attribute 'lower'

Thanks for your help!

wdecoster commented 1 year ago

The error comes from the legacy plot, I will probably fix it next week.

ljz3216 commented 1 year ago

Thank you

fataltes commented 1 year ago

Hi @wdecoster ,

I was just wondering if you fixed this error since I'm getting the same error too.

wdecoster commented 1 year ago

Hi,

That should be solved in NanoPlot v1.41.3, now available through pip. Please let me know if you encounter further issues.

Wouter