[Biojava-l] SimpleModelInState problem?
Matthew Pocock
matthew_pocock@yahoo.co.uk
Fri, 06 Dec 2002 09:40:44 +0000
Hi Russell,
This code is my fault, and I haven't looked at the nested model support
in a couple of years. Hopefully we will get time to look at it over the
weekend.
Matthew
ps I'm writing a CpG finder using the lib today, so at least I have the
right javadocs open.
Russell Smithies wrote:
>
> I'm trying to create a reasonably complex markov model so have split it
> into bits to make it a little easier to handle.
> I'm then trying to re-assemble the bits into another model by creating
> SimpleModelInState's from the sub-models.
> The problem is that I keep getting errors and not sure why.
> heres some code I did as a test, the top portion creates a sub-model
> (which compiles correctly) but when I try to add them to create the DP
> for, I get null pointer errors and was getting errors about null back
> pointers?
>
> heres some testy code :
> (sorry if HotMail munges it) :-)
>
>
>
> import java.util.*;
>
> import org.biojava.bio.*;
> import org.biojava.bio.dist.*;
> import org.biojava.bio.dp.*;
> import org.biojava.bio.seq.*;
> import org.biojava.bio.symbol.*;
>
> public class modelInStateTest {
> public static void main(String[] args) throws Exception {
>
> // sequence to test
> SymbolList sl = DNATools.createDNA("actgatcgactgtacgatgagatgcgactga"+
>
> "tcgactgactgctgcgtatcgatcgatcgatgactgacg");
> int[] advance = { 1 };
>
> //create order n alphabet
> Alphabet orderNAlpha = AlphabetManager.getCrossProductAlphabet(
> Collections.nCopies(3,
> DNATools.getDNA()));
>
> //create uniform distribution for emission states
> Distribution uni_dist = new UniformDistribution(DNATools.getDNA());
>
> // create simple markov model
> SimpleMarkovModel mm = new SimpleMarkovModel(1, DNATools.getDNA(),
> "mm");
>
> //create emission states
> EmissionState es1 = new SimpleEmissionState("1_es",
> Annotation.EMPTY_ANNOTATION, advance, uni_dist);
> EmissionState es2 = new SimpleEmissionState("2_es",
> Annotation.EMPTY_ANNOTATION, advance, uni_dist);
>
>
> // add states to model
> mm.addState(es1);
> mm.addState(es2);
>
> // create transitions between all states
> mm.createTransition(mm.magicalState(), es1);
> mm.createTransition(mm.magicalState(), es2);
> mm.createTransition(es1, es1);
> mm.createTransition(es1, es2);
> mm.createTransition(es2, es2);
> mm.createTransition(es2, es1);
> mm.createTransition(es2, mm.magicalState());
> mm.createTransition(es1, mm.magicalState());
>
> //set weights on transitions
> mm.setWeights(mm.magicalState(), new
> UniformDistribution(mm.transitionsFrom(mm.magicalState())));
> mm.setWeights(es1, new UniformDistribution(mm.transitionsFrom(es1)));
> mm.setWeights(es2, new UniformDistribution(mm.transitionsFrom(es2)));
>
> sl = SymbolListViews.orderNSymbolList(sl, 3);
>
> SymbolList[] sla = { sl };
>
> // create the dynamic programming object
> DP dp = DPFactory.DEFAULT.createDP(mm);
>
> //create statepath
> StatePath sp = dp.viterbi(sla, ScoreType.PROBABILITY);
>
> ///////// TRY TO CREATE SUB MODELS AND INTEGRATE THEM
> ///////////////////////////
>
> SimpleMarkovModel mm2 = new SimpleMarkovModel(1, DNATools.getDNA(),
> "2_mm");
>
> //create states
> SimpleModelInState smis1 = new SimpleModelInState(mm, "1_smis");
> SimpleModelInState smis2 = new SimpleModelInState(mm, "2_smis");
>
> mm2.addState(smis1);
> mm2.addState(smis2);
>
> // create transitions between all states
> mm2.createTransition(mm2.magicalState(), smis1);
> mm2.createTransition(mm2.magicalState(), smis2);
> mm2.createTransition(smis1, smis1);
> mm2.createTransition(smis1, smis2);
> mm2.createTransition(smis2, smis2);
> mm2.createTransition(smis2, smis1);
> mm2.createTransition(smis2, mm2.magicalState());
> mm2.createTransition(smis1, mm2.magicalState());
>
> //set weights on transitions
> mm2.setWeights(mm2.magicalState(), new
> UniformDistribution(mm2.transitionsFrom(mm2.magicalState())));
> mm2.setWeights(smis1, new
> UniformDistribution(mm2.transitionsFrom(smis1)));
> mm2.setWeights(smis2, new
> UniformDistribution(mm2.transitionsFrom(smis2)));
>
> // create the dynamic programming object
> DP dp2 = DPFactory.DEFAULT.createDP(mm2); //<<<<-----------------
>
> //create statepath
> StatePath sp2 = dp2.viterbi(sla, ScoreType.PROBABILITY);
>
> /*
> java.lang.NullPointerException
> at org.biojava.bio.dp.FlatModel.<init>(FlatModel.java:229)
> at org.biojava.bio.dp.DP.flatView(DP.java:96)
> at
> org.biojava.bio.dp.DPFactory$DefaultFactory.createDP(DPFactory.java:51)
> at markov.modelInStateTest.main(modelInStateTest.java:89)
> Exception in thread "main"
> */
>
> }
> }
>
>
>
>
> _________________________________________________________________
> The new MSN 8: advanced junk mail protection and 2 months FREE*
> http://join.msn.com/?page=features/junkmail
>
> _______________________________________________
> Biojava-l mailing list - Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l
>
--
BioJava Consulting LTD - Support and training for BioJava
http://www.biojava.co.uk
__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com