muschellij2/fslr

error while loading shared libraries: libnewimage.so (2)

Closed this issue · 7 comments

Dear all,

my issue is similar to #2.

# fslr works
> library("fslr")
Loading required package: oro.nifti
oro.nifti 0.7.2
Loading required package: neurobase
> volume.t2 <- readNIfTI("data/Neurohacking_data-0.0/BRAINIX/NIfTI/T2.nii.gz",
+                        reorient = FALSE)
> getOption("fsl.path")
NULL
> fslr::dim_(volume.t2)
[1]   3 512 512  22   1   1   1   1

# but when calling fslstats, which invokes libnewimage.so, I get an error:
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/Rtmp8FGRWx/file8e5f71acb2.nii.gz" -m

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
In addition: Warning messages:
1: In get.fsl() : Setting fsl.path to /usr/share/fsl/5.0
2: In get.fsloutput() : Can't find FSLOUTPUTTYPE, setting to NIFTI_GZ

# Also some trials to change the fsl.path option didn't solve this
> options(fsl.path="/usr/lib/fsl/5.0")
> fslstats(volume.t2)
FSLDIR='/usr/lib/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/Rtmp8FGRWx/file8e5745e6178.nii.gz" 

sh: 1: /usr/lib/fsl/5.0/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command

# Also other commands behave this way:
> flirt.help()
sh: 1: usr/local/fsl/bin/flirt: not found
Error in system(cmd, intern = TRUE) : error in running command

# and another trial to set the path
> options(fsl.path="/usr/share/fsl/5.0")
> fslstats(volume.t2)
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/Rtmp8FGRWx/file8e54fb3a214.nii.gz" 

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command

However from the terminal fslstats just works:

$ fslstats T2.nii.gz -m

My feeling is that it is something with the Path in ubuntu (I am on 16.04) and/or the file.path option in R and maybe the automatic add_bin in get.fsl() which is called by fslr::fslstats.

To .bashrc I added:

. /etc/fsl/5.0/fsl.sh

And in .profile I added to the PATH:

/usr/lib/fsl/5.0

I would be happy about any advice.

Thanks,
Malte

I think you need to symlink /etc/fsl/5.0/fsl.sh to ${FSLDIR}/etc/fslconf/fsl.sh, which would be /usr/lib/fsl/5.0/etc/fslconf/fsl.sh

Thanks for the quick response, but still not working.

$ dir /usr/lib/fsl/5.0/etc/fslconf/
fsl.sh

And in RStudion:

> options("fsl.path")
$fsl.path
NULL

> fslr::dim_(volume.t2)
[1]   3 512 512  22   1   1   1   1
> mean(volume.t2)
[1] 78.43897
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file7628540ab578.nii.gz" -m

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
In addition: Warning messages:
1: In get.fsl() : Setting fsl.path to /usr/share/fsl/5.0
2: In get.fsloutput() : Can't find FSLOUTPUTTYPE, setting to NIFTI_GZ
> options(fsl.path="/usr/local/fsl")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/local/fsl'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file76287a4d1403.nii.gz" -m

sh: 1: /usr/local/fsl/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path="/usr/share/fsl/5.0")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file76285b7dec7b.nii.gz" -m

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path="/usr/lib/fsl/5.0")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/lib/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file76286529e825.nii.gz" -m

sh: 1: /usr/lib/fsl/5.0/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path="/usr/lib/fsl/5.0/etc")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/lib/fsl/5.0/etc'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file7628b78a06d.nii.gz" -m

sh: 1: /usr/lib/fsl/5.0/etc/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path="/usr/lib/fsl/5.0/etc/fslconf")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/lib/fsl/5.0/etc/fslconf'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file76289c5e6a9.nii.gz" -m

sh: 1: /usr/lib/fsl/5.0/etc/fslconf/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path=". /etc/fsl/5.0")
> fslstats(volume.t2, opts = "-m")
FSLDIR='. /etc/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file762828478cd7.nii.gz" -m

sh: 1: .: Can't open /etc/fsl/5.0/bin/fslstats
character(0)
attr(,"status")
[1] 2
Warning message:
running command 'FSLDIR='. /etc/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file762828478cd7.nii.gz" -m' had status 2 
> options(fsl.path="/usr/share")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmplBI6at/file76287c44a732.nii.gz" -m

sh: 1: /usr/share/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
> flirt.help()
sh: 1: /usr/share/bin/flirt: not found
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path = NULL)
> options("fsl.path")
$fsl.path
NULL

> flirt.help()
/usr/share/fsl/5.0/bin/flirt: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
In addition: Warning message:
In get.fsl() : Setting fsl.path to /usr/share/fsl/5.0

Do you have another idea?

Can you put export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/fsl/5.0 in your .bashrc, restart R and rerun?

I did that, but seems like nothing changed:

> library("fslr")
Loading required package: oro.nifti
oro.nifti 0.7.2
Loading required package: neurobase
> volume.t2 <- readNIfTI("data/Neurohacking_data-0.0/BRAINIX/NIfTI/T2.nii.gz",
+                        reorient = FALSE)
> options("fsl.path")
$fsl.path
NULL

> fslr::dim_(volume.t2)
[1]   3 512 512  22   1   1   1   1
> mean(volume.t2)
[1] 78.43897
# ______________________________________________________________________________
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea377cb5b496.nii.gz" -m

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
In addition: Warning messages:
1: In get.fsl() : Setting fsl.path to /usr/share/fsl/5.0
2: In get.fsloutput() : Can't find FSLOUTPUTTYPE, setting to NIFTI_GZ
# ______________________________________________________________________________
> options(fsl.path="/usr/share/fsl/5.0")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea3736d1c17.nii.gz" -m

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
# ______________________________________________________________________________
> options(fsl.path="/usr/lib/fsl/5.0")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/lib/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea372cca5bd.nii.gz" -m

sh: 1: /usr/lib/fsl/5.0/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
# ______________________________________________________________________________
> options(fsl.path="/usr/lib/fsl/5.0/etc")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/lib/fsl/5.0/etc'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea3711ed8b02.nii.gz" -m

sh: 1: /usr/lib/fsl/5.0/etc/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
> options(fsl.path="/usr/lib/fsl/5.0/etc/fslconf")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/lib/fsl/5.0/etc/fslconf'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea372c1f49d9.nii.gz" -m

sh: 1: /usr/lib/fsl/5.0/etc/fslconf/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
# ______________________________________________________________________________
> options(fsl.path=". /etc/fsl/5.0")
> fslstats(volume.t2, opts = "-m")
FSLDIR='. /etc/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea37434db2b2.nii.gz" -m

sh: 1: .: Can't open /etc/fsl/5.0/bin/fslstats
character(0)
attr(,"status")
[1] 2
Warning message:
running command 'FSLDIR='. /etc/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea37434db2b2.nii.gz" -m' had status 2 
# ______________________________________________________________________________
> options(fsl.path="/usr/share")
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea3722fa05e4.nii.gz" -m

sh: 1: /usr/share/bin/fslstats: not found
Error in system(cmd, intern = TRUE) : error in running command
# ______________________________________________________________________________
> options(fsl.path = NULL)
> fslstats(volume.t2, opts = "-m")
FSLDIR='/usr/share/fsl/5.0'; PATH=${FSLDIR}/bin:${PATH};export PATH FSLDIR; sh "${FSLDIR}/etc/fslconf/fsl.sh"; FSLOUTPUTTYPE=NIFTI_GZ; export FSLOUTPUTTYPE; ${FSLDIR}/bin/fslstats  "/tmp/RtmpDMTN3e/filea372e04279.nii.gz" -m

/usr/share/fsl/5.0/bin/fslstats: error while loading shared libraries: libnewimage.so: cannot open shared object file: No such file or directory
Error in system(cmd, intern = TRUE) : error in running command
In addition: Warning message:
In get.fsl() : Setting fsl.path to /usr/share/fsl/5.0
´´´

I found a workaround via an advice by a colleague.
He states that in matlab exactly the same error occurs.
Usually he uses fsl command line arguments from matlab, but matlab doesn't find the environment variables. So he starts his calls always with the comment you also told me.

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/fsl/5.0

For RStudio this basically means that I start a each time from a terminal, where I export the env variable and start rstudio.
In short, this works for me:

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/fsl/5.0
$ rstudio

I think that it is not super elegant. Also I am not sure, if your proposed solution would work, if I wouldn`t use an RStudio-(packrat-)project. I don't want to mess with the .Rprofile or .Renvironment files for now, but maybe in the meantime you already have a recommendation how and where I can set this, to automate my workaround, since I assume similar problems might occur also to others?

Options:

  1. Put export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/fsl/5.0 in your .bash_profile (have you tried this too? If not, you shoudl) or local .bashrc (seems to have tried and no change).
  2. You may be able to set it in code:
ld = Sys.getenv("LD_LIBRARY_PATH")
Sys.setenv("LD_LIBRARY_PATH"=paste0(ld, ":/usr/lib/fsl/5.0"))

And try to rerun.
3. Use .Rprofile or .Renvironment files as that is sometimes the recommendation of R-core.

Perfect!

Put export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/fsl/5.0 in your .bash_profile (have you tried this too? If not, you shoudl) or local .bashrc (seems to have tried and no change).

I tried this now, but ... no effect. Yes, I tried .bashrc already before.

You may be able to set it in code:
ld = Sys.getenv("LD_LIBRARY_PATH")
Sys.setenv("LD_LIBRARY_PATH"=paste0(ld, ":/usr/lib/fsl/5.0"))

And try to rerun.

This works and for now it is more than ok.

Use .Rprofile or .Renvironment files as that is sometimes the recommendation of R-core.

I didn't try that, but I prefer the other options anyway,

Excellent support! Thanks a lot!