Esempio n. 1
0
 def clone_as_dag(self, instances = True):        
     """
     Return a copy of the AMR as DAG.
     """
     new = Dag()
     
     for triple in self.triples(instances = False): 
         new._add_triple(*copy.copy(triple))
     new.roots = copy.copy(self.roots)
     new.external_nodes = copy.copy(self.external_nodes)
     return new
Esempio n. 2
0
    def test_add_raise(self):
        dag = Dag()

        self.assertRaises(Exception, dag.add, -1, "filename")

        self.assertRaises(Exception, dag.add, 2, "filename")
        self.assertRaises(Exception, dag.add, 3, "filename")

        dag.add(1, "filename")

        self.assertRaises(Exception, dag.add, 3, "filename")
        self.assertRaises(Exception, dag.add, 4, "filename")
Esempio n. 3
0
    def test_add_raise( self ):
        dag = Dag()

        self.assertRaises( Exception, dag.add, -1, "filename" )

        self.assertRaises( Exception, dag.add, 2, "filename" )
        self.assertRaises( Exception, dag.add, 3, "filename" )

        dag.add( 1, "filename" )

        self.assertRaises( Exception, dag.add, 3, "filename" )
        self.assertRaises( Exception, dag.add, 4, "filename" )
Esempio n. 4
0
 def scheduler(self):
     self._refresh_once_()
     while True:
         for dag_row in self.dags:
             succ = dag_info.update_dag_status_and_starttime(dag_row)
             if not succ:
                 continue
             dag = Dag(dag_row)
             dag.daemon = True
             dag.start()
         logger.info('Start refresh once')
         time.sleep(self.refresh_interval)
         self._refresh_once_()
         logger.info('Success refresh once')
Esempio n. 5
0
 def __init__(self):
     self.dagen = {
         2: Dag('2'),
         3: Dag('3 '),
         4: Dag('4'),
         5: Dag('5'),
         6: Dag('6'),
         7: Dag('7'),
         8: Dag('8'),
         9: Dag('9'),
         10: Dag('10'),
         11: Dag('11'),
     }
     self.personen = []
def gen_level():
    print("Initializing DAG...", file=sys.stderr)
    dag = Dag.loads_from(ID_HIERARCHY_FILE)
    print("Generating level.txt ...", file=sys.stderr)
    fout = open(LEVEL_FILE, 'w')
    level_list = dag.level_list()
    for i in range(len(level_list)):
        fout.write("{0}\t{1}".format(i, level_list[i]) + "\n")
    fout.close()
    def test_1(self):
        dag = Dag()

        # . a
        # . b
        # . c

        self._a = dag.add(1, "a")
        self._b = dag.add(1, "b")
        self._c = dag.add(1, "c")

        tSorter = TopologicalSorter(dag)

        self.assertEqual(self._a.getColor(), DfsNode.White)
        self.assertEqual(self._b.getColor(), DfsNode.White)
        self.assertEqual(self._c.getColor(), DfsNode.White)

        self.assertEqual([i.getData() for i in tSorter.getNodes()], ["b", "c", "a"])
def gen_level():
    print("Initializing DAG...", file=sys.stderr)
    dag = Dag.loads_from(ID_HIERARCHY_FILE)
    print("Generating level.txt ...", file=sys.stderr)
    fout = open(LEVEL_FILE, 'w')
    level_list = dag.level_list()
    for i in range(len(level_list)):
        fout.write("{0}\t{1}".format(i, level_list[i]) + "\n")
    fout.close()
Esempio n. 9
0
 def from_triples(cls, triples, concepts, roots=None, warn=sys.stderr):
     """
     Initialize a new abstract meaning representation from a collection of triples 
     and a node to concept map.
     """
     amr = Dag.from_triples(triples, roots, warn=warn)
     amr.__class__ = Amr
     amr.node_to_concepts = concepts
     amr.__cached_triples = None
     return amr
Esempio n. 10
0
    def test_1(self):
        dag = Dag()

        # . a
        # . b
        # . c

        self._a = dag.add(1, "a")
        self._b = dag.add(1, "b")
        self._c = dag.add(1, "c")

        tSorter = TopologicalSorter(dag)

        self.assertEqual(self._a.getColor(), DfsNode.White)
        self.assertEqual(self._b.getColor(), DfsNode.White)
        self.assertEqual(self._c.getColor(), DfsNode.White)

        self.assertEqual([i.getData() for i in tSorter.getNodes()],
                         ["b", "c", "a"])
Esempio n. 11
0
    def test_cycle( self ):
        dag = Dag()

        # filename_1_1
        #   filename_2_1
        #       filename_1_1

        filename_1_1 = DagNode( "filename_1_1" )
        filename_2_1 = DagNode( "filename_2_1" )

        dag.add( 1, "filename_1_1" )
        dag.add( 2, "filename_2_1" )
        dag.add( 3, "filename_1_1" )

        self.assertEqual( dag.get( "filename_1_1" ).getChildren(), set( [ filename_2_1 ] ) )
        self.assertEqual( dag.get( "filename_1_1" ).getParents(), set( [ dag.getRoot() ] ) )

        self.assertEqual( dag.get( "filename_2_1" ).getChildren(), set() )
        self.assertEqual( dag.get( "filename_2_1" ).getParents(), set( [ filename_1_1 ] ) )
Esempio n. 12
0
    def test_djikstra(self):
        dag = Dag()
        a, b, c, d = dag.add_vertices(4)
        dag.add_edge(a, b, 3)
        dag.add_edge(a, c, 4)
        dag.add_edge(b, d, 4)
        dag.add_edge(c, d, 1)

        self.assertEqual(dag.djikstra(a, d), (5, [a, c, d]))
Esempio n. 13
0
 def apply_node_map(self, node_map, *args, **kwargs):
     new = Dag.apply_node_map(self, node_map, *args, **kwargs)    
     new.__class__ = Amr
     new.node_to_concepts = {} 
     new.__cached_triples = None
     for node in self.node_to_concepts:
         if node in node_map:
             new.node_to_concepts[node_map[node]] = self.node_to_concepts[node]
         else: 
             new.node_to_concepts[node] = self.node_to_concepts[node]
     return new
Esempio n. 14
0
 def apply_node_map(self, node_map):
     """
     Needed for smatch.
     """
     new = Dag.apply_node_map(self, node_map)
     new.__class__ = Amr
     new.node_to_concepts = {}
     new.__cached_triples = None
     for n in self.node_to_concepts:
         if n in node_map:
             new.node_to_concepts[node_map[n]] = self.node_to_concepts[n]
         else:
            new.node_to_concepts[n] = self.node_to_concepts[n]
     return new
Esempio n. 15
0
def category2ancestor():
    print("Initializing DAG...", file=sys.stderr)
    dag = Dag.loads_from(ID_HIERARCHY_FILE)
    print("Generating entity2ancestor.txt ...", file=sys.stderr)
    fin = open(ENTITY2CATEGORY_FILE)
    fout = open(ENTITY2ANCESTOR_FILE, 'w')
    count = 0
    for line in fin:
        if count % 1000 == 0:
            print("{0}\r".format(count), file=sys.stderr, end="")
        info = line.split('\t')
        entity = info[0]
        clist = [int(c) for c in info[1:]]
        stats = dag.ancestor_path(clist)
        fout.write("\t".join([entity] + ["{0}:{1}".format(c[0], c[1]) for c in stats]) + "\n");
        count += 1
    fout.close()
    fin.close()
Esempio n. 16
0
def category2ancestor():
    print("Initializing DAG...", file=sys.stderr)
    dag = Dag.loads_from(ID_HIERARCHY_FILE)
    print("Generating entity2ancestor.txt ...", file=sys.stderr)
    fin = open(ENTITY2CATEGORY_FILE)
    fout = open(ENTITY2ANCESTOR_FILE, 'w')
    count = 0
    for line in fin:
        if count % 1000 == 0:
            print("{0}\r".format(count), file=sys.stderr, end="")
        info = line.split('\t')
        entity = info[0]
        clist = [int(c) for c in info[1:]]
        stats = dag.ancestor_path(clist)
        fout.write("\t".join([entity] +
                             ["{0}:{1}".format(c[0], c[1])
                              for c in stats]) + "\n")
        count += 1
    fout.close()
    fin.close()
Esempio n. 17
0
import random
from dag import Dag

#Create a random graph
n_nodes = 10
n_edges = 20
randseed = 18
graph_is_dag = True

dag1 = Dag()
random.seed(randseed)

for i in range(n_nodes):
    dag1.add_node(i)
for i in range(n_edges):
    node1 = random.randint(0,n_nodes-1)
    node2 = random.randint(0,n_nodes-1)
    dag1.add_edge(node1, node2)
if graph_is_dag:
    while not dag1.validate():
        node1 = random.randint(0,n_nodes-1)
        node2 = random.randint(0,n_nodes-1)
        dag1.add_edge(node1, node2)
        # remove an edge between two nodes that are known to be connected
        print dag1.graph
print dag1.graph
Esempio n. 18
0
 def update(self, depth, header):
     return Dag.add(self, depth, header)
Esempio n. 19
0
 def add(self, depth, header):
     node = Dag.add(self, depth, header)
     node.setIncludedRecursively(True)
     return node
Esempio n. 20
0
 def __init__(self):
     Dag.__init__(self, HeaderNode)
Esempio n. 21
0
 def update( self, depth, header ):
     return Dag.add( self, depth, header )
Esempio n. 22
0
    def test_add_2( self ):
        dag = Dag()

         # filename_1_1
         #   filename_2_1
         #     filename_leaf
         # filename_leaf

        filename_1_1 = DagNode( "filename_1_1" )
        filename_2_1 = DagNode( "filename_2_1" )
        filename_leaf = DagNode( "filename_leaf" )

        dag.add( 1, "filename_1_1" )
        dag.add( 2, "filename_2_1" )
        dag.add( 3, "filename_leaf" )
        dag.add( 1, "filename_leaf" )

        self.assertEqual( dag.getRoot().getChildren(), set( [ filename_1_1, filename_leaf ] ) )

        self.assertEqual( dag.get( "filename_1_1" ).getChildren(), set( [ filename_2_1 ] ) )
        self.assertEqual( dag.get( "filename_1_1" ).getParents(), set( [ dag.getRoot() ] ) )

        self.assertEqual( dag.get( "filename_2_1" ).getChildren(), set( [ filename_leaf, ] ) )
        self.assertEqual( dag.get( "filename_2_1" ).getParents(), set( [ filename_1_1 ] ) )

        self.assertEqual( dag.get( "filename_leaf" ).getChildren(), set() )
        self.assertEqual( \
            dag.get( "filename_leaf" ).getParents()\
            , set( [ filename_2_1, dag.getRoot() ] )\
        )
Esempio n. 23
0
    def test_add_1( self ):
        dag = Dag()

         # filename_1_1
         #   filename_2_1
         #     filename_3_1
         #   filename_2_2
         #     filename_3_2
         # filename_1_2

        filename_1_1 = DagNode( "filename_1_1" )
        filename_2_1 = DagNode( "filename_2_1" )
        filename_3_1 = DagNode( "filename_3_1" )
        filename_2_2 = DagNode( "filename_2_2" )
        filename_3_2 = DagNode( "filename_3_2" )
        filename_1_2 = DagNode( "filename_1_2" )

        dag.add( 1, "filename_1_1" )
        dag.add( 2, "filename_2_1" )
        dag.add( 3, "filename_3_1" )
        dag.add( 2, "filename_2_2" )
        dag.add( 3, "filename_3_2" )
        dag.add( 1, "filename_1_2" )

        self.assertEqual( dag.getRoot().getChildren(), set( [ filename_1_1, filename_1_2 ] ) )

        self.assertEqual( dag.get( "filename_1_1" ).getChildren(), set( [ filename_2_1, filename_2_2 ] ) )
        self.assertEqual( dag.get( "filename_1_1" ).getParents(), set( [ dag.getRoot() ] ) )

        self.assertEqual( dag.get( "filename_1_2" ).getChildren(), set() )
        self.assertEqual( dag.get( "filename_1_2" ).getParents(), set( [ dag.getRoot() ] ) )

        self.assertEqual( dag.get( "filename_2_1" ).getChildren(), set( [ filename_3_1, ] ) )
        self.assertEqual( dag.get( "filename_2_1" ).getParents(), set( [ dag.get( "filename_1_1" ) ] ) )

        self.assertEqual( dag.get( "filename_2_2" ).getChildren(), set( [ filename_3_2, ] ) )
        self.assertEqual( dag.get( "filename_2_2" ).getParents(), set( [ dag.get( "filename_1_1" ) ] ) )

        self.assertEqual( dag.get( "filename_3_1" ).getChildren(), set() )
        self.assertEqual( dag.get( "filename_3_1" ).getParents(), set( [ dag.get( "filename_2_1" ) ] ) )

        self.assertEqual( dag.get( "filename_3_2" ).getChildren(), set() )
        self.assertEqual( dag.get( "filename_3_2" ).getParents(), set( [ dag.get( "filename_2_2" ) ] ) )
Esempio n. 24
0
    # Dag
    for dagnummer, dag in app.dagen.items():
        dag.aanwezig = len(app.personen)

        # Personen
        for persoon in app.personen:
            persoon.tag = ''
            attempts = 1

            # Voorkeuren
            for voorkeur in persoon.get_voorkeuren(dagnummer):
                if not voorkeur:
                    continue

                groepnaam = Dag.get_groep_naam(voorkeur)

                if groepnaam == Dag.NIET_AANWEZIG_NAAM:
                    dag.aanwezig -= 1
                    break

                if groepnaam == Dag.GEEN_VOORKEUR_NAAM:
                    print('geen voork')
                    print(persoon)
                    dag.addTo(persoon, Dag.OVER_NAAM)
                    break

                if dag.addTo(persoon, groepnaam):
                    persoon.tag = 'V'
                    break
Esempio n. 25
0
 def add( self, depth, header ):
     node = Dag.add( self, depth, header )
     node.setIncludedRecursively( True )
     return node
'''
Python script to create a randomised directed acyclic graph (DAG) that is guaranteed to be topologically sorted
'''

from dag import Dag
from random import randrange
import numpy as np


#Construct a random DAG
n = 10 # no. of nodes
p = 0.2 # probability of adding an edge
m = 50 # max. no. of edge-adding attempts
dag1 = Dag()
for i in range(n):
    dag1.add_node(i)
for i in range(m):
    addedge = np.random.choice(a=[True, False], p=[p,1-p])
    if addedge:
        j = randrange(0,n-2)
        k = j
        while k <= j: 
            k = randrange(0,n-1)
        dag1.add_edge(j,k)
    else:
        continue
#if there are any independent nodes (other than the first), add a dependency
while dag1.ind_nodes() != [0]:
    i = dag1.ind_nodes()[-1]
    if i != 1: dag1.add_edge(randrange(0,i-1),i)
    elif i == 1: dag1.add_edge(0,i)
Esempio n. 27
0
    def test_add_3(self):
        dag = Dag()

        # filename_1_1
        #   filename_2_1
        #     filename_3_1
        #   filename_2_2
        #     filename_3_1

        filename_1_1 = DagNode("filename_1_1")
        filename_2_1 = DagNode("filename_2_1")
        filename_3_1 = DagNode("filename_3_1")
        filename_2_2 = DagNode("filename_2_2")

        dag.add(1, "filename_1_1")
        dag.add(2, "filename_2_1")
        dag.add(3, "filename_3_1")
        dag.add(2, "filename_2_2")
        dag.add(3, "filename_3_1")

        self.assertEqual(dag.getRoot().getChildren(), set([filename_1_1]))

        self.assertEqual(
            dag.get("filename_1_1").getChildren(),
            set([filename_2_1, filename_2_2]))
        self.assertEqual(
            dag.get("filename_1_1").getParents(), set([dag.getRoot()]))

        self.assertEqual(
            dag.get("filename_2_1").getChildren(), set([
                filename_3_1,
            ]))
        self.assertEqual(
            dag.get("filename_2_1").getParents(), set([filename_1_1]))

        self.assertEqual(
            dag.get("filename_2_2").getChildren(), set([
                filename_3_1,
            ]))
        self.assertEqual(
            dag.get("filename_2_2").getParents(), set([filename_1_1]))

        self.assertEqual(dag.get("filename_3_1").getChildren(), set())
        self.assertEqual(
            dag.get("filename_3_1").getParents(),
            set([filename_2_1, filename_2_2]))
Esempio n. 28
0
for sheet in sheets:
    uge = []
    ugenr = sheet.title

    #mandag
    shifttakers = []
    for y in range(5, 100):

        vagt = sheet['I' + str(y)].value
        if vagt != None:
            navn = sheet['A' + str(y)].value
            nr = sheet['H' + str(y)].value
            if nr != None:
                shifttakers.append(ShiftTaker(navn, vagt, nr))

    mandag = Dag(ugenr, sheet['I1'].value, sheet['I2'].value,
                 sheet['I3'].value)
    mandag.shifttakers = shiftSorter(shifttakers)
    uge.append(mandag)

    #tirsdag
    shifttakers = []
    for y in range(5, 100):

        vagt = sheet['J' + str(y)].value
        if vagt != None:
            navn = sheet['A' + str(y)].value
            nr = sheet['H' + str(y)].value
            if nr != None:
                shifttakers.append(ShiftTaker(navn, vagt, nr))

    tirsdag = Dag(ugenr, sheet['J1'].value, sheet['J2'].value,
Esempio n. 29
0
    def test_difficult_dag(self):
        dag = Dag()

        v = dag.add_vertices(10)

        dag.add_edge(v[0], v[1], 1)
        dag.add_edge(v[0], v[2], 2)
        dag.add_edge(v[1], v[2], 5)
        dag.add_edge(v[1], v[3], 1)
        dag.add_edge(v[2], v[4], 2)
        dag.add_edge(v[3], v[2], 3)
        dag.add_edge(v[3], v[4], 1)
        dag.add_edge(v[4], v[5], 2)

        self.assertEqual(dag.djikstra(v[0], v[5]), (5, [v[0], v[1], v[3], v[4], v[5]]))

        dag.add_edge(v[2], v[5], 1)
        self.assertEqual(dag.djikstra(v[0], v[5]), (3, [v[0], v[2], v[5]]))
Esempio n. 30
0
 def __init__( self ):
     Dag.__init__( self, HeaderNode )
Esempio n. 31
0
    def test_add_2(self):
        dag = Dag()

        # filename_1_1
        #   filename_2_1
        #     filename_leaf
        # filename_leaf

        filename_1_1 = DagNode("filename_1_1")
        filename_2_1 = DagNode("filename_2_1")
        filename_leaf = DagNode("filename_leaf")

        dag.add(1, "filename_1_1")
        dag.add(2, "filename_2_1")
        dag.add(3, "filename_leaf")
        dag.add(1, "filename_leaf")

        self.assertEqual(dag.getRoot().getChildren(),
                         set([filename_1_1, filename_leaf]))

        self.assertEqual(
            dag.get("filename_1_1").getChildren(), set([filename_2_1]))
        self.assertEqual(
            dag.get("filename_1_1").getParents(), set([dag.getRoot()]))

        self.assertEqual(
            dag.get("filename_2_1").getChildren(), set([
                filename_leaf,
            ]))
        self.assertEqual(
            dag.get("filename_2_1").getParents(), set([filename_1_1]))

        self.assertEqual(dag.get("filename_leaf").getChildren(), set())
        self.assertEqual( \
            dag.get( "filename_leaf" ).getParents()\
            , set( [ filename_2_1, dag.getRoot() ] )\
        )
Esempio n. 32
0
def addLinkToParentNode(link, nodes):
    parent = Dag.findByNameStatic(nodes, link.parent)
    parent.addLink(link)
    return nodes
Esempio n. 33
0
    def test_one_node_twice(self):
        dag = Dag()

        # filename_1_1
        #   filename_2_1
        #      filename_1_1
        #         filename_3_1

        filename_1_1 = DagNode("filename_1_1")
        filename_2_1 = DagNode("filename_2_1")
        filename_3_1 = DagNode("filename_3_1")

        dag.add(1, "filename_1_1")
        dag.add(2, "filename_2_1")
        dag.add(3, "filename_1_1")
        dag.add(4, "filename_3_1")

        self.assertEqual(
            dag.get("filename_1_1").getChildren(),
            set([filename_2_1, filename_3_1]))
        self.assertEqual(
            dag.get("filename_1_1").getParents(), set([dag.getRoot()]))

        self.assertEqual(dag.get("filename_2_1").getChildren(), set())
        self.assertEqual(
            dag.get("filename_2_1").getParents(), set([filename_1_1]))

        self.assertEqual(dag.get("filename_3_1").getChildren(), set())
        self.assertEqual(
            dag.get("filename_3_1").getParents(), set([filename_1_1]))
Esempio n. 34
0
def generateGraph(input):
    return Dag(generateNodes(input))