示例#1
0
if delta < 0:
    sys.stderr.write("Delta must be positive.\n")
    sys.exit(1)

# Read stream
for line in sys.stdin:
    contents = line.split(" ")
    t = int(contents[0])
    u = contents[1].strip()
    v = contents[2].strip()

    link = frozenset([u, v])
    time = (t, t)

    # This a new instance
    Cm.addClique(Clique((link, time), set([])))

    # Populate data structures
    if link not in times:
        times[link] = []
    times[link].append(t)

    if u not in nodes:
        nodes[u] = set()

    if v not in nodes:
        nodes[v] = set()

    nodes[u].add(v)
    nodes[v].add(u)
    nb_lines = nb_lines + 1
示例#2
0
	times[link].append(t)

        if not u in nodes:
		nodes[u] = set()

	if not v in nodes:
		nodes[v] = set()

	nodes[u].add(v)
        nodes[v].add(u)
	nb_lines = nb_lines + 1

for c in stock:
	index=times[c._X].index(c._tlimite)
	lenght=len(times[c._X])
	if not (index==0 and  index==lenght-1):
		c._deltamax=abs(c._tlimite-minNone(times[c._X][index+1] if index != lenght-1 else delta,times[c._X][index-1] if index!=0 else delta))
	
	c_add=Clique((c._X,(c._tlimite,c._tlimite),(c._tlimite,c._tlimite)))
	c_add._deltamax=c._deltamax
	Cm.addClique(c_add)
	Cm._R.add(c)
	
Cm._times = times
Cm._nodes = nodes
sys.stderr.write("Processed " + str(nb_lines) + "from stdin\n")
R = Cm.getTree(delta)
Cm.printCliques()	


class TestClique(unittest.TestCase):
	def setUp(self):
		self.Cm = CliqueMaster()
		self.seq = range(10)
		sys.stderr = open(os.devnull, 'w')

	def test_delta_is_0(self):
                sousflot   = list([
			Clique((frozenset([1,2]),(1,1)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._times = {frozenset([1,2]):[1]}
		self.Cm._nodes = {1:set([2]), 2:set([1])}
		R = self.Cm.getSpace(10)
		self.assertEqual(R, set([CliqueCritique((frozenset([1,2]),0,10,1,1))]))

	def test_negative_delta(self):
		pass

	def test_big_delta(self):
                sousflot   = list([
			Clique((frozenset([1,2]),(1,1)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._times = {frozenset([1,2]):[1]}
		self.Cm._nodes = {1:set([2]), 2:set([1])}
		R = self.Cm.getSpace(100)
		self.assertEqual(R, set([CliqueCritique((frozenset([1,2]),0,100,1,1))]))

	def test_simple_triangle_when_delta_is_5(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1)),set([])),
		    Clique((frozenset([1, 3]),(2,2)),set([])),
		    Clique((frozenset([2, 3]),(3,3)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2, 3]), 2: set([1, 3]), 3: set([1, 2])}
		self.Cm._times = {frozenset([1, 3]): [2], frozenset([1, 2]): [1], frozenset([2, 3]): [3]}

		R = self.Cm.getSpace(5)
		R_expected = set([

			CliqueCritique((frozenset([1,2,3]),2,5,1,3)),
			CliqueCritique((frozenset([1,2]),0,5,1,1)),
			CliqueCritique((frozenset([2,3]),0,5,3,3)),
			CliqueCritique((frozenset([1,3]),0,5,2,2))
		])

		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"

		self.assertEqual(R, R_expected, debug_msg)

	def test_two_links_alterning(self):
		pass

	def test_single_link_occurring_every_delta(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1)),set([])),
		    Clique((frozenset([1, 2]),(3,3)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2]), 2: set([1])}
		self.Cm._times = {frozenset([1, 2]): [1, 3]}

		R = self.Cm.getSpace(5)
		R_expected = set([

			CliqueCritique((frozenset([1,2]),0,2,1,1)),
			CliqueCritique((frozenset([1,2]),0,2,3,3)),
			CliqueCritique((frozenset([1,2]),2,5,3,1))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_single_link_not_occurring_every_delta(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1)),set([])),
		    Clique((frozenset([1, 2]),(3,3)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2]), 2: set([1])}
		self.Cm._times = {frozenset([1, 2]): [1, 3]}

		R = self.Cm.getSpace(1)


		R_expected = set([
			CliqueCritique((frozenset([1,2]),0,1,1,1)),
			CliqueCritique((frozenset([1,2]),0,1,3,3))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_triangle_and_many_occurrences_with_delta_too_small(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1)),set([])),
		    Clique((frozenset([2, 3]),(2,2)),set([])),
		    Clique((frozenset([1, 3]),(3,3)),set([])),
		    Clique((frozenset([1, 2]),(4,4)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2, 3]), 2: set([1, 3]), 3: set([1, 2])}
		self.Cm._times = {frozenset([1, 3]): [3], frozenset([1, 2]): [1, 4], frozenset([2, 3]): [2]}

		R = self.Cm.getSpace(2)
		R_expected = set([
			CliqueCritique((frozenset([1,2]),0,2,1,1)),
			CliqueCritique((frozenset([1,2]),0,2,4,4)),
			CliqueCritique((frozenset([1,3]),0,2,3,3)),
			CliqueCritique((frozenset([2,3]),0,2,2,2)),
			CliqueCritique((frozenset([1,2,3]),2,2,1,3)),
			CliqueCritique((frozenset([1,2,3]),2,2,2,4))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"

		self.assertEqual(R, R_expected, debug_msg)

	def test_triangle_and_many_occurrences_with_delta_big(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1)),set([])),
		    Clique((frozenset([2, 3]),(2,2)),set([])),
		    Clique((frozenset([1, 3]),(3,3)),set([])),
		    Clique((frozenset([1, 2]),(4,4)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2, 3]), 2: set([1, 3]), 3: set([1, 2])}
		self.Cm._times = {frozenset([1, 3]): [3], frozenset([1, 2]): [1, 4], frozenset([2, 3]): [2]}

		R = self.Cm.getSpace(5)
		R_expected = set([
			CliqueCritique((frozenset([1,2]),0,3,1,1)),
			CliqueCritique((frozenset([1,2]),0,3,4,4)),
			CliqueCritique((frozenset([1,2]),3,5,4,1)),

			CliqueCritique((frozenset([1,3]),0,5,3,3)),
			CliqueCritique((frozenset([2,3]),0,5,2,2)),

			CliqueCritique((frozenset([1,2,3]),2,3,1,3)),
			CliqueCritique((frozenset([1,2,3]),2,3,2,4)),
			CliqueCritique((frozenset([1,2,3]),3,5,2,3))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_triangle_and_many_occurrences_with_delta_huge(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1)),set([])),
		    Clique((frozenset([2, 3]),(2,2)),set([])),
		    Clique((frozenset([1, 3]),(3,3)),set([])),
		    Clique((frozenset([1, 2]),(4,4)),set([]))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2, 3]), 2: set([1, 3]), 3: set([1, 2])}
		self.Cm._times = {frozenset([1, 3]): [3], frozenset([1, 2]): [1, 4], frozenset([2, 3]): [2]}

		R = self.Cm.getSpace(100)
		R_expected = set([
			CliqueCritique((frozenset([1,2]),0,3,1,1)),
			CliqueCritique((frozenset([1,2]),0,3,4,4)),
			CliqueCritique((frozenset([1,2]),3,100,4,1)),

			CliqueCritique((frozenset([1,3]),0,100,3,3)),
			CliqueCritique((frozenset([2,3]),0,100,2,2)),

			CliqueCritique((frozenset([1,2,3]),2,3,1,3)),
			CliqueCritique((frozenset([1,2,3]),2,3,2,4)),
			CliqueCritique((frozenset([1,2,3]),3,100,2,3))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)



	def test_simultaneouslinks(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1))),
		    Clique((frozenset([2, 3]),(1,1))),
		    Clique((frozenset([1, 3]),(1,1))),
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2, 3]), 2: set([1, 3]), 3: set([1, 2])}
		self.Cm._times = {frozenset([1, 3]): [1], frozenset([1, 2]): [1], frozenset([2, 3]): [1]}

		R = self.Cm.getSpace(100)
		R_expected = set([
			CliqueCritique((frozenset([1,2,3]),0,100,1,1))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_simultaneouslinkswithadoublelink(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1))),
		    Clique((frozenset([2, 3]),(1,1))),
		    Clique((frozenset([1, 3]),(1,1))),
		    Clique((frozenset([2, 3]),(2,2)))
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2, 3]), 2: set([1, 3]), 3: set([1, 2])}
		self.Cm._times = {frozenset([1, 3]): [1], frozenset([1, 2]): [1], frozenset([2, 3]): [1,2]}

		R = self.Cm.getSpace(5)
		R_expected = set([
			CliqueCritique((frozenset([1,2,3]),0,5,1,1)),
			CliqueCritique((frozenset([2,3]),1,5,2,1)),
			CliqueCritique((frozenset([2,3]),0,1,2,2))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_extensionvsdeltamax(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1))),
		    Clique((frozenset([2, 3]),(2,2))),
		    Clique((frozenset([1, 2]),(3,3))),
		    Clique((frozenset([1, 2]),(6,6))),

		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2]), 2: set([1, 3]), 3: set([2])}
		self.Cm._times = {frozenset([1, 2]): [1,3,6], frozenset([2, 3]): [2]}

		R = self.Cm.getSpace(10)
		R_expected = set([

			CliqueCritique((frozenset([2,3]), 0,10,2,2)),
			CliqueCritique((frozenset([1,2]), 0,2,1,1)),
			CliqueCritique((frozenset([1,2]), 0,2,3,3)),
			CliqueCritique((frozenset([1,2]), 2,3,3,1)),
			CliqueCritique((frozenset([1,2]), 0,3,6,6)),
			CliqueCritique((frozenset([1,2]), 3,10,6,1))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)


	def test_ajoutdenoeudwhenmax(self):
                sousflot   = list([
		    Clique((frozenset([1, 3]),(1,1))),
		    Clique((frozenset([1, 2]),(2,2))),
		    Clique((frozenset([2, 3]),(2,2))),
		    Clique((frozenset([1, 3]),(4,4))),

		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2,3]), 2: set([1, 3]), 3: set([1,2])}
		self.Cm._times = {frozenset([1, 2]): [2], frozenset([2, 3]): [2],frozenset([1, 3]): [1,4]}

		R = self.Cm.getSpace(5)
		R_expected = set([

			CliqueCritique((frozenset([1,3]), 0,3,4,4)),
			CliqueCritique((frozenset([1,3]), 0,3,1,1)),
			CliqueCritique((frozenset([1,3]), 3,5,4,1)),
			CliqueCritique((frozenset([1,2]), 0,3,2,2)),
			CliqueCritique((frozenset([2,3]), 0,3,2,2)),

			CliqueCritique((frozenset([1,2,3]), 1,3,1,2)),
			CliqueCritique((frozenset([1,2,3]), 2,3,2,4)),
			CliqueCritique((frozenset([1,2,3]), 3,5,2,2))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_ajoutdenoeudwhenmaxsuivitdajoutdelien(self):
                sousflot   = list([
		    Clique((frozenset([1, 3]),(1,1))),
		    Clique((frozenset([1, 2]),(2,2))),
		    Clique((frozenset([2, 3]),(2,2))),
		    Clique((frozenset([1, 3]),(3,3))),
		    Clique((frozenset([1, 3]),(5,5))),
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)
		self.Cm._nodes = {1: set([2,3]), 2: set([1, 3]), 3: set([1,2])}
		self.Cm._times = {frozenset([1, 2]): [2], frozenset([2, 3]): [2],frozenset([1, 3]): [1,3,5]}

		R = self.Cm.getSpace(7)
		R_expected = set([

			CliqueCritique((frozenset([1,3]), 0,2,1,1)),
			CliqueCritique((frozenset([1,3]), 0,2,3,3)),
			CliqueCritique((frozenset([1,3]), 0,2,5,5)),
			CliqueCritique((frozenset([1,2]), 0,2,2,2)),
			CliqueCritique((frozenset([3,2]), 0,2,2,2)),

			CliqueCritique((frozenset([1,3]), 2,7,5,1)),


			CliqueCritique((frozenset([1,2,3]), 1,2,1,2)),
			CliqueCritique((frozenset([1,2,3]), 1,2,2,3)),
			CliqueCritique((frozenset([1,2,3]), 2,7,2,2))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)


	def test_complexexemple_passageorder(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1))),
		    Clique((frozenset([1, 2]),(2,2))),
		    Clique((frozenset([1, 3]),(2,2))),
		    Clique((frozenset([1, 4]),(3,3))),
		    Clique((frozenset([2, 3]),(5,5))),
		    Clique((frozenset([4, 3]),(5,5))),
		    Clique((frozenset([2, 4]),(5,5))),
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)

		self.Cm._nodes = {1: set([2,3,4]), 2: set([1,3,4]), 3: set([1,2,4]),4: set([1,2,3])}
		self.Cm._times = {frozenset([1, 2]): [1,2], frozenset([1, 3]): [2],frozenset([1, 4]): [3],frozenset([2, 3]): [5],frozenset([2, 4]): [5],frozenset([3, 4]): [5]}

		R = self.Cm.getSpace(10)
		R_expected = set([

			CliqueCritique((frozenset([1,2]),0,1,1,1)),
			CliqueCritique((frozenset([1,2]),0,1,2,2)),
			CliqueCritique((frozenset([2,3,4]),0,10 ,5,5)),
			CliqueCritique((frozenset([1,3]),0,10,2,2)),
			CliqueCritique((frozenset([1,4]),0,10,3,3)),
			CliqueCritique((frozenset([1,2]),1,10,2,1)),
			CliqueCritique((frozenset([1,2,3,4]),3,10,2,5))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)



	def test_varianteajoutwhenmax(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1))),
		    Clique((frozenset([3, 1]),(4,4))),
		    Clique((frozenset([2, 3]),(5,5))),
		    Clique((frozenset([3, 1]),(6,6))),
		    Clique((frozenset([2, 1]),(6,6))),
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)

		self.Cm._nodes = {1: set([2,3]), 2: set([1,3]), 3: set([1,2])}
		self.Cm._times = {frozenset([1, 2]): [1,6], frozenset([1, 3]): [4,6],frozenset([2, 3]): [5]}

		R = self.Cm.getSpace(10)
		R_expected = set([
			CliqueCritique((frozenset([1,2]),0,5,1,1)),
			CliqueCritique((frozenset([1,2]),0,5,6,6)),
			CliqueCritique((frozenset([1,3]),0,2,4,4)),
			CliqueCritique((frozenset([2,3]),0,5,5,5)),
			CliqueCritique((frozenset([1,2,3]),5,10,5,5)),
			CliqueCritique((frozenset([1,3]),0,2,6,6)),
			CliqueCritique((frozenset([1,2,3]),4,5,1,5)),
			CliqueCritique((frozenset([1,2,3]),1,5,5,6)),
			CliqueCritique((frozenset([1,2]),5,10,6,1)),
			CliqueCritique((frozenset([1,3]),2,10,6,4))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)



	def test_transfertsuccess_same_td_tp(self):
                sousflot   = list([
		    Clique((frozenset([1, 2]),(1,1))),
		    Clique((frozenset([3, 2]),(3,3))),
		    Clique((frozenset([1, 3]),(3,3))),
		    Clique((frozenset([3, 1]),(4,4))),
		    Clique((frozenset([2, 1]),(4,4))),
		    Clique((frozenset([2, 3]),(4,4))),
		    Clique((frozenset([2, 1]),(9,9))),
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)

		self.Cm._nodes = {1: set([2,3]), 2: set([1,3]), 3: set([1,2])}
		self.Cm._times = {frozenset([1, 2]): [1,4,9], frozenset([1, 3]): [3,4],frozenset([2, 3]): [3,4]}

		R = self.Cm.getSpace(10)
		R_expected = set([
			CliqueCritique((frozenset([1,2]),0,3,1,1)),
			CliqueCritique((frozenset([2,3]),0,1,3,3)),
			CliqueCritique((frozenset([1,2,3]),3,10,4,3)),
			CliqueCritique((frozenset([1,2,3]),0,3,4,4)),
			CliqueCritique((frozenset([1,2]),0,5,9,9)),
			CliqueCritique((frozenset([1,2]),3,5,4,1)),
			CliqueCritique((frozenset([1,2]),5,10,9,1)),
			CliqueCritique((frozenset([1,3]),0,1,3,3)),
			CliqueCritique((frozenset([2,3]),1,3,4,3)),
			CliqueCritique((frozenset([1,3]),1,3,4,3)),
			CliqueCritique((frozenset([1,2,3]),2,3,1,3))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)

	def test_ajoutdeneouddivers(self):
                sousflot   = list([
		    Clique((frozenset([3, 2]),(1,1))),
		    Clique((frozenset([1, 2]),(2,2))),
		    Clique((frozenset([1, 3]),(3,3))),
		    Clique((frozenset([3, 2]),(3,3))),
		    Clique((frozenset([2, 1]),(5,5))),
		])
                for c in sousflot:
                    c._td,c._tp = c._tb,c._tb
                    self.Cm.addClique(c)

                self.Cm._nodes = {1: set([2,3]), 2: set([1,3]), 3: set([1,2])}
		self.Cm._times = {frozenset([1, 2]): [2,5], frozenset([1, 3]): [3],frozenset([2, 3]): [1,3]}

		R = self.Cm.getSpace(10)
		R_expected = set([
			CliqueCritique((frozenset([1,3]),0,3,3,3)),
			CliqueCritique((frozenset([2,3]),0,2,3,3)),
			CliqueCritique((frozenset([2,3]),0,2,1,1)),
			CliqueCritique((frozenset([1,2]),0,3,2,2)),
			CliqueCritique((frozenset([1,2]),0,3,5,5)),
			CliqueCritique((frozenset([1,2,3]),1,3,2,3)),
			CliqueCritique((frozenset([1,2,3]),2,3,3,5)),
			CliqueCritique((frozenset([2,3]),2,10,3,1)),
			CliqueCritique((frozenset([1,2]),3,10,5,2)),
			CliqueCritique((frozenset([1,2,3]),3,10,3,3))
		])
		debug_msg = "\nGot :\n" + str(self.Cm)
		debug_msg += "\nExpected :\n"
		for c in R_expected:
			debug_msg += str(c) + "\n"
		self.assertEqual(R, R_expected, debug_msg)
示例#4
0
    # Update value of omega
    if omega == None or omega < t:
        omega = t

    link = frozenset([u, v])
    time = (t-delta/2, t-delta/2)


    # Populate data structures
    if link not in times:
        times[link] = []
        # this is a new link
        times[link].append((t-delta/2, t+delta/2))
        # this corresponds to a trivial clique
        Cm.addClique(Clique((link, time), set([])))

    else:
        # get last link
        (cur_b, cur_e) = times[link][-1]
        # print(u,v,t, cur_b, cur_e)
        if t-delta/2 <= cur_e:
            # continuation of an existing link, merge
            times[link][-1] = (cur_b, t+delta/2)
        else:
            # this is a new link
            times[link].append((t-delta/2, t+delta/2))
            # this corresponds to a trivial clique
            Cm.addClique(Clique((link, time), set([])))

示例#5
0
	def run(self):
		#graphTypes = ["Link stream", "Multiplex graph", "Simple graph"]
		self.delta = self.dataSet["Delta"]
		self.graph_type = self.dataSet["Input graph type"].getCurrentString()
		self.node_prop = self.dataSet["Node class - link stream"]
		self.one_boolean_property_per_clique = self.dataSet["Boolean property output"]

		#graphType = "Link stream"
		#if graph.getName() in graphTypes:
		#	graphType = graph.getName()
		#node_prop = graph.getStringProperty("__original_node__")
	
		if self.graph_type == "Link stream" or self.graph_type == "Multiplex graph":
			self.time_stamp = self.dataSet["Time double property - Link stream / Multiplex graph"]
			#timeStamp = graph.getDoubleProperty("__timeStamp__")
	
		elif self.graph_type == "Simple graph":
			self.time_stamp = self.dataSet["Time vector property - Simple graph"]
			#timeStamp = graph.getDoubleVectorProperty("__timeStampList__")
			
	
		
		# Initiate
		Cm = CliqueMaster()
		times = dict()
		nodes = dict()
		nb_lines = 0
		
		# Read stream
		# maybe just rewrite an individual accessor for 1 triplet 
		# instead of the whole conversion
		# (needs the edge object for effective return)
	
		for contents in self.tripletGen():
		    #print contents		
		    t = contents[0]
		    u = contents[1]
		    v = contents[2]
		    link = frozenset([u, v])
		    time = (t, t)
		    
		    Cm.addClique(Clique((link, time), set([])))
			
		    # Populate data structures
		    if link not in times:
		        times[link] = []
		    times[link].append(t)
		
		    if u not in nodes:
		        nodes[u] = set()
		
		    if v not in nodes:
		        nodes[v] = set()
		
		    nodes[u].add(v)
		    nodes[v].add(u)
		    nb_lines = nb_lines + 1
	
		Cm._times = times
		Cm._nodes = nodes
		
		tmp_std_err = sys.stderr
		sys.stderr = NullDevice() 
		results = Cm.getDeltaCliques(self.delta)
		sys.stderr = tmp_std_err 
			
		self.mapCliquesBack(results)		
		
		return True
示例#6
0
    link = frozenset([u, v])
    time = (t, t)

    if "34:00" in u:
        top = set([u])
        bot = set([v])
    else:
        top = set([v])
        bot = set([u])
    # print("***")
    # print(top)
    # print(bot)
    # print("***")
    # This a new instance
    if not resurrect:
        Cm.addClique(Clique((top, bot, time), set([])))

    # Populate data structures
    if link not in times:
        times[link] = []
    times[link].append(t)

    if u not in nodes:
        nodes[u] = set()

    if v not in nodes:
        nodes[v] = set()

    nodes[u].add(v)
    nodes[v].add(u)
    nb_lines = nb_lines + 1