mdmcleaner icon indicating copy to clipboard operation
mdmcleaner copied to clipboard

Error when checking dependencies in mdmcleaner makedb

Open danpal96 opened this issue 1 year ago • 3 comments

Installation with conda: python=3.11.3 mdmcleaner=0.8.7

I got the next error when running mdmcleaner makedb

You are running the following MDMcleaner command:                                                                                
         '/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/bin/mdmcleaner makedb -o mdmcleaner'                                                                                                                                                             
reading settings from configfile: "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/site-packages/mdmcleaner/mdmcleaner.config"                                                                                                              
                                                                                                                                                                                                                                                                  
        settings:                                                                                                                                                                                                                                                 
                threads = '1'                                                                                                                                                                                                                                     
                db_type = '['gtdb']'                                                                                                                                                                                                                              
                blacklistfile = '['/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/site-packages/mdmcleaner/blacklist.list']'                                                                                                               
                blastn = 'blastn'                                                                                                
                blastp = 'blastp'                                                                                                
                makeblastdb = 'makeblastdb'                                                                                                                                                                                                                       
                blastdbcmd = 'blastdbcmd'                                                                                                                                                                                                                         
                diamond = 'diamond'                                                                                                                                                                                                                               
                barrnap = 'barrnap'                                                                                              
                hmmsearch = 'hmmsearch'                                                                                          
                aragorn = 'aragorn'                                                                                              
                prodigal = 'prodigal'                                                                                                                                                                                                                             
                                                                                                                                 
                                                                                                                                 
        checking dependencies...                                                                                                 
                makeblastdb...2.13.0 --> OK!                                                                                     
                diamond...2.1.6 --> OK!                                                                                                                                                                                                                           
                wget...Traceback (most recent call last):                                                                        
  File "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/bin/mdmcleaner", line 10, in <module>                                                                                                                                                              
    sys.exit(main())                                                                                                             
             ^^^^^^                                                                                                                                                                                                                                               
  File "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/site-packages/mdmcleaner/mdmcleaner.py", line 230, in main
    check_dependencies.check_dependencies("makeblastdb", "diamond", "wget", configs=configs)                                     
  File "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/site-packages/mdmcleaner/check_dependencies.py", line 115, in check_dependencies                                                                                                    
    check_external_dependency(*toolnames, configs=configs)                                                                       
  File "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/site-packages/mdmcleaner/check_dependencies.py", line 128, in check_external_dependency                                                                                             
    isttool = version_object(get_external_dependency_version_string(tool))                                                       
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                         
  File "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/site-packages/mdmcleaner/check_dependencies.py", line 86, in get_external_dependency_version_string
    output = proc.stdout.readline().strip()                                                                                      
             ^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                               
  File "/mnt/extra/home/danielpalma/mambaforge/envs/mdmcleaner/lib/python3.11/encodings/ascii.py", line 26, in decode            
    return codecs.ascii_decode(input, self.errors)[0]

For some reason it is decoding the wget --version text as ascii but in my version of wget the text contains some non-ascii characters.

I solved this by replacing the next line of get_external_dependency_version_string:

proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, text = True, universal_newlines=True)

with:

proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, text = True, universal_newlines=True, errors="ignore")

The errors parameter is explained here https://docs.python.org/3/library/io.html#io.TextIOWrapper. I don't think that setting it to ignore would cause any unexpected behaviour but I'm not sure.

danpal96 avatar Apr 12 '23 21:04 danpal96