mhammell-laboratory / TEpeaks

Package for including repetitive regions in peak calling from ChIP-seq datasets
GNU General Public License v3.0
7 stars 4 forks source link

Compile TEpeaks #4

Open ryao-mdanderson opened 2 years ago

ryao-mdanderson commented 2 years ago

Hello authors @olivertam @yingjin07

I followed the READme instruction and tried to compile TEpeaks on Linux systems, I tried gcc version 4.8, 7.1 and 9.3, they all hit the similar errors:

$ make -f Makefile.LINUX ...... /risapps/rhel7/gcc/7.1.0/include/c++/7.1.0/bits/stl_construct.h:98: undefined reference to Interval::~Interval()' /tmp/ccVw2Eh4.o: In functionCandidate_Peaks::build_tree(std::map<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::vector<std::pair<int, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<int, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > >, std::less<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator > const, std::vector<std::pair<int, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > > > > >)': /risapps/rhel7/tepeaks/0.1/src/TEToolkit/Candidate_Peaks.cpp:300: undefined reference to Interval::~Interval()' /tmp/ccVw2Eh4.o: In functionvoid std::_Destroy(Interval*)': /risapps/rhel7/gcc/7.1.0/include/c++/7.1.0/bits/stl_construct.h:98: undefined reference to Interval::~Interval()' /tmp/ccVw2Eh4.o:/risapps/rhel7/gcc/7.1.0/include/c++/7.1.0/bits/stl_construct.h:98: more undefined references toInterval::~Interval()' follow collect2: error: ld returned 1 exit status make: *** [src/TEToolkit/Candidate_Peaks.o] Error 1

My guess is Inteval() function needs to be implemented?

I see an executable in git clone repository. Is this the compiled execuatable that ready for use on linux? -rwxr-xr-x 1 ris_hpc_apps rists 9973384 Dec 13 15:30 TEpeaks

$ ./TEpeaks -h Error: invalid command -h TEpeaks 0.1

Usage: TEpeaks [arguments] ..

Where can be one of:

narrow         Call puntate peaks 

Running TEpeaks without arguments prints usage information for

Please advise and thank you for your help. Regards, Rong

olivertam commented 2 years ago

Hi Rong,

Yes, the executable should be ready for use on Linux. We will try to take a look at the source code to see if the compile error is a quick fix.

Thanks

ryao-mdanderson commented 2 years ago

@olivertam Thank you for your quick response. This helps!

Super1991 commented 2 years ago

I have exactly the same problem as @ryao-mdanderson. I was just wondering what I need to do to resolve this issue; I am trying to run TEpeaks on the HPC. Thanks a lot!!

olivertam commented 2 years ago

Hi,

We have not been able to delve into the source code yet, but the executable should be usable on the HPC if they are Linux-based. If not, let us know and we will try to take a look.

Thanks.

Super1991 commented 2 years ago

I tried to run ./TEpeaks, here is the error: ./TEpeaks: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./TEpeaks). Do you have any insights into why it might be the case? Thanks a lot!

olivertam commented 2 years ago

Hi,

Could you tell me what version of gcc is on your HPC? It looks like the library is available with gcc versions 4.9 or newer.

If necessary, you might need to find/install a newer version of gcc (4.9 is already pretty old) in order to run TEpeaks. Without knowing what your HPC setup is, I might recommend contacting your IT/HPC support to see if they have a newer gcc for your environment. Alternatively, you can install environment managers like Anaconda/Miniconda, which may come with newer versions of gcc, and run TEpeaks in that environment.

See the following links for more discussion of this error: Stack Overflow Another github repo encountering this error Unix Stack Exchange Ask Ubuntu

Thanks.

Super1991 commented 2 years ago

Hi, I have tried gcc/5.3.1, 6.3.1, 7.3.1 and 8.3.1, all with the same error message. I will try Anaconda /Miniconda solution too! Thanks for your suggestion! We are looking forward to the TEpeaks new versions with broad peaks and differential peak analysis with DEseq2. It will be super helpful for people studying TE in development and diseases!

olivertam commented 2 years ago

Hi,

One thing to check is that you are calling the latest gcc libraries, which you might find in your LD_LIBRARY_PATH variable (e.g. /path/to/latest_gcc/lib/). It could be that you're calling newer gcc, but the older (system) libraries are being used instead.

Unfortunately, TEpeaks development is currently on hold, but we hope that we could restart it in the near future.

Thank you for your interest in the software.

aowenson-imm commented 8 months ago

I also have this exact issue - undefined reference to Interval::~Interval() - and on 2 completely different systems so not convinced this is a GCC issue:

olivertam commented 8 months ago

Hi,

Thank you for your interest in the software. Does the precompiled TEpeaks binary work? We have gotten it to run on Rocky Linux version 8 with GCC 9.3.0 library, and RHEL Enterprise 7.9 with GCC 10.2.0, though we failed to compile in both system setup. If you could not get the binary working, it might be worth having a conda environment to see if you can get it to run. Unfortunately, we don't have anyone on the TEpeaks project, so it will take a while for any updates to be made.

Thanks.

aowenson-imm commented 8 months ago

I did not think to look for binary, the README instructions said to compile. The binary works.