- 1 COMPILE PROBLEMS
- 2 RUNTIME ERRORS
- 3 GENERAL QUESTIONS
error: zlib.h: No such file or directory
make -C ../../libStatGen --no-print-directory opt gcc -O4 -pipe -Wall -I../include -I. -D__ZLIB_AVAILABLE__ -D_FILE_OFFSET_BITS=64 -D__STDC_LIMIT_MACROS -o obj/bgzf.o -c bgzf.c In file included from bgzf.c:37: bgzf.h:30:18: error: zlib.h: No such file or directory bgzf.c: In function âopen_writeâ: bgzf.c:187: error: âZ_DEFAULT_COMPRESSIONâ undeclared (first use in this function) bgzf.c:187: error: (Each undeclared identifier is reported only once bgzf.c:187: error: for each function it appears in.) bgzf.c: In function âdeflate_blockâ: bgzf.c:298: error: âz_streamâ undeclared (first use in this function) bgzf.c:298: error: expected â;â before âzsâ bgzf.c:299: error: âzsâ undeclared (first use in this function) bgzf.c:306: warning: implicit declaration of function âdeflateInit2â bgzf.c:306: error: âZ_DEFLATEDâ undeclared (first use in this function)
Based on the compile error, it appears that the development verison of zlib may not be installed. Please go to http://genome.sph.umich.edu/wiki/Zlib for more information.
User can compile the library without ZLIB, but then the code will not be able to read compressed files (typically BAM files are compressed). If no compressed files is needed, then user can compile using: make ZLIB_AVAIL=0.
error: undefined reference to `_gfortran_pow_r8_i4'
../../libStatGen/libStatGen.a(mvt.o): In function `mvtdns_': mvt.f:(.text+0x20c9): undefined reference to `_gfortran_pow_r8_i4' ../../libStatGen/libStatGen.a(mvt.o): In function `mvchnv_': mvt.f:(.text+0x5848): undefined reference to `_gfortran_pow_r8_i4' collect2: ld returned 1 exit status make: *** [../bin/raremetal] Error 1
It looks like in some versions of compilers, the Fortran library (required by RareMetal) isn't automatically included. These Makefile changes fixed it on the machine where I was able to recreate your compile issue:
1) libStatGen/Makefiles/Makefile.src, edit the settings for OPT_BUILD, DEBUG_BUILD, and PROFILE_BUILD to be (the new part is in bold):
OPT_BUILD = $(CXX) $(COMPFLAGS) $(USER_LINK_OPTIONS) -o $(PROG_OPT) $(OBJECTS_OPT) $(USER_LIBS) $(REQ_LIBS_OPT) -lm $(ZLIB_LIB) $(OTHER_LIBS) DEBUG_BUILD = $(CXX) $(COMPFLAGS) $(USER_LINK_OPTIONS) -o $(PROG_DEBUG) $(OBJECTS_DEBUG) $(USER_LIBS) $(REQ_LIBS_DEBUG) -lm $(ZLIB_LIB) $(OTHER_LIBS) PROFILE_BUILD = $(CXX) $(COMPFLAGS) $(USER_LINK_OPTIONS) -o $(PROG_PROFILE) $(OBJECTS_PROFILE) $(USER_LIBS) $(REQ_LIBS_PROFILE) -lm $(ZLIB_LIB) $(OTHER_LIBS)
2) raremetal/src/Makefile, add: (I added it on the line right after USER_LIBS is defined.)
OTHER_LIBS = -lgfortran
NOTE: this has been fixed by identifying a bug in makefile. If you still see the same error message, please try the above solutions.
gcc -O4 -pipe -Wall -I../include -I. -D__ZLIB_AVAILABLE__ -D_FILE_OFFSET_BITS=64 -D__STDC_LIMIT_MACROS -o obj/bgzf.o -c bgzf.c /broad/software/free/Linux/redhat_5_x86_64/pkgs/gcc_4.4.4/libexec/gcc/x86_64-unknown-linux-gnu/4.4.4/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory make: *** [obj/bgzf.o] Error 1 make: *** [samtools] Error 2 make: *** [../../libStatGen/libStatGen. a] Error 2
If you are using version 0.4.4 and under, please go to our wiki page to download the newest version [[[RAREMETAL]]]. There was a bug in makefile in older versions of RAREMETAL that could cause this error and it has been fixed. For a quick fix, please go to /raremetal/src and open "Makefile". Then comment out the lines at the bottom of raremetal/src/Makefile that set LD_LIBRARY_PATH. Try compiling and see if it works.
error: BGZF EOF marker is missing in xxx.vcf.gz
Loading input files... Loading DAT files ... done. Loading PED files ... done.
BGZF EOF marker is missing in xxx.vcf.gz Exiting, exception thrown: FAIL_IO: Failed to open xxx.vcf.gz
This problem has been solved. If you are using version 0.4.5 or older, please download the newest version [[[RAREMETALWORKER]]], and then in your command line, add --noeof. If you still see the error message, then you need to check if your bgzip has been updated to current version.
recommended strategies for debugging
The ideal would be to send us your data so that we can debug. But if data sharing is not an option, you can use the following strategy to generate a backtrace and send it to us, without sharing the raw data.
How to Generate a backtrace of the error: This will allow us to see where in the code it hit a segmentation fault. This method isn't perfect and may still leave us with further questions for you before we can come to an answer. 1) Compile for debug: make debug 2) Enable core dumps in the window where he will run: ulimit -c unlimited 3) Run bin/debug/raremetal (If this does not coredump, then set OPTFLAG_OPT = -g -O4 in src/Makefile and try rerunning the bin/raremetal version - this will run optimized, but with the debug symbols) 4) Run: gdb bin/debug/raremetal core (specifying the bath to the raremetal executable that was run & the path to the generated core file) 5) In the gdb window, type: bt. 6) Save the backtrace results and send it to us. That will generate the backtrace which will help us see where the segmentation fault occurred.
A: RAREMETALWORKER is the program that generates summary statistics for individual studies to share. It generates both single variant association results and covariance matrices of score statistics together with QC statistics. It enables analysis of familial data, population data, unrelated individuals and samples with cryptic relatedness and population stratification. RAREMETAL takes the summary statistics generated by RAREMETALWORKER to perform both single variant and gene-level association analysis.