Example #1
0
def stepdown(wnum0, wden0, dtnum0, dtden0):
    global G, tnum, tden

    wnum = wnum0.mul_ground(1)
    wden = wden0.mul_ground(1)
    dtnum = dtnum0.mul_ground(1)
    dtden = dtden0.mul_ground(1)

    infectables, recoverables = get_infect_reco()
    si = sum(infectables.values())
    sr = len(recoverables)

    if si == 0 and sr == 0:
        a = wnum.mul(dtnum)
        b = wden.mul(dtden)
        c = b.mul(tden)
        a = a.mul(tden)
        b = b.mul(tnum)
        a = a.add(b)
        b = a.gcd(c)
        tnum, no = a.div(b)
        tden, no = c.div(b)

        collect()
        return

    den = Poly(si * x + sr, x)
    a = den.mul(dtnum)
    a = a.add(dtden)
    b = den.mul(dtden)
    c = a.gcd(b)
    dtnum, no = a.div(c)
    dtden, no = b.div(c)

    nden = wden.mul(den)
    for you, num in sorted(infectables.iteritems()):
        nnum = wnum.mul(Poly(num * x, x))

        if G.node[you]['state'] == 'SENTI':
            a = nnum.mul(dtnum)
            b = nden.mul(dtden)
            c = b.mul(tden)
            a = a.mul(tden)
            b = b.mul(tnum)
            a = a.add(b)
            b = a.gcd(c)
            tnum, no = a.div(b)
            tden, no = c.div(b)
        else:
            G.node[you]['state'] = 'I'
            stepdown(nnum, nden, dtnum, dtden)
            G.node[you]['state'] = 'S'
    for you in sorted(recoverables):
        G.node[you]['state'] = 'R'
        stepdown(wnum, nden, dtnum, dtden)
        G.node[you]['state'] = 'I'
    collect()
Example #2
0
    G = nx.convert_node_labels_to_integers(G0, label_attribute='id')

    sonum = Poly(0, x)
    soden = Poly(1, x)
    for v in G.nodes():
        if G.node[v]['state'] != 'V':
            for u in G.nodes():
                if G.node[u]['state'] != 'V':
                    G.node[u]['state'] = 'S'
            G.node[v]['state'] = 'I'
            onum = Poly(0, x)
            oden = Poly(1, x)

            stepdown(Poly(1, x), Poly(1, x))

            a = onum.mul(soden)
            b = sonum.mul(oden)
            c = a.add(b)
            d = oden.mul(soden)
            a = d.gcd(c)
            sonum, no = c.div(a)
            soden, no = d.div(a)

            print '(' + str(sonum.as_expr()) + ')/(' + str(
                soden.as_expr()) + ')'
            print '-------------'

    a = soden.mul_ground(G.number_of_nodes())
    b = sonum.gcd(a)
    c, no = sonum.div(b)
    d, no = a.div(b)
Example #3
0
    G = nx.convert_node_labels_to_integers(G0, label_attribute='id')

    stnum = Poly(0, x)
    stden = Poly(1, x)
    for v in G.nodes():
        for u in G.nodes():
            if G.node[u]['state'] != 'SENTI':
                G.node[u]['state'] = 'S'
        if G.node[v]['state'] != 'SENTI':
            G.node[v]['state'] = 'I'
        tnum = Poly(0, x)
        tden = Poly(1, x)

        stepdown(Poly(1, x), Poly(1, x), Poly(0, x), Poly(1, x))

        a = tnum.mul(stden)
        b = stnum.mul(tden)
        a = a.add(b)
        b = tden.mul(stden)
        c = a.gcd(b)
        stnum, no = a.div(c)
        stden, no = b.div(c)

    a = stden.mul_ground(G.number_of_nodes())
    b = stnum.gcd(a)
    c, no = stnum.div(b)
    d, no = a.div(b)
    print s.strip() + ', (' + str(c.as_expr()) + ')/(' + str(d.as_expr()) + ')'

#  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #