示例#1
0
def buildModel( num_bins = 3, annotate_terminals = None ):
    """build evolutionary trace like model.
    
    This model is parameterized by the number of bins. Each
    bin corresponds to a column evolving at a differnent rate.

    X chains {X: 0..num_bins-1} are created, in which transitions are parameterized as
    KX * PAB, where PAB is the rate for going from A to B (amino acid alphabet),
    and KX is rate constant for chain X.
    
    If initial_model is given, initial frequencies and rate estimates
    are taken from this model. Otherwise, uniform frequencies are chosen.
    Note, that the naming scheme in the initial model has to follow the
    one chosen here.
    """
    
    model = XGram.Model.Model()

    grammar = XGram.Model.Grammar()
    alphabet = XGram.Model.Alphabet()
    
    for x in range(num_bins):
        chain = XGram.Model.Chain()            
        generator_chain = Chain( \
            alphabet = Bio.Alphabet.IUPAC.IUPACProtein.letters.lower(),
            generator_initial_states = InitialStatesParametric( is_const = True), 
            generator_transitions = TransitionsScaledConst( rate = "K%i" % x, is_const = True)
            )
        generator_chain.buildGrammar( chain )
        chain.setTerminals( ("T%i" % x,) )
        grammar.addChain( chain )
    
    # add annotaions
    generator_grammar = GrammarLinearSequenceMultipleChains( annotate_terminals = annotate_terminals )  
    generator_grammar.buildGrammar( grammar )     

    grammar.setName( "XGramProteinSites" )
    
    generator_alphabet = AlphabetProtein()
    generator_alphabet.buildGrammar(alphabet)
     
    model.setAlphabet( alphabet )
    model.setGrammar( grammar )
    
    return model


    
示例#2
0
def buildModel(num_bins=3, annotate_terminals=None):
    """build evolutionary trace like model.
    
    This model is parameterized by the number of bins. Each
    bin corresponds to a column evolving at a differnent rate.

    X chains {X: 0..num_bins-1} are created, in which transitions are parameterized as
    KX * PAB, where PAB is the rate for going from A to B (amino acid alphabet),
    and KX is rate constant for chain X.
    
    If initial_model is given, initial frequencies and rate estimates
    are taken from this model. Otherwise, uniform frequencies are chosen.
    Note, that the naming scheme in the initial model has to follow the
    one chosen here.
    """

    model = XGram.Model.Model()

    grammar = XGram.Model.Grammar()
    alphabet = XGram.Model.Alphabet()

    for x in range(num_bins):
        chain = XGram.Model.Chain()
        generator_chain = Chain( \
            alphabet = Bio.Alphabet.IUPAC.IUPACProtein.letters.lower(),
            generator_initial_states = InitialStatesParametric( is_const = True),
            generator_transitions = TransitionsScaledConst( rate = "K%i" % x, is_const = True)
            )
        generator_chain.buildGrammar(chain)
        chain.setTerminals(("T%i" % x, ))
        grammar.addChain(chain)

    # add annotaions
    generator_grammar = GrammarLinearSequenceMultipleChains(
        annotate_terminals=annotate_terminals)
    generator_grammar.buildGrammar(grammar)

    grammar.setName("XGramProteinSites")

    generator_alphabet = AlphabetProtein()
    generator_alphabet.buildGrammar(alphabet)

    model.setAlphabet(alphabet)
    model.setGrammar(grammar)

    return model
示例#3
0
文件: DNA.py 项目: B-Rich/dart
    def __init__( self,
                  generator_initial_states = None,
                  generator_transitions = None,
                  *args, **kwargs ):

        if not generator_transitions:
            generator_transitions = Transitions( *args, **kwargs )
        
        # the alphabet is given by the codon table, but the states
        # are separated.
        alphabet = ('a', 'c', 'g', 't' )
        Chain.__init__(self, 
                       alphabet = alphabet,
                       generator_initial_states = generator_initial_states,
                       generator_transitions = generator_transitions, 
                       )
    
        self.mName = "dna"
示例#4
0
文件: Codons.py 项目: B-Rich/dart
    def __init__( self,
                  codon_table = Bio.Data.CodonTable.standard_dna_table, 
                  generator_initial_states = None,
                  generator_transitions = None ):

        if not generator_transitions:
            generator_transitions = TransitionsCodons( codon_table = codon_table )
        
        self.mCodonTable = codon_table
        # the alphabet is given by the codon table, but the states
        # are separated.
        alphabet = map( lambda x: tuple(x.lower()), codon_table.forward_table.keys())
        Chain.__init__(self, 
                       alphabet = alphabet,
                       generator_initial_states = generator_initial_states,
                       generator_transitions = generator_transitions, 
                       )
    
        self.mName = "codons"
示例#5
0
    def __init__(self,
                 generator_initial_states=None,
                 generator_transitions=None,
                 *args,
                 **kwargs):

        if not generator_transitions:
            generator_transitions = Transitions(*args, **kwargs)

        # the alphabet is given by the codon table, but the states
        # are separated.
        alphabet = ('a', 'c', 'g', 't')
        Chain.__init__(
            self,
            alphabet=alphabet,
            generator_initial_states=generator_initial_states,
            generator_transitions=generator_transitions,
        )

        self.mName = "dna"
示例#6
0
    def __init__(self,
                 codon_table=Bio.Data.CodonTable.standard_dna_table,
                 generator_initial_states=None,
                 generator_transitions=None):

        if not generator_transitions:
            generator_transitions = TransitionsCodons(codon_table=codon_table)

        self.mCodonTable = codon_table
        # the alphabet is given by the codon table, but the states
        # are separated.
        alphabet = map(lambda x: tuple(x.lower()),
                       codon_table.forward_table.keys())
        Chain.__init__(
            self,
            alphabet=alphabet,
            generator_initial_states=generator_initial_states,
            generator_transitions=generator_transitions,
        )

        self.mName = "codons"
示例#7
0
文件: DNA.py 项目: B-Rich/dart
 def buildGrammar(self, chain):
     """output the grammar."""
     Chain.buildGrammar( self, chain )
     chain.setUpdatePolicy( "parametric" )
示例#8
0
 def buildGrammar(self, chain):
     """output the grammar."""
     Chain.buildGrammar(self, chain)
     chain.setUpdatePolicy("parametric")
示例#9
0
def buildPFold(strand_symmetric=False,
               fix_frequencies=False,
               weak_strong=False,
               copy_parameters=None):
    """build the PFold grammar.
    
    if copy_parameters is set to a filename of a grammar, then parameters from
    the grammar are copied to the generated chain.
    
    if weak_strong is set to true, than the strand-symmetric/weak-strong
    model is built. Note: for this option to be in effect strand_symmetric 
    has to be set to True .
    """
    alphabet = XGram.Model.Alphabet()
    XGram.Generator.AlphabetRNA().buildGrammar(alphabet)

    # build di-nucleotide alphabet
    aa_mono = []
    for x in alphabet.getTokens():
        aa_mono.append((x, ))

    chain1 = XGram.Model.Chain()
    XGram.Generator.Chain(alphabet=aa_mono).buildGrammar(chain1)
    chain1.setUpdatePolicy("rev")
    chain1.setTerminals(('NUC', ))

    aa_di = []
    for x in alphabet.getTokens():
        for y in alphabet.getTokens():
            aa_di.append((x, y))

    chain2 = XGram.Model.Chain()

    if strand_symmetric:
        if weak_strong:
            generator_transitions = \
                TransitionsSymmetricStemWeakStrong( fix_frequencies = fix_frequencies )
        else:
            generator_transitions = \
                TransitionsSymmetricStem( fix_frequencies = fix_frequencies )
        generator_initial_states = InitialStatesFromTransitions()
        Chain(generator_transitions=generator_transitions,
              generator_initial_states=generator_initial_states,
              alphabet=aa_di).buildGrammar(chain2)
        chain2.setUpdatePolicy("parametric")
    else:
        Chain(alphabet=aa_di).buildGrammar(chain2)
        chain2.setUpdatePolicy("rev")

    chain2.setTerminals(('LNUC', 'RNUC'))

    grammar = XGram.Model.Grammar()
    grammar.addChain(chain1)
    grammar.addChain(chain2)

    ## build Grammar for PFold

    GeneratorGrammarPFold().buildGrammar(grammar)

    if strand_symmetric:
        if weak_strong:
            grammar.setName("pfold_strand_symmetric_weak_strong")
        else:
            grammar.setName("pfold_strand_symmetric")
    else:
        grammar.setName("pfold")

    ## if desired, copy data from another chain
    if copy_parameters:
        other = XGram.Parser.parseGrammar(
            open(copy_parameters, "r").readlines())
        if strand_symmetric:
            ## first copy rules over
            grammar.copyParameters(other.mGrammar,
                                   remove_missing=True,
                                   skip_rules=False,
                                   skip_variables=True,
                                   skip_constants=True,
                                   skip_chains=True)
            ## filter states from the chains
            grammar.copyParameters(other.mGrammar,
                                   remove_missing=True,
                                   copy=False,
                                   skip_rules=True,
                                   skip_variables=True,
                                   skip_constants=True,
                                   skip_chains=False)
            grammar.checkContent()
        else:
            grammar.copyParameters(other.mGrammar, remove_missing=True)

    model = XGram.Model.Model()
    model.setGrammar(grammar)
    model.setAlphabet(alphabet)
    return model