geraldinepascal / FROGS-wrappers

Galaxy wrappers for FROGS
2 stars 12 forks source link

Error with FROGS Affiliation OTU Step 4 in metagenomics analysis : Taxonomic affiliation of each OTU's seed by RDPtools and BLAST (Galaxy Version 0.8.0) #2

Closed yvanlebras closed 3 years ago

yvanlebras commented 6 years ago

Trying the FROGS 2.0 tools using galaxy-stable Docker image, I encounter an issue with the FROGS Affiliation OTU Step 4 in metagenomics analysis : Taxonomic affiliation of each OTU's seed by RDPtools and BLAST (Galaxy Version 0.8.0) tool.

Here is the stderr:

Fatal error: Exit code 1 ()
Traceback (most recent call last):
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/bin/affiliation_OTU.py", line 356, in <module>
    process_rdp( args.input_fasta, rdp_out_list[0], args.log_file, args.reference, args.java_mem)
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/bin/affiliation_OTU.py", line 191, in process_rdp
    rdp_cmd = RDPAffiliation(reference, input, output, memory)
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/bin/affiliation_OTU.py", line 87, in __init__
    which("classifier.jar"),
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/lib/frogsUtils.py", line 44, in which
    raise Exception( "The software '" + exec_name + "' cannot be retrieved in path." )
Exception: The software 'classifier.jar' cannot be retrieved in path.

This seems to occur when we ask RDP classification...

Thanks for putting it on the Main TS!!!!

ValentinMarcon commented 6 years ago

Hello Yvan, If you use frogs 2.0.1 conda package, it create a symbolic link of rdptools-2.0.2-0/classifier.jar in "/bin" of FROGS (which is in the path of Conda). Do you find it ?

https://github.com/bioconda/bioconda-recipes/blob/6bb7ba973d5d0e86f5e7465e8d2089d14495b9a8/recipes/frogs/build.sh

Poke @mariabernard

yvanlebras commented 6 years ago

Hello Valentin, Thanks to come back to me so rapidly!!! I have a "classifier.jar" file in the corresponding PATH /export/tool_deps/_conda/envs/__frogs@2.0.1/bin/classifier.jar

image

image

ValentinMarcon commented 6 years ago

Ok, for the moment I can't reproduce the error, by running affiliation_OTU with the (I suppose) same conda installation.

I'm continuing the investigation...

ValentinMarcon commented 6 years ago

So, I think I found the problem:

When we had build the Conda package we precise to install rdp tools >=2.0.2, but we made the symbolic link precisely on the rdptools-2.0.2-0/classifier.jar

In your case, rdptools version 2.0.2.1 is installed, so the symbolic link is not made.

So, we will correct it soon on the FROGS Conda package.

In the meantime you can : ln -s /export/tool_deps/_conda/envs/__frogs@2.0.1/share/rdptools-2.0.2-1/classifier.jar /export/tool_deps/_conda/envs/__frogs@2.0.1/bin/classifier.jar

We missed the rdp tools test when we used planemo, now its is fixed.

Apologies for that, and thank you for testing FROGS package on the toolshed !

(Poke @mariabernard @laure182 @pgdurand @oinizan )

yvanlebras commented 6 years ago

Thank you very münch! I was thinking something like that... I tested with copy/paste instead of your nice ln -s proposal ;) ITM, it appears to me there is another issue with this tool, related to db.fasta....

For example, applying the ln -s fix, classifier.jar seems to be reachable, but there is apparently a problem as db.fasta.properties is not accessible.. Here is the new stderr:

Fatal error: Exit code 1 ()
Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: /root/mydisk/FROGS-wrappers/test-data/db.fasta.properties (Permission denied)
    at edu.msu.cme.rdp.multicompare.MultiClassifier.<init>(MultiClassifier.java:66)
    at edu.msu.cme.rdp.multicompare.MultiClassifier.<init>(MultiClassifier.java:75)
    at edu.msu.cme.rdp.multicompare.Main.main(Main.java:247)
    at edu.msu.cme.rdp.classifier.cli.ClassifierMain.main(ClassifierMain.java:65)
Caused by: java.io.FileNotFoundException: /root/mydisk/FROGS-wrappers/test-data/db.fasta.properties (Permission denied)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at edu.msu.cme.rdp.classifier.utils.ClassifierFactory.<init>(ClassifierFactory.java:62)
    at edu.msu.cme.rdp.classifier.utils.ClassifierFactory.getNonDefaultFactory(ClassifierFactory.java:151)
    at edu.msu.cme.rdp.classifier.utils.ClassifierFactory.getFactory(ClassifierFactory.java:140)
    at edu.msu.cme.rdp.multicompare.MultiClassifier.<init>(MultiClassifier.java:64)
    ... 3 more
Traceback (most recent call last):
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/bin/affiliation_OTU.py", line 356, in <module>
    process_rdp( args.input_fasta, rdp_out_list[0], args.log_file, args.reference, args.java_mem)
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/bin/affiliation_OTU.py", line 192, in process_rdp
    rdp_cmd.submit(log_file)
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/lib/frogsUtils.py", line 140, in submit
    subprocess.check_output( self.get_cmd(), shell=True )
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/lib/python2.7/subprocess.py", line 223, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'taskset -c 2 java -Xmx20g -jar /export/tool_deps/_conda/envs/__frogs@2.0.1/bin/classifier.jar classify -c 0.0 -t /root/mydisk/FROGS-wrappers/test-data/db.fasta.properties -o /export/galaxy-central/database/files/000/1540896866.69_28273_dataset_103.dat.rdp /export/galaxy-central/database/files/000/dataset_103.dat' returned non-zero exit status 1

who seems to be related to the error I have using the tool desactivating the "Also perform RDP assignation":

Fatal error: Exit code 1 ()
BLAST Database error: No alias or index file found for nucleotide database [/root/mydisk/FROGS-wrappers/test-data/db.fasta] in search path [/export/galaxy-central/database/job_working_directory/000/60/working::]
Traceback (most recent call last):
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/bin/affiliation_OTU.py", line 359, in <module>
    Blast(args.reference, args.input_fasta, blast_out_list[0], 1).submit(args.log_file)
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/lib/frogsUtils.py", line 140, in submit
    subprocess.check_output( self.get_cmd(), shell=True )
  File "/export/tool_deps/_conda/envs/__frogs@2.0.1/lib/python2.7/subprocess.py", line 223, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'blastn -num_threads 1 -task megablast -word_size 38 -max_target_seqs 500 -outfmt '6 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore qlen' -query /export/galaxy-central/database/files/000/dataset_103.dat -out /export/galaxy-central/database/files/000/1540817384.02_19632_dataset_103.dat.blast -db /root/mydisk/FROGS-wrappers/test-data/db.fasta' returned non-zero exit status 2

and this seems to be related to the ref_fasta param of the __frogs@2.0.1/bin/affiliation_OTU.py script...

In a Galaxy flavour, there is db.fasta files here:

/tool_deps/_conda/pkgs/frogs-2.0.1-py27_0/share/FROGS-2.0.1/test/data/db.fasta
/tool_deps/_conda/envs/__frogs@2.0.1/share/FROGS-2.0.1/test/data/db.fasta
/tool_deps/_conda/envs/mulled-v1-61131ed33f99a2df358536e034829c8e8a50872bddfa36b87d044212fc5ba539/share/FROGS-2.0.1/test/data/db.fasta
ValentinMarcon commented 6 years ago

It seem that you don't have a databank installed and configured on your galaxy instance.

Please find the doc of the databanks configuration here: https://github.com/geraldinepascal/FROGS/tree/v2.0.0#8-upload-and-configure-the-databanks

In summary you need to: -download the databanks -change the location of your databank on the frogs_db.loc file on the tool-data repository (--> Change "/root/mydisk/FROGS-wrappers/test-data/db.fasta" with the right path)

yvanlebras commented 6 years ago

Thank you very much Valentin!

Maybe it will be of interest to create this .loc file and download databank directly through the installation or maybe through a dedicated data manager ?