biocorecrg/master_of_pores

How to install extra apt packages easily in biocorecrg-mopbasecall

eylenth opened this issue · 21 comments

Hello
A bioscientist is trying to execute the following command from the NanoPreprocess directory:
nextflow run nanopreprocess.nf -with-singularity

But then we see the following error
guppy_basecaller: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
which means that some apt packages are missing in the biocorecrg-mopbasecall-0.1 container
It seems the guppy_basecaller is missing the following libraries in the singularity container:

  • libssl.so.10
  • libcrypto.so.10
  • libsz.so.2
    (We are using guppy version 4.0.11 btw)

How can I easily install extra apt packages in biocorecrg-mopbasecall container ? I am not a nextflow export, so I don't know if there is even an 'easy' way to do this.

Hi, I don't know if we tested that version. Can you try with the version we described in the paper? If you still have the problem is likely another kind of problem.

@ADelgadoT did you tested the version 4.0.11?

I tested version 4.0.15 and it worked. I did not test 4.0.11.

I'm using the rpm installation to install guppy on my client server. I don't know if this matter?

Hi it seems to be working when I use the tarball of guppy instead of the rpm version.
But I also needed to modifiy the following file:
$MASTEROFPORESINSTALL/NanoPreprocess/nanopreprocess.nf
modified
gpu_prefix = 'export LD_LIBRARY_PATH="/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs"'
to
gpu_prefix = 'export LD_LIBRARY_PATH="/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs:${GUPPYSOFTAWAREPATH}/4.2.2/lib"'
so it could also read the guppy libraries inside the singularity container.

I don't understand. Have you placed the guppy folder inside bin in NanoPreprocess?
Like here:

ls ont-guppy_xx.xx.xx_linux64/ont-guppy/
bin	data	lib

you should have bin, data e lib folders. Then once you make links like here:

ls
guppy_aligner -> ont-guppy_xx.xx.xx_linux64/ont-guppy/bin/guppy_aligner
guppy_barcoder -> ont-guppy_xx.xx.xx_linux64/ont-guppy/bin/guppy_barcoder
guppy_basecaller -> ont-guppy_xx.xx.xx_linux64/ont-guppy/bin/guppy_basecaller

it should automatically mount the lib ...

It didn't work for me..

$ pwd
${MASTEROFPORESINSTALLDIR}/20201104-guppy-4.2.2/NanoPreprocess/bin
$ ls ont-guppy
bin  data  lib
$ ls -ls
total 128
  0 -rwxr-xr-x 1 easybuild easybuild  3220 Dec 10 17:39 bam2stats.py
128 -rwxr-xr-x 1 easybuild easybuild 21907 Dec 10 17:39 deeplexicon.py
  0 -rwxr-xr-x 1 easybuild easybuild  1117 Dec 10 17:39 extract_sequence_from_fastq.py
  0 -rwxr-xr-x 1 easybuild easybuild  1416 Dec 10 17:39 fast5_to_fastq.py
  0 -rwxr-xr-x 1 easybuild easybuild   642 Dec 10 17:39 fast5_type.py
  0 lrwxrwxrwx 1 easybuild easybuild    27 Dec 10 17:41 guppy_aligner -> ont-guppy/bin/guppy_aligner
  0 lrwxrwxrwx 1 easybuild easybuild    28 Dec 10 17:41 guppy_barcoder -> ont-guppy/bin/guppy_barcoder
  0 lrwxrwxrwx 1 easybuild easybuild    35 Dec 10 17:41 guppy_basecall_client -> ont-guppy/bin/guppy_basecall_client
  0 lrwxrwxrwx 1 easybuild easybuild    30 Dec 10 17:41 guppy_basecaller -> ont-guppy/bin/guppy_basecaller
  0 lrwxrwxrwx 1 easybuild easybuild    41 Dec 10 17:41 guppy_basecaller_supervisor -> ont-guppy/bin/guppy_basecaller_supervisor
  0 lrwxrwxrwx 1 easybuild easybuild    35 Dec 10 17:41 guppy_basecall_server -> ont-guppy/bin/guppy_basecall_server
  0 drwxr-xr-x 5 easybuild easybuild  4096 Dec 10 14:53 ont-guppy
  0 -rwxr-xr-x 1 easybuild easybuild   899 Dec 10 17:39 reorganize.sh
$ ldd guppy_barcoder
	linux-vdso.so.1 =>  (0x00007fffdb3b0000)
	libboost_thread.so.1.66.0 => not found
	libboost_chrono.so.1.66.0 => not found
	libboost_system.so.1.66.0 => not found
	libboost_date_time.so.1.66.0 => not found
	libboost_atomic.so.1.66.0 => not found
	libz.so.1 => /lib64/libz.so.1 (0x00007fec8af31000)
	libboost_filesystem.so.1.66.0 => not found
	libboost_iostreams.so.1.66.0 => not found
	libboost_log.so.1.66.0 => not found
	libboost_log_setup.so.1.66.0 => not found
	libboost_program_options.so.1.66.0 => not found
	libboost_regex.so.1.66.0 => not found
	libcuda.so.1 => /lib64/libcuda.so.1 (0x00007fec89ddb000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fec89bd7000)
	librt.so.1 => /lib64/librt.so.1 (0x00007fec899cf000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fec896cd000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fec893c6000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fec891b0000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fec88f94000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fec88bc7000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fec8b147000)
	libnvidia-fatbinaryloader.so.418.39 => /lib64/libnvidia-fatbinaryloader.so.418.39 (0x00007fec88979000)

what is inside ont-guppy folder?

L

$ ls ont-guppy
bin  data  lib

and inside lib?

so the structure I have is:

master_of_pores/NanoPreprocess/bin/ont-guppy_3.1.5_linux64/ont-guppy/lib

is the same you have for the newer version?

$ ls -ls ont-guppy/lib/
total 20352
   0 lrwxrwxrwx 1 easybuild easybuild      25 Sep 21 16:26 libboost_atomic.so -> libboost_atomic.so.1.66.0
 128 -rw-r--r-- 1 easybuild easybuild    9019 Oct 22  2019 libboost_atomic.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      25 Sep 21 16:26 libboost_chrono.so -> libboost_chrono.so.1.66.0
 128 -rw-r--r-- 1 easybuild easybuild   37603 Oct 22  2019 libboost_chrono.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      28 Sep 21 16:26 libboost_date_time.so -> libboost_date_time.so.1.66.0
 128 -rw-r--r-- 1 easybuild easybuild  108155 Oct 22  2019 libboost_date_time.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      29 Sep 21 16:26 libboost_filesystem.so -> libboost_filesystem.so.1.66.0
 128 -rw-r--r-- 1 easybuild easybuild  122153 Oct 22  2019 libboost_filesystem.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      28 Sep 21 16:26 libboost_iostreams.so -> libboost_iostreams.so.1.66.0
 256 -rw-r--r-- 1 easybuild easybuild  139806 Oct 22  2019 libboost_iostreams.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      28 Sep 21 16:26 libboost_log_setup.so -> libboost_log_setup.so.1.66.0
1152 -rw-r--r-- 1 easybuild easybuild 1141501 Oct 22  2019 libboost_log_setup.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      22 Sep 21 16:26 libboost_log.so -> libboost_log.so.1.66.0
1280 -rw-r--r-- 1 easybuild easybuild 1218520 Oct 22  2019 libboost_log.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      34 Sep 21 16:26 libboost_program_options.so -> libboost_program_options.so.1.66.0
 640 -rw-r--r-- 1 easybuild easybuild  554344 Oct 22  2019 libboost_program_options.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      24 Sep 21 16:26 libboost_regex.so -> libboost_regex.so.1.66.0
1280 -rw-r--r-- 1 easybuild easybuild 1272462 Oct 22  2019 libboost_regex.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      25 Sep 21 16:26 libboost_system.so -> libboost_system.so.1.66.0
 128 -rw-r--r-- 1 easybuild easybuild   18513 Oct 22  2019 libboost_system.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      25 Sep 21 16:26 libboost_thread.so -> libboost_thread.so.1.66.0
 256 -rw-r--r-- 1 easybuild easybuild  199538 Oct 22  2019 libboost_thread.so.1.66.0
   0 lrwxrwxrwx 1 easybuild easybuild      19 Sep 21 16:26 libcrypto.so -> libcrypto.so.1.0.1e
   0 lrwxrwxrwx 1 easybuild easybuild      19 Sep 21 16:26 libcrypto.so.10 -> libcrypto.so.1.0.1e
2048 -rw-r--r-- 1 easybuild easybuild 1971488 Aug 14  2019 libcrypto.so.1.0.1e
 768 -rw-r--r-- 1 easybuild easybuild  751872 Oct 22  2019 libcurl.so
   0 lrwxrwxrwx 1 easybuild easybuild      19 Sep 21 16:26 libhdf5_hl.so -> libhdf5_hl.so.8.0.0
 384 -rw-r--r-- 1 easybuild easybuild  335623 Oct 22  2019 libhdf5_hl.so.1.8.11
   0 lrwxrwxrwx 1 easybuild easybuild      20 Sep 21 16:26 libhdf5_hl.so.8.0.0 -> libhdf5_hl.so.1.8.11
   0 lrwxrwxrwx 1 easybuild easybuild      16 Sep 21 16:26 libhdf5.so -> libhdf5.so.8.0.0
9344 -rw-r--r-- 1 easybuild easybuild 9487318 Oct 22  2019 libhdf5.so.1.8.11
   0 lrwxrwxrwx 1 easybuild easybuild      17 Sep 21 16:26 libhdf5.so.8.0.0 -> libhdf5.so.1.8.11
   0 lrwxrwxrwx 1 easybuild easybuild      25 Sep 21 16:26 libont_minimap2.so.2 -> libont_minimap2.so.2.17.0
 256 -rw-r--r-- 1 easybuild easybuild  192368 Sep 21 16:12 libont_minimap2.so.2.17.0
   0 lrwxrwxrwx 1 easybuild easybuild      21 Sep 21 16:26 libpgm-5.1.so.0 -> libpgm-5.1.so.0.0.118
 384 -rw-r--r-- 1 easybuild easybuild  294848 Dec 22  2012 libpgm-5.1.so.0.0.118
   0 lrwxrwxrwx 1 easybuild easybuild      16 Sep 21 16:26 libssl.so -> libssl.so.1.0.1e
   0 lrwxrwxrwx 1 easybuild easybuild      16 Sep 21 16:26 libssl.so.10 -> libssl.so.1.0.1e
 512 -rw-r--r-- 1 easybuild easybuild  443416 Aug 14  2019 libssl.so.1.0.1e
   0 lrwxrwxrwx 1 easybuild easybuild      22 Sep 21 16:26 libvbz_hdf_plugin.so -> libvbz_hdf_plugin.so.1
   0 lrwxrwxrwx 1 easybuild easybuild      26 Sep 21 16:26 libvbz_hdf_plugin.so.1 -> libvbz_hdf_plugin.so.1.0.0
 640 -rwxr-xr-x 1 easybuild easybuild  591992 Sep 21 16:26 libvbz_hdf_plugin.so.1.0.0
   0 lrwxrwxrwx 1 easybuild easybuild      15 Sep 21 16:26 libzmq.so -> libzmq.so.3.0.0
   0 lrwxrwxrwx 1 easybuild easybuild      15 Sep 21 16:26 libzmq.so.3 -> libzmq.so.3.0.0
 384 -rw-r--r-- 1 easybuild easybuild  316688 Feb 21  2015 libzmq.so.3.0.0
   0 lrwxrwxrwx 1 easybuild easybuild      13 Dec 10 14:56 libz.so -> libz.so.1.2.3
   0 lrwxrwxrwx 1 easybuild easybuild      13 Sep 21 16:26 libz.so.1 -> libz.so.1.2.3
 128 -rw-r--r-- 1 easybuild easybuild   88600 Feb 22  2013 libz.so.1.2.3
   0 -rw-r--r-- 1 easybuild easybuild    1235 Sep 21 16:12 MINIMAP2_LICENSE

my structure looks like this
ls NanoPreprocess/bin/ont-guppy/lib/
and We have guppy 4.2.2

ok so this is the problem I think. Make another folder named ont-guppy_4.2.2_linux64 and put ont-guppy inside to recreate the structure we have. Then make the soft links and try again

L

It won't work either:

$ ls -ls
total 128
-rwxr-xr-x 1 easybuild easybuild  3220 Dec 10 17:39 bam2stats.py
-rwxr-xr-x 1 easybuild easybuild 21907 Dec 10 17:39 deeplexicon.py
-rwxr-xr-x 1 easybuild easybuild  1117 Dec 10 17:39 extract_sequence_from_fastq.py
-rwxr-xr-x 1 easybuild easybuild  1416 Dec 10 17:39 fast5_to_fastq.py
-rwxr-xr-x 1 easybuild easybuild   642 Dec 10 17:39 fast5_type.py
lrwxrwxrwx 1 easybuild easybuild    51 Dec 10 18:03 guppy_aligner -> ont-guppy_4.2.2_linux64/ont-guppy/bin/guppy_aligner
lrwxrwxrwx 1 easybuild easybuild    52 Dec 10 18:03 guppy_barcoder -> ont-guppy_4.2.2_linux64/ont-guppy/bin/guppy_barcoder
lrwxrwxrwx 1 easybuild easybuild    59 Dec 10 18:03 guppy_basecall_client -> ont-guppy_4.2.2_linux64/ont-guppy/bin/guppy_basecall_client
lrwxrwxrwx 1 easybuild easybuild    54 Dec 10 18:03 guppy_basecaller -> ont-guppy_4.2.2_linux64/ont-guppy/bin/guppy_basecaller
lrwxrwxrwx 1 easybuild easybuild    65 Dec 10 18:03 guppy_basecaller_supervisor -> ont-guppy_4.2.2_linux64/ont-guppy/bin/guppy_basecaller_supervisor
lrwxrwxrwx 1 easybuild easybuild    59 Dec 10 18:03 guppy_basecall_server -> ont-guppy_4.2.2_linux64/ont-guppy/bin/guppy_basecall_server
drwxrwxr-x 3 easybuild easybuild  4096 Dec 10 18:03 ont-guppy_4.2.2_linux64
-rwxr-xr-x 1 easybuild easybuild   899 Dec 10 17:39 reorganize.sh
 $ ldd guppy_barcoder
	linux-vdso.so.1 =>  (0x00007ffcda121000)
	libboost_thread.so.1.66.0 => not found
	libboost_chrono.so.1.66.0 => not found
	libboost_system.so.1.66.0 => not found
	libboost_date_time.so.1.66.0 => not found
	libboost_atomic.so.1.66.0 => not found
	libz.so.1 => /lib64/libz.so.1 (0x00007f6cc5f1c000)
	libboost_filesystem.so.1.66.0 => not found
	libboost_iostreams.so.1.66.0 => not found
	libboost_log.so.1.66.0 => not found
	libboost_log_setup.so.1.66.0 => not found
	libboost_program_options.so.1.66.0 => not found
	libboost_regex.so.1.66.0 => not found
	libcuda.so.1 => /lib64/libcuda.so.1 (0x00007f6cc4dc6000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f6cc4bc2000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f6cc49ba000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f6cc46b8000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f6cc43b1000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6cc419b000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6cc3f7f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f6cc3bb2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f6cc6132000)
	libnvidia-fatbinaryloader.so.418.39 => /lib64/libnvidia-fatbinaryloader.so.418.39 (0x00007f6cc3964000)

No but the missing libraries are in the container, so it is should be ok. Try to launch MoP. My ldd shows that these libraries are missing for me too.

Seems to be working with this procedure.

maybe can you clearly document on the installation procedure that you have to use the tarball of guppy and not the rpm one.
and copy the tarball to this exact location and not another location.

Hi, here the documentation about the installation. https://biocorecrg.github.io/master_of_pores/install.html
Feel free to suggest any modifications.

c) Guppy
Please note Guppy versions older than 3.1 (e.g. 3.0.3) only runs on CPUs. Newer versions (e.g. 3.1.5 and above) works on both CPUs and GPUs. The difference of speed between CPUs and GPU is more than 10 times.
Please do not use the rpm of Guppy, you have to use the tarball of Guppy.

cd master_of_pores/NanoPreprocess/bin
tar -zvxf ont-guppy_3.1.5_linux64.tar.gz #do not put the guppy tarball at another location.
ln -s ont-guppy_3.1.5_linux64/ont-guppy/bin/guppy_* .

Ok, I added a note. Thanks for this advice! f02a076