Linux 64 bit executable bug

I built the 64 bit 1.21 mothur version from source but it didn’t run properly. I then just installed the 64 bit linux executable on my CentOS 5.5 machine. It starts and runs summary.seqs fine. However when I run a trim.seqs command using an oligos file it picks the last barcode in the file and the term just keeps returning multiple lines of

barcode AAAATAAC is in your oligos file already. and I have to kill the process to get it to quit.

The exact same files work on my mac and a fn.trim.fasta file is produced, as well as a groups file. I checked the oligos file for the proper tabs and unix line feeds and everything looks OK.

Anyone else have this problem with the 64 bit binary?

Bob

I tried installing gcc 4.4.6 instead of gcc 4.6.0, to see if that made a difference in getting mothur to work on my Centos machine. I also recompiled openmpi with gcc446 and loaded it up using a modulefile.

I then compiled mothur 1.21.1 using 64 bit and mpi=yes. The program compiles, but when I run the trim.seqs command I get the same error as above. Perhaps it’s something else on my machine interfering with parsing of files? I’ve got ncurses, ncurses-devel, readline and readline-devel installed.

Also when I take the trim.seqs result files (fn.trim.fasta and fn.groups) from my Mac and transfer it to the Linux box and run split.groups I get the repeating error

Error in reading your fastafile, at position -1. Blank name.

Does this provide any clues?

-drats, at this point it looks completely broken- summary.seqs is also not working

Thanks, Bob

Note: I’m trying to install the program on my Linux box because it has more memory and other users in the lab want to run the program from a remote term.

I’ve now tried compiling with and without MPI enabled and with and without readline. With MPI disabled summary.seqs works, but trim.seqs still fails. Having readline yes or no makes no difference.

I’ve tried back to version 1.20.1

Is there some sort of debug trace that I can run?

I assume other people have got this to work?

We tried running mothur on a couple of different linux boxes, one running Debian Lenny (Debian 5) and one running Debian Squeeze (Debian 6).

mothur comes back with the same trim.seqs error on the Debian Lenny box when mothur 1.16 or mothur 1.21.1 is run. However the 1.20.1 and 1.21.1 binary works on Debian squeeze.

Does anyone have a clue as to what updated underlying libraries might be needed to get mothur to run?

If mothur runs on a Centos 5.5 box, was anything updated in order to get the binary to run trim.seqs etc.?

Bob

The Centos version of mothur’s executable is built on Centos 5.5 using g++ 4.1.2, for the 32 bit version and g++44 4.4.0 for the 64 bit version. The only special library used is readline, but that doesn’t seem to be the issue for you. I did a fresh build on my Debian 6 box using g++ 4.3.2, which is bare bones with only the OS and g++ installed on it, and was able to run trim.seqs and summary.seqs on the Costello files without errors. I am not sure what you mean by “not working”. Have you tried running make clean and then make? If you want to send your input files and logfile to mothur.bugs@gmail.com, I can try to troubleshoot it for you?

Yes I tried make clean and also compiling from a new source directory. Do you think a change from g++4.4.0 to g++4.4.6 would cause the problem? I’m wondering whether the version of libc or glibc makes a difference. My Centos machine uses gnu libc 2.5

By not working I mean that the program keeps returning

barcode AAAATAAC is in your oligos file already.
barcode AAAATAAC is in your oligos file already.
barcode AAAATAAC is in your oligos file already.
barcode AAAATAAC is in your oligos file already.

over and over again in the term window (the output doesn’t stop, I have to kill the process). With split.groups it returns

Error in reading your fastafile, at position -1. Blank name.
Error in reading your fastafile, at position -1. Blank name.
Error in reading your fastafile, at position -1. Blank name.

over and over. The input files work on the Mac installation as well as on Debian 6.

I’ll send the files. In the meantime I’ll try downgrading the version of gcc used to compile mothur. But then again, why would the binary distribution not work?

Bob

I found that there was a link to newer libstdc libraries installed by gcc 4.6.0 that was not overwritten by the gcc-4.4.6 modulefiles that I activated on my system.

Clearing this up and then just activating the gcc-4.4.6 libraries allowed me to compile and run mothur 1.21.1 successfully on my system, and the trim.seqs command works.

Bob

Dear Bob!

I observed the same phenomenon. I have Mothur 1.21 (and 1.17) installed on a Debian 6 system. Both versions are working without the described problem. However, the default gcc version (and all related libraries/programs like g++, libstdc,…) is 4.4. This is because the latest Debian release is always about one year behind the latest Ubuntu release. And as you observed correctly, with gcc 4.4 everything is fine.

But when I want to use a recent Ubuntu version, the default gcc is 4.6 and Mothur will not work.

But it seems as if you solved the problem by going back to a gcc-4.4 and adpting all related libraries (under CentOS). Can you describe in more detail how you did this? I think this will be a valuable source for other users who are working with recent versions of Linux and will have similar problems with Mothur.

By the way: Can we expect that Mothur will deal with this problem in one of the next releases?

Markus

Markus:
Yes gcc-4.6.0 will not work.

I got around this by installing the modules program (http://modules.sourceforge.net). I then installed gcc-4.4.6 in a separate directory (in my case /opt/gcc466). Installing gcc can be tricky, make sure you have the dependencies listed in the gnu gcc installation instructions, and build it in a different directory than the gcc source code directory.

Once it’s installed you create a modulefile that points to the gcc binary, and most importantly the libraries.

You then load this module with something like $ module load gcc/gcc-4.4.6 (I also created modulefiles for the native version of gcc on my machine (4.1.2) and for gcc-4.6.0)

The modulefile prepends the PATH, and the libraries are found. Then you start mothur.

Send me an e-mail at robert.forster at agr dot gc dot ca and I’ll send you my modulefile–you should be able to work it out from there.

Bob

Hi Bob,
Trying to solve the same problem.
I tried installing modules but that didn’t work out and seems somewhat complicated.
Instead I tried changing the symbolic link of gcc in my /usr/bin folder to gcc-4.4 and recompiled mothur from source code, but that did work.

Any simpler solution to the problem?

I would run the win version, except that running trim.flows crashes mothur on my win7.

Thanks again,
Roey

Hi everybody!

I have a similar problem, I have been used mothur on my ubuntu, but recently I updated to 11.10 distribution and my mothur didn’t work. when I tried to use unique.seqs(fasta=file) appears: “Error in reading your fastafile, at position -1. Blank name”. I checked my fasta file and it doesn’t have any problem.

I remove the mothur folder and I tried to reinstall it , and I am having the same problem any time I tried something new. I think is something about the C compiler in the new ubuntu, but I can´t figure how to solve it since I am a Linux newbie.

This is my makefile
################################################################################################################################################
USEMPI ?= no
64BIT_VERSION ?= yes
USEREADLINE ?= yes
CYGWIN_BUILD ?= no
USECOMPRESSION ?= no
MOTHUR_FILES="“Enter_your_default_path_here”"
RELEASE_DATE = "“10/18/2011"”
VERSION = "“1.22.0"”

Optimize to level 3:

CXXFLAGS += -O3

ifeq ($(strip $(64BIT_VERSION)),yes)
#if you are using centos uncomment the following lines
#CXX = g++44

#if you are a mac user use the following line
#TARGET_ARCH += -arch x86_64

#if you using cygwin to build Windows the following line
#CXX = x86_64-w64-mingw32-g++
#CC = x86_64-w64-mingw32-g++
#TARGET_ARCH += -m64

#if you are a linux user use the following line
CXXFLAGS += -mtune=native -march=native -m64

CXXFLAGS += -DBIT_VERSION
endif


CXXFLAGS += -DRELEASE_DATE=${RELEASE_DATE} -DVERSION=${VERSION}

ifeq ($(strip $(MOTHUR_FILES)),"“Enter_your_default_path_here”")
else
CXXFLAGS += -DMOTHUR_FILES=${MOTHUR_FILES}
endif

ifeq ($(strip $(CYGWIN_BUILD)),yes)
CXXFLAGS += -mno-cygwin
LDFLAGS += -mno-cygwin
endif

if you do not want to use the readline library, set this to no.

make sure you have the library installed


ifeq ($(strip $(USEREADLINE)),yes) CXXFLAGS += -DUSE_READLINE LIBS = \ -lreadline\ -lncurses endif
ifeq ($(strip $(USEMPI)),yes) CXX = mpic++ CXXFLAGS += -DUSE_MPI endif

if you want to enable reading and writing of compressed files, set to yes.

The default is no. this may only work on unix-like systems, not for windows.


ifeq ($(strip $(USECOMPRESSION)),yes) CXXFLAGS += -DUSE_COMPRESSION endif

INCLUDE directories for mothur

CXXFLAGS += -I.

Get the list of all .cpp files, rename to .o files

OBJECTS=$(patsubst %.cpp,%.o,$(wildcard *.cpp))
OBJECTS+=$(patsubst %.c,%.o,$(wildcard *.c))

mothur : $(OBJECTS) uchime
$(CXX) $(LDFLAGS) $(TARGET_ARCH) -o $@ $(OBJECTS) $(LIBS)

strip mothur

uchime:
cd uchime_src && ./mk && mv uchime … && cd …

install : mothur

%.o : %.c %.h
$(COMPILE.c) $(OUTPUT_OPTION) $<
%.o : %.cpp %.h
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
%.o : %.cpp %.hpp
$(COMPILE.cpp) $(OUTPUT_OPTION) $<


clean : @rm -f $(OBJECTS) @rm -f uchime ################################################################################################################################################ I have this programs installed on my computer

g++ version 4:4.6.1-2ubuntu5
g+±4.6
g+±4.6 multilib
g+± multilib
gcc-4.6-doc
gcc-doc
libstdc++6
libstdc++6-4.6-dev
cpp version 4:4.6.1-2ubuntu5
cpp-4.6
######################################################
I hope you could help me, I will be very happy in use again my dear mothur program.

Fabiola

Same problem here with mothur v1.22 since I updated to Ubuntu 11.10. Everything worked fine with 11.04 after compiling from source code. I still had mothur v1.21.1 which I compiled under Ubuntu 11.04 installed. Tried it with the same error. Is installing another gcc version the solution?

Fabian

Tried compiling optimization options -O2 and -O1 (Ubuntu 11.10, mothur 1.22.0). No success. Same error as described by Fabiola

I installed g++ 4.6.0 and was able to reproduce and resolve the issue in mothur’s source code. I have uploaded version 1.22.1 to the wiki. Want to give it a try and see how it works for you?

That was quick, will try tonight thank you!

Works, Thank you!

Got a couple of errormessages while compiling though
e.g.:
trimflowscommand.h:130:2: warning: ‘typedef’ was ignored in this declaration [enabled by default]

Hope it does not matter.

Thanks again

Glad it’s working for you, :slight_smile:

Thanks westcott! I have solved the problem and mothur works perfectly.