def _generateModel0(numCategories):
<EOL>initProb = numpy.zeros(numCategories)<EOL>initProb[<NUM_LIT:0>] = <NUM_LIT:0.5><EOL>initProb[<NUM_LIT:4>] = <NUM_LIT:0.5><EOL>firstOrder = dict()<EOL>for catIdx in range(numCategories):<EOL><INDENT>key = str([catIdx])<EOL>probs = numpy.ones(numCategories) / numCategories<EOL>if catIdx == <NUM_LIT:0> or catIdx == <NUM_LIT:4>:<EOL><INDENT>probs.fill(<NUM_LIT:0>)<EOL>probs[<NUM_LIT:1>] = <NUM_LIT:1.0>    <EOL><DEDENT>firstOrder[key] = probs<EOL><DEDENT>secondOrder = dict()<EOL>for firstIdx in range(numCategories):<EOL><INDENT>for secondIdx in range(numCategories):<EOL><INDENT>key = str([firstIdx, secondIdx])<EOL>probs = numpy.ones(numCategories) / numCategories<EOL>if key == str([<NUM_LIT:0>,<NUM_LIT:1>]):<EOL><INDENT>probs.fill(<NUM_LIT:0>)<EOL>probs[<NUM_LIT:2>] = <NUM_LIT>   <EOL>probs[<NUM_LIT:3>] = <NUM_LIT>   <EOL><DEDENT>elif key == str([<NUM_LIT:4>,<NUM_LIT:1>]):<EOL><INDENT>probs.fill(<NUM_LIT:0>)<EOL>probs[<NUM_LIT:2>] = <NUM_LIT>   <EOL>probs[<NUM_LIT:3>] = <NUM_LIT>   <EOL><DEDENT>secondOrder[key] = probs<EOL><DEDENT><DEDENT>return (initProb, firstOrder, secondOrder, <NUM_LIT:3>)<EOL>
Generate the initial, first order, and second order transition
    probabilities for 'model0'. For this model, we generate the following
    set of sequences:

    1-2-3   (4X)
    1-2-4   (1X)
    5-2-3   (1X)
    5-2-4   (4X)


    Parameters:
    ----------------------------------------------------------------------
    numCategories:      Number of categories
    retval: (initProb, firstOrder, secondOrder, seqLen)
              initProb:     Initial probability for each category. This is a vector
                              of length len(categoryList).
              firstOrder:   A dictionary of the 1st order probabilities. The key
                              is the 1st element of the sequence, the value is
                              the probability of each 2nd element given the first. 
              secondOrder:  A dictionary of the 2nd order probabilities. The key
                              is the first 2 elements of the sequence, the value is
                              the probability of each possible 3rd element given the 
                              first two. 
              seqLen:       Desired length of each sequence. The 1st element will
                            be generated using the initProb, the 2nd element by the
                            firstOrder table, and the 3rd and all successive 
                            elements by the secondOrder table. 


    Here is an example of some return values:
    initProb:         [0.7, 0.2, 0.1]

    firstOrder:       {'[0]': [0.3, 0.3, 0.4],
                       '[1]': [0.3, 0.3, 0.4],
                       '[2]': [0.3, 0.3, 0.4]}

    secondOrder:      {'[0,0]': [0.3, 0.3, 0.4],
                       '[0,1]': [0.3, 0.3, 0.4],
                       '[0,2]': [0.3, 0.3, 0.4],
                       '[1,0]': [0.3, 0.3, 0.4],
                       '[1,1]': [0.3, 0.3, 0.4],
                       '[1,2]': [0.3, 0.3, 0.4],
                       '[2,0]': [0.3, 0.3, 0.4],
                       '[2,1]': [0.3, 0.3, 0.4],
                       '[2,2]': [0.3, 0.3, 0.4]}