[Biojava-dev] Bug in DP.generate()?
    David Huen 
    david.huen at ntlworld.com
       
    Sun May 11 13:18:37 EDT 2003
    
    
  
Hi,
Around line 466, the generate() method samples a state from the magicalState 
and looks up the weight of that transition to add it to the score.
    oldState = (State)model.getWeights(model.magicalState()).sampleSymbol();
    Distribution oldDist = model.getWeights(oldState);
    try {
      symScore += oldDist.getWeight(oldState);
    } catch (IllegalSymbolException ite) {
      throw new BioError(ite,
        "Transition returned from sampleTransition is invalid");
    }
It looks as if it is picking up the score from the wrong transition 
distribution, i.e. from the transition distribution of the destination 
state rather than from that of the magicalState.  At any rate, the current 
code fubars immediately when the first state doesn't have a reflexive 
transition.
I think the distribution line should be replaced by:-
    Distribution oldDist = model.getWeights(model.magicalState());
Under these circumstances, I don't think we could ever get an 
IllegalSymbolException (since the sampleSymbol() will have drawn that very 
same distribution.) so the try clause may be unnecessary too.
Have I read it right?  If so, I will commit my changes to CVS.
Regards,
David Huen
    
    
More information about the biojava-dev
mailing list