Interface MutationFunction

    • Method Detail

      • mutate

        SymbolList mutate​(SymbolList seq)
                   throws IllegalAlphabetException,
                          ChangeVetoException,
                          IllegalSymbolException
        Produces a new SymbolList by mutation. Each position i in the SymbolList seq is mutated with probability getMutationProbs[i]. The new residue is selected at random from the Distribution mutation. The use of an array of probabilities allows the modelling of mutational hotspots. Position 0 in the array corresponds to the probability of the first residue of seq mutating. If the length of the array defined in getMutationProbs() is shorter than the length of the sequence the default behaivour of implementations will be to apply the last probability to each subsequence residue. A single member array will mutate all bases with equal probability.
        Parameters:
        seq - the sequence to mutate
        Returns:
        The mutated sequence.
        Throws:
        IllegalAlphabetException - If the mutationSpectrum Distribution is not emitting Symbols from the same Alphabet as seq.
        IllegalSymbolException - if the mutationSpectrum Distribution is not conditioned with the same Alphabet as the seq Alphabet.
        ChangeVetoException - if seq is unmodifiable
      • setMutationProbs

        void setMutationProbs​(double[] mutationProbs)
                       throws ChangeVetoException
        Set the probability of a mutation occuring at a certain position Position 0 in the array corresponds to the probability of the first residue of seq mutating. If the length of the array defined in getMutationProbs() is shorter than the length of the sequence the default behaivour of implementations will be to apply the last probability to each subsequence residue. A single member array will mutate all bases with equal probability.
        Parameters:
        mutationProbs - an array of double values representing mutation probabilities
        Throws:
        ChangeVetoException - if a ChangeListener vetoes the change.
      • setMutationSpectrum

        void setMutationSpectrum​(OrderNDistribution mutationSpectrum)
                          throws ChangeVetoException
        Sets the Distribution of Symbols that will be selected from when a mutation occurs. An OrderNDistribution is used so that you can model a situation where the identity of the 'mutant' Symbol is dependent on the original Symbol. The primary use is to prevent Symbols mutating to themselves. Another use would be to model transitions and transversions.
        Parameters:
        mutationSpectrum - the Distribution of 'mutant' bases to choose from.
        Throws:
        ChangeVetoException - if a ChangeListener vetoes the change.