roettig / NRPSpredictor2

NRPSpredictor2 is a program to predict the specificity of bacterial and fungal adenylation domains.
6 stars 6 forks source link

execution of examples (and real fasta files) fails in Ubuntu trusty (java 1.7) #1

Open pcm32 opened 9 years ago

pcm32 commented 9 years ago

Hi there,

Running

sh runNRPSpredictor2.sh -i examples/example.fa -s 0 -r report

on ubuntu trusty (Linux 5f5fbd7f17c4 3.14.1-tinycore64 #1 SMP Mon Jun 9 16:21:23 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux) fails with the following exception:

## extracting signatures from fasta file
org.dom4j.DocumentException: Error on line 1 of document  : Premature end of file. Nested exception: Premature end of file.
    at org.dom4j.io.SAXReader.read(SAXReader.java:482)
    at org.dom4j.io.SAXReader.read(SAXReader.java:343)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfamParser.parse(HMMPfamParser.java:43)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfamParser.<init>(HMMPfamParser.java:27)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfam.getResults(HMMPfam.java:81)
    at org.roettig.NRPSpredictor2.NRPSpredictor2.extractSigs(NRPSpredictor2.java:122)
    at org.roettig.NRPSpredictor2.NRPSpredictor2.main(NRPSpredictor2.java:71)
Nested exception: 
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1019)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
    at org.dom4j.io.SAXReader.read(SAXReader.java:465)
    at org.dom4j.io.SAXReader.read(SAXReader.java:343)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfamParser.parse(HMMPfamParser.java:43)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfamParser.<init>(HMMPfamParser.java:27)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfam.getResults(HMMPfam.java:81)
    at org.roettig.NRPSpredictor2.NRPSpredictor2.extractSigs(NRPSpredictor2.java:122)
    at org.roettig.NRPSpredictor2.NRPSpredictor2.main(NRPSpredictor2.java:71)
Nested exception: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1019)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
    at org.dom4j.io.SAXReader.read(SAXReader.java:465)
    at org.dom4j.io.SAXReader.read(SAXReader.java:343)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfamParser.parse(HMMPfamParser.java:43)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfamParser.<init>(HMMPfamParser.java:27)
    at org.roettig.NRPSpredictor2.hmmer.HMMPfam.getResults(HMMPfam.java:81)
    at org.roettig.NRPSpredictor2.NRPSpredictor2.extractSigs(NRPSpredictor2.java:122)
    at org.roettig.NRPSpredictor2.NRPSpredictor2.main(NRPSpredictor2.java:71)

On Mac OS X (java 7 as well) it works fine. Ubuntu's java version is:

java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

I tried the executable bundled on its own (hmmpfam), however, it doesn't execute (even after chmod u+x). Doing the same exercise on the mac using hmmpfam.macos64 works (the file can be executed).

hmmpfam seems to be part of a very old HMMER distribution (2.0).

Running ld shows the following:

ld hmmpfam 
ld: i386 architecture of input file `hmmpfam' is incompatible with i386:x86-64 output

So installing libc6-i386 sorted this out:

apt-get install libc6-i386

I should mention that I'm using Ubuntu on docker, which is probably a minimal install. Yet, it should be mentioned in your readme that libc6-i386 is required, as the error doesn't make this explicit.

andplaia commented 6 years ago

Thank you! been trying to fix this for hours and who would know it was so simple

kblin commented 6 years ago

Alternatively, you can just grab a 64bit hmmpfam binary and replace the binary shipped with NRPSPredictor.