Open jmelero611 opened 5 years ago
Hi Juan,
This is a C error. What version of GCC are you using? IRFinder requires C++ 11 features which are NOT included for GCC older than 4.9.0. Even your GCC was newer than that, some Linux distros such as RedHat miss some C libraries by default. First make sure your GCC is >=4.9.0 and then the workaround is to re-compile the IRFinder core from source at src/irfinder
against your own system environment. And Finally replace the irfinder under bin/util with your newly compiled one.
If your GCC was compatible and you still encountered errors during compilation, that indicates you're missing some C libraries. If you were the system admin, install those missing libraries should make things roll. Otherwise you have to enquire your system admin for the required libraries.
Let me know. Thanks.
P.S. Did you mention bam.gz
because you saw gzip
in the implementation? That's not the case. Actually BAM file itself is a zipped format, it contains multiple gzipped blocks inside. That's why here we need something like gzip
to read it.
Best, Dadi
Hi Dadi,
thank you for your answer. I asked the system admins to implement your indications. When they tried to compile the program, this error appeared:
[manager@easybuild 1.2.3]$ ls bin LICENSE README.md REF src [manager@easybuild 1.2.3]$ gcc --version gcc (GCC) 5.4.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[manager@easybuild 1.2.3]$ cd src/irfinder/ [manager@easybuild irfinder]$ make clean rm -f *.o irfinder Depend.list [manager@easybuild irfinder]$ make Makefile:32: Depend.list: No such file or directory /bin/rm -f ./Depend.list g++ -pipe -std=c++0x -O3 -Wall -Wextra -fopenmp -D'COMPILATION_TIME_PLACE="Wed Jun 5 11:34:30 CEST 2019 easybuild.prib.upf.edu:/soft/EB_repo/bio/sequence/programs/noarch/IRFinder/1.2.3/src/irfinder"' -MM ReadBlockProcessor.cpp FragmentBlocks.cpp IRFinder.cpp crc32.cpp ReadBlockProcessor_OutputBAM.cpp CoverageBlock.cpp ReadBlockProcessor_CoverageBlocks.cpp BAM2blocks.cpp >> Depend.list g++ -c -pipe -std=c++0x -O3 -Wall -Wextra -fopenmp -D'COMPILATION_TIME_PLACE="Wed Jun 5 11:34:31 CEST 2019 easybuild.prib.upf.edu:/soft/EB_repo/bio/sequence/programs/noarch/IRFinder/1.2.3/src/irfinder"' FragmentBlocks.cpp g++ -c -pipe -std=c++0x -O3 -Wall -Wextra -fopenmp -D'COMPILATION_TIME_PLACE="Wed Jun 5 11:34:31 CEST 2019 easybuild.prib.upf.edu:/soft/EB_repo/bio/sequence/programs/noarch/IRFinder/1.2.3/src/irfinder"' ReadBlockProcessor.cpp g++ -c -pipe -std=c++0x -O3 -Wall -Wextra -fopenmp -D'COMPILATION_TIME_PLACE="Wed Jun 5 11:34:31 CEST 2019 easybuild.prib.upf.edu:/soft/EB_repo/bio/sequence/programs/noarch/IRFinder/1.2.3/src/irfinder"' CoverageBlock.cpp g++ -c -pipe -std=c++0x -O3 -Wall -Wextra -fopenmp -D'COMPILATION_TIME_PLACE="Wed Jun 5 11:34:31 CEST 2019 easybuild.prib.upf.edu:/soft/EB_repo/bio/sequence/programs/noarch/IRFinder/1.2.3/src/irfinder"' ReadBlockProcessor_CoverageBlocks.cpp ReadBlockProcessor_CoverageBlocks.cpp: In member function ‘double CoverageBlocks::percentileFromHist(const std::map<unsigned int, unsigned int>&, uint) const’: ReadBlockProcessor_CoverageBlocks.cpp:234:9: error: ‘NAN’ was not declared in this scope return NAN; ^ make: *** [ReadBlockProcessor_CoverageBlocks.o] Error 1 [manager@easybuild irfinder]$
It appears in version 1.2.3. (the one we used) and with the new version 1.2.5. There is no information about how to compile the program.
Apart from that error, we tried to load GCC-5.4.0 together with IRFinder, so C libraries should be loaded as well. Curiously, in some cases the program runs perfectly and in other cases the error I wrote in the first post appears (I send the cases to a cluster).
Is there anything wrong in the compilation process? Should there be the error with GCC-5.4.0 or is it anything else?
Thank you for your support.
Best, Juan Luis
Hi Juan,
Sorry I just saw this feedback.
As you mentioned you can finish IRFinder successfully using GCC-5.4.0
but some failed. This makes me re-think if the failure is due to C error or a simple I/O error makes C stop executing. Things to check:
1) Were successful ones and failed ones supposed to be saved to the exactly same directory?
2) Do you have sufficient permission level to write files to the target folders of those failed ones?
3) Are you limited by memory usage or disk space? In terms of sending to a cluster, your admin usually pre-sets the maximum computational resources you can use for each job. Make sure both your required allocation and the maximum limitation meet the need for your jobs.
I suggest you to check the above first. If no luck, keep reading the following:
The compiling error your admin encountered suggests your compiler doesn't understand NAN
. Your compiler requires the value of NAN
to be pre-defined somewhere in the source code. Actually, this is a strong indiction that the compiler you're using doesn't fully support C++ 11 features. This is because NAN
definition is one of those new features in C++11.
As I also mentioned in the first thread, the version number of GCC alone (e.g. 5.4.0) doesn't guarantee it has ALL the 11 libraries associated. In fact, it's more complicated than just saying. There are quite a bit incompatibilities between glibc 2.23 and its previous version. And matching glibc versions with GCC versions correctly can be a nightmare util glibc >=2.23 and GCC>=6.
Long things short, it worths to try if you can get definition of NAN
by putting include <cmath>
on the top. If so, put include <cmath>
in includedefine.h
of IRFinder source code and re-compile. I'm not sure if it works.
Let me know.
Best, Dadi
Hi,
I am running IRfinder with the following command:
IRFinder -m BAM -r REF/Human-hg38-v27 -d output/SRR1293044_irfinder PATH_TO_BAM/SRR1293044Aligned.out.bam
I receive the following error message:
It is like, although I put the bam file, it is expected to use bam.gz
Reference process have been completed with some warnings:
However, some of the IR quantification processes have been completed successfully (I ran several in parallel), but most of the processes have this error.
Thank you very much for your help!
Best regards, Juan Luis