How do I install a program inside a container for use with the existing container commands?

Hello, everyone,

I have an issue with installing a program within a container that the existing suite of programs in the container require to run a specific command. The container I’m running contains a suite of bioinformatics commands (Qiime) and I need to install the program usearch. To complicate this issue, I’m running docker on Windows and my container commands are written in python, which I am not well versed in. I’ll try to provide as much detail and code as possible.

First, I launch my container and mount my folder with:

 docker run --rm -t -i --mount type=bind,source=C:\Sequencing\Oomycetes,target=//c/Sequencing/Oomycetes cwarden45/metagenomics bash

This is as far as I can get without running into issues due to my lack of understanding of how to proceed correctly. I can run commands within my container just fine, with the exception of the command that is missing the usearch installation.

Usually, Qiime commands only need the associated program files included in the directory you’re working in (e.g. using a virtual box, you’d just drop it into the folder you’re working in). I’ve tried this approach by including both the windows executable file and the linux file in my directory with the resulting error:

 StdOut:

 StdErr:
 sh: 1: usearch61: not found

Next, I’ve tried using wget to install the correct version of usearch inside the container:

root@b7b6d82c7f71:/# wget -O "usearch61" https://drive5.com/cgi-bin/upload3.py?license=XXXXXXXXXXXXXXXXXXXXXXXX
 --2018-10-28 15:41:06--  https://drive5.com/cgi-bin/upload3.py?license=XXXXXXXXXXXXXX
 Resolving drive5.com (drive5.com)... 199.195.116.69
 Connecting to drive5.com (drive5.com)|199.195.116.69|:443... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: unspecified [application/octet-stream]
 Saving to: 'usearch61'

 usearch61                                     [    <=>                                                                               ]   1.30M  1.64MB/s    in 0.8s

 2018-10-28 15:41:07 (1.64 MB/s) - 'usearch61' saved [1362207]

 root@b7b6d82c7f71:/# chmod +x usearch61
 root@b7b6d82c7f71:/# ./usearch61

 (C) Copyright 2010-12 Robert C. Edgar, all rights reserved.
 http://drive5.com/usearch

 License: #####


 For documentation, please visit:

 http://drive5.com/usearch

This seemed promising, so I ran my command which inputs my file and calls the usearch program:

 identify_chimeric_seqs.py -i //c/Sequencing/Oomycetes/seqs.fna -m usearch61 --suppress_usearch61_ref

This again resulted in the previous error of usearch61 not being found. I’ll include the full output error below, which includes some specifics for the Qiime identify_chimeric_seqs.py command failing to call usearch61 correctly.

 Command:
 cd "/usearch61_chimeras/"; usearch61 --maxaccepts 1 --consout "/usearch61_chimeras/seqs.fna_consensus_with_abundance.fasta" --usersort --id 0.97 --sizeout --minseqlength 64 --wordlength 8 --uc "/usearch61_chimeras/seqs.fna_consensus_with_abundance.uc" --cluster_smallmem "//c/Sequencing/Oomycetes/seqs.fna" --maxrejects 8 --strand plus --log "/usearch61_chimeras/seqs.fna_smallmem_clustered.log" > "/tmp/tmpIlFYz69IBja8NHXX19PX.txt" 2> "/tmp/tmpDOXRN3JQS2nCP8bcoQui.txt"

 StdOut:

 StdErr:
 sh: 1: usearch61: not found

It’s apparent to me that usearch did not install in a way that is agreeable with my Qiime commands, but I’m at a loss on how to continue troubleshooting. I don’t know if it’s something outside the container, inside the container, or an issue with Qiime’s command itself. Any help would be greatly appreciated!

I’ve fixed my issue for what I needed to do with a different work around, but I’ll leave this up in case anyone wants to educate me on how to properly do these things going forward!