[Biojava-dev] Alignments.getPairwiseAlignment seems a bit choosy

Hannes Brandstätter-Müller biojava at hannes.oib.com
Thu Mar 8 03:47:39 UTC 2012


OK, just committed it (including the test cases)

Hannes

On Sun, Feb 26, 2012 at 20:37, Andreas Prlic <andreas at sdsc.edu> wrote:
> Hi Hannes,
>
> The issue is that the two input sequences are not using the same set
> of compounds and then the alignment fails. If you put in both
> sequences as DNACompounds it works for me.
>
> The code in Alignments.java should probably check that the input is
> correct and fail more gracefully... (illegal argument exception?)
>
> Andreas
>
> On Thu, Feb 23, 2012 at 12:49 PM, Hannes Brandstätter-Müller
> <biojava at hannes.oib.com> wrote:
>> 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.
>>
>> _______________________________________________
>> biojava-dev mailing list
>> biojava-dev at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/biojava-dev




More information about the biojava-dev mailing list