java.sql.SQLSyntaxErrorException when running NSAF

53 views
Skip to first unread message

Jimmy

unread,
Jul 13, 2016, 5:37:12 PM7/13/16
to Abacus Support
Damian,

Can you take a quick look at a dataset for a researcher that I work with?  Abacus runs fine if "asNSAF=false" but once "asNSAF=true", the program errors out as shown below.  I'm guessing there's some issue with their sequence database that's causing this behavior.  You can grab the relevant files here:  http://proteomicsresource.washington.edu/dist/abacushelp.zip

Thanks!


Creating protidSummary table
 Collecting list of all proteins identified in interact-COMBINED.prot.xml
 Counting protein frequencies across independent files
 Getting protein frequencies   [ | 3556 Working... ]
 Recording best ProteinProphet scores for each protein
 Collecting protein probabilities   [ | 3556 Working... ]
 Creating selection heuristics table (This could take a while)...  [ \ 1687 Working... ]
 Picking representative protids
 Loading protidSummary table...  [ \ 947 Working... ]
Creating results
 Appending protein lengths

Creating peptide usage table
 Peptide usage index (X2016_JUNE_20_COPEPOD_01)...   [ - 4178 Working... ]]
 Indexing pepUsage_ table
 Updating adjusted spectral counts

Retrieving data from individual experiments
 Adding data from X2016_JUNE_20_COPEPOD_01

Creating NSAF values table (protein-centric)
 NSAF_FACTOR = 10^4 = 10000.0
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: INFINITY
       at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
       at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
       at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
       at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
       at abacus.hyperSQLObject.getNSAF_values_prot(hyperSQLObject.java:2961)
       at abacus.abacus.main(abacus.java:221)
       at mainFunction.mainFunction.main(mainFunction.java:44)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: INFINITY
       at org.hsqldb.error.Error.error(Unknown Source)
       at org.hsqldb.error.Error.error(Unknown Source)
       at org.hsqldb.ExpressionColumn.checkColumnsResolved(Unknown Source)
       at org.hsqldb.ParserDML.resolveUpdateExpressions(Unknown Source)
       at org.hsqldb.ParserDML.compileUpdateStatement(Unknown Source)
       at org.hsqldb.ParserCommand.compilePart(Unknown Source)
       at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
       at org.hsqldb.Session.executeDirectStatement(Unknown Source)
       at org.hsqldb.Session.execute(Unknown Source)
       ... 5 more

                      

GATTACA

unread,
Jul 14, 2016, 7:58:53 AM7/14/16
to Abacus Support
Hi Jimmy

I'll have to take a look at this in detail but I can tell you that the problem is one of the proteins being found in the protXML files is not being found in the FASTA file. 
The error occurs because to compute NSAF you need to divide by the length of the protein, the error message is happening because the protein's length is zero (the default returned for a missing entry). 

Your in put FASTA file looks okay so that's not the source of the issue. I'll debug it to see which entry exactly is causing it.

Damian

Jimmy

unread,
Jul 18, 2016, 6:47:00 PM7/18/16
to Abacus Support
I spent a little time seeing if I could identify any missing proteins present in the protXML but not in the fasta.  So I pulled out every "protein_name" entries present anywhere in the protXML file (including protein, indistinguishable_protein, and peptide_parent_protein elements) and looked for them in the fasta.  Unless I did something wrong, I could find all of them in the fasta file and none with a blank sequence.  So whatever the problem is, it seems like something else besides a protein missing from the fasta is triggering the error.

GATTACA

unread,
Jul 20, 2016, 1:26:01 PM7/20/16
to Abacus Support
Okay I did some checking and I think I found the bug.
The issue has to do with the length of FASTA header lines. Those that fall right between 99-100 characters in length are not getting recorded by ABACUS.
By default ABACUS will read up to the first blank space in a FASTA header line.  If the resulting substring is longer than 100 it truncates it to 99 characters. 
There is an issue with the conditional that checks for long protein ID lines. 

Here is an example of a protein you find in the XML file but Abacus thinks has a length of zero. It's exactly 99 characters long:
pleuromamma_t_h10_37182_comp204268_c0::pleuromamma_t_h10_37182_comp204268_c0_seq1::g.87736::m.87736

I will fix the code and push the update sometime next week. In the meantime if you are still working on this issue, lengthen the protein identifiers so that they go beyond 100 characters before a space is encountered. Alternatively shorten the protein identifiers so that they are less than 99 characters before the first space is encountered.

This is only happening with this FASTA file since I have specific parsing rules for Uniprot, RefSeq and IPI. 

Hope this helps and I'm sorry for taking so long. This one was a hard one to pin down.

Damian

GATTACA

unread,
Jul 20, 2016, 8:44:28 PM7/20/16
to Abacus Support
Okay I've uploaded a new version of Abacus that should work.
Give it a go and let me know if you hit a problem.

Damian

Jimmy

unread,
Aug 1, 2016, 4:36:24 PM8/1/16
to Abacus Support
Damian,

I finally remembered to check back here today to see if there were any updates.  Anyways, I just tried with the abacus.jar file you posted on 7/20 and I'm getting an immediate error when I try to run it both starting the GUI or running from command line.  This is what I see now:

1041 > java -Xmx16g -jar /net/pr/vol1/ProteomicsResource/bin/abacus.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: mainFunction/mainFunction : Unsupported major.minor version 52.0
       at java.lang.ClassLoader.defineClass1(Native Method)
       at java.lang.ClassLoader.defineClass(Unknown Source)
       at java.security.SecureClassLoader.defineClass(Unknown Source)
       at java.net.URLClassLoader.defineClass(Unknown Source)
       at java.net.URLClassLoader.access$100(Unknown Source)
       at java.net.URLClassLoader$1.run(Unknown Source)
       at java.net.URLClassLoader$1.run(Unknown Source)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.net.URLClassLoader.findClass(Unknown Source)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

dfermin

unread,
Aug 1, 2016, 5:51:22 PM8/1/16
to Abacus Support
This is an "undocumented feature" of Java. Your version of java on your system is older than the version I used to compile/test the new release. 
I'm on java 1.8.0_101_b13 (ie: Java 8).

You need to update your java version and it should work. 

I just tested it on a system running Java 7 and got this error. 

Let me know if this doesn't work,
Damian

Jimmy

unread,
Aug 2, 2016, 11:56:42 AM8/2/16
to Abacus Support
I got the IT dept. to update java and all is well now.  Thanks for actively supporting your tool!
Reply all
Reply to author
Forward
0 new messages