[Biojava-dev] Alignments.getPairwiseAlignment seems a bit choosy
Hannes Brandstätter-Müller
biojava at hannes.oib.com
Thu Feb 23 20:49:44 UTC 2012
As a direct consequence (?), the following code generates a
NullPointerException:
DNASequence target = new DNASequence("ACTGACGTGTAGCTGACTGA",
DNACompoundSet.getDNACompoundSet());
DNASequence query = new DNASequence("ACTGACGTGTAGCTGACTGA",
AmbiguityDNACompoundSet.getDNACompoundSet());
List<DNASequence> lst = new ArrayList<DNASequence>();
lst.add(target);
lst.add(query);
Profile<DNASequence, NucleotideCompound> profile =
Alignments.getMultipleSequenceAlignment(lst);
ava.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at org.biojava3.alignment.Alignments.getListFromFutures(Alignments.java:288)
at org.biojava3.alignment.Alignments.runPairwiseScorers(Alignments.java:608)
at org.biojava3.alignment.Alignments.getMultipleSequenceAlignment(Alignments.java:179)
at org.biojava3.alignment.TestDNAAlignment.testDNAALignmentWithAmbiguity(TestDNAAlignment.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
Caused by: java.lang.NullPointerException
at org.biojava3.alignment.FractionalIdentityScorer.align(FractionalIdentityScorer.java:112)
at org.biojava3.alignment.FractionalIdentityScorer.getScore(FractionalIdentityScorer.java:105)
at org.biojava3.alignment.template.CallablePairwiseSequenceScorer.call(CallablePairwiseSequenceScorer.java:53)
at org.biojava3.alignment.template.CallablePairwiseSequenceScorer.call(CallablePairwiseSequenceScorer.java:38)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
* How should this be handled? Custom Exception? Simply Set the
DNACompoundSet one to AmbiguityDNACompoundset? Could that cause
problems?
Hannes
On Wed, Feb 22, 2012 at 15:38, Hannes Brandstätter-Müller
<biojava at hannes.oib.com> wrote:
> On Tue, Feb 21, 2012 at 19:58, Andreas Prlic <andreas at sdsc.edu> wrote:
>> Hi Hannes,
>>
>>> I recently ran into a bit of an annoyance when using
>>> Alignments.getPairwiseAlignment with DNASequences
>>>
>>> If the DNASequences do not have the same CompoundSet, the alignment
>>> fails (but silently, which is the annoying part) - you just get 0 as
>>> Similars or Identicals.
>>
>> what gap penalties are you using?
>
> SubstitutionMatrix<NucleotideCompound> matrix =
> SubstitutionMatrixHelper.getNuc4_4();
> SimpleGapPenalty gapP = new SimpleGapPenalty();
> gapP.setOpenPenalty((short) 5);
> gapP.setExtensionPenalty((short) 2);
> SequencePair<DNASequence, NucleotideCompound> psa =
> Alignments.getPairwiseAlignment(query, target,
> PairwiseSequenceAlignerType.LOCAL, gapP, matrix);
>
>>
>> I don't have had enough time to look at the
>>> code in detail, but there should be something done here, at least
>>> check and throw an exception or something if it can't be made to work
>>> regardless.
>>
>> Can you provide an example to reproduce this?
>
> use the above code, make:
>
> query = new DNASequence("ATCGTAGCTAGTCGTGC",
> AmbiguityDNACompoundSet.getDNACompoundSet()));
> target = new DNASequence("ATCGTAGCTAGTCGTGT",
> DNACompoundSet.getDNACompoundSet()));
>
> This should (with 3.0.2) fail silently. I.e. psa.getSimilars() == 0
>
>
> Hannes
>
> ps: sorry for the triplepost, Andreas, I'm still not used to the
> mailinglist not defaulting to "reply-to-list" and managed to get the
> sender wrong in the second try.
More information about the biojava-dev
mailing list