Thank you for the suggestion and apologies in advance for the long note below. I have updated to the latest version of docker as well as the newest 2019 version of qiime2. Now my original problem is solved but I am encountering a new problem with memory usage. Now when I run the command:
qiime feature-classifier classify-sklearn
--i-classifier /data/Silva_DB/silva-132-99-nb-classifier.qza
--i-reads rep-seqs-trunc-Ian_Pat1.qza
--o-classification taxonomy-Ian_Pat1.qza
--p-reads-per-batch 10000
--verbose
I get the error below (note, I added the --p-reads-per-batch to the command to try and reduce the memory usage - not sure if that helps?):
Plugin error from feature-classifier:
[Errno 28] No space left on device
I looked on the forum and saw these two posts:
1. Docker QIIME2 / No space left on device
2. No enough space error when using feature classifier User Support
They say that the error is because the default JOBLIB_TEMP_FOLDER for sklearn is /dev/shm is limited to 64MB by docker, which will cause the error above. The solution appears to be to add the following configuration to myDocker file:
ENV JOBLIB_TEMP_FOLDER=/tmp
I tried searching for information on how to add this to the configuration file (I guess this may be obvious to others but I'm not experienced using docker) and everything I found seemed to say to create a daemon.json file here:
'C:\ProgramData\Docker\config\daemon.json'
I don't see that I have a ProgramData\Docker\config directory (I see the ProgramData directory but not a Docker or config directory below it). Should I create these directories and the daemon.json file? As a workaround, I tried setting the variable with this command:
> set ENV JOBLIB_TEMP_FOLDER=/tmp
I thought this worked because when I checked its value
echo $ENV JOBLIB_TEMP_FOLDER=/tmp
it showed that the value was "/tmp". But, when I tried running the classifier again, I got the same error.
Can you please offer some advice on how to get around this problem?
Finally, I wanted to mention that the page describing docker installation (Installing QIIME 2 using Docker — QIIME 2 2019.1.0 documentation ), says to check the docker installation as follows:
3. Confirm the installation¶
Run the following to confirm that the image was successfully fetched.
docker run -t -i -v $(pwd):/data qiime2/core:2019.1 qiime
This doesn't work for me unless I change the "( )" to "{ }" brackets. So the final command is: docker run -t -i -v ${pwd}:/data qiime2/core:2019.1 qiime
Is this something odd about my system?
To actually run docker, I am doing this (replacing "qiime" with "bash":
docker run -t -i -v ${pwd}:/data qiime2/core:2019.1 bash
Is that the proper way to run docker or should I be doing something else? There is nothing on the qiime2 saying to do this so I'm wondering if this isn't what you had in mind.