Exemple #1
0
def main():

    toParse = sys.stdin.read()

    HMMstructures = BaulmWelch()
    sequence, transitionDict, emissionDict, availableStates = HMMstructures.parseInput(
        toParse)

    forwardGraph = HMMstructures.makeGraph(sequence, availableStates,
                                           transitionDict)
    reversedGraph = HMMstructures.reverseGraph(availableStates, forwardGraph)

    dagProb = DirectedAcyclicGraph()
    forwardWeights, forwardSum = dagProb.longestPath(1, len(sequence), 1,
                                                     sequence, forwardGraph,
                                                     emissionDict)

    backWeights, backSum = dagProb.longestPath(
        len(sequence) - 1, 0, -1, sequence, reversedGraph, emissionDict)
    stateProbabilities = HMMstructures.calcEachNode(forwardSum, forwardWeights,
                                                    backWeights, sequence,
                                                    availableStates)

    for prob in stateProbabilities:
        print(*prob, sep="\t")
Exemple #2
0
def main():

    toParse = sys.stdin.read()

    HMMstructures = HMM()
    sequence, transitionDict, emissionDict, availableStates = HMMstructures.parseInput(
        toParse)
    sys.stdin = open('/dev/tty')

    forwardGraph = HMMstructures.makeGraph(sequence, availableStates,
                                           transitionDict)
    reversedGraph = HMMstructures.reverseGraph(availableStates, forwardGraph)
    print(forwardGraph)
    print('*************')
    print(reversedGraph)
    dagProb = DirectedAcyclicGraph()
    forwardWeights, forwardSum = dagProb.longestPath(1, len(sequence), 1,
                                                     sequence, forwardGraph,
                                                     emissionDict)
    #    print(forwardWeights)
    print('forward Done')
    print(forwardSum)

    backWeights, backSum = dagProb.longestPath(
        len(sequence) - 1, 0, -1, sequence, reversedGraph, emissionDict)
def main():

    toParse = sys.stdin.read()

    HMMstructures = HMM()
    sequence, transitionDict, emissionDict, availableStates = HMMstructures.parseInput(
        toParse)

    dagGraph = HMMstructures.makeGraph(sequence, availableStates,
                                       transitionDict)
    dagProb = DirectedAcyclicGraph()

    getViterbi = dagProb.longestPath(sequence, dagGraph, transitionDict,
                                     emissionDict)
def main():

    toParse = sys.stdin.read()

    HMMstructures = ForwardBackward()
    sequence, transitionDict, emissionDict, availableStates = HMMstructures.parseInput(
        toParse)

    dagProb = DirectedAcyclicGraph()
    forwardWeights, forwardSum = dagProb.longestPath(1, len(sequence), 1,
                                                     sequence, emissionDict)

    backWeights, backSum = dagProb.longestPath(
        len(sequence) - 1, 0, -1, sequence, reversedGraph, emissionDict)
    accurateProbs, printProbs = HMMstructures.calcEachNode(
        forwardSum, forwardWeights, backWeights, sequence, availableStates)

    for prob in printProbs:
        print(*prob, sep="\t")
def runBaulmWelch(iterations, sequence, alphabet, transitionDict, emissionDict, availableStates):
    """Runs Baulm Welch parameter learning algorithm for given iterations and returns the final transition/emission parameters for the emitted sequence"""

    dagProb = DirectedAcyclicGraph()
    baulmWelch = BaulmWelch()
    forwardBackward = ForwardBackward()

    for i in range(int(iterations)):
        #run forward/backward algorithm on parameters
        accurateProbs, forward, forwardSum, backward = forwardBackward.getForwardBackward(sequence, transitionDict, emissionDict, availableStates, dagProb)

        #build pi* and pi**
        piStar, emisSums = baulmWelch.getPiStar(emissionDict, sequence, alphabet, availableStates)
        piStarStar, rowState, transitions = baulmWelch.getPiStarStar(sequence, availableStates, forward, backward, forwardSum, transitionDict, emissionDict)
        #rebuild normalized emission and transition dictionaries
        emissionDict = baulmWelch.emisMatrixtoDict(availableStates, alphabet, piStar, emisSums)
        transitionDict = baulmWelch.transMatrixtoDict(availableStates, piStarStar, rowState, transitions)

    return emissionDict, transitionDict