Пример #1
0
    def remove_node_presence(self,node,time):
        """
        Remove node and its interactions over the period

        :param node: node to remove
        :param time: a period, couple (start, stop) or an interval
        """
        if not isinstance(time,Intervals):
            time= Intervals(time)


        if self._graph.has_node(node):
            self._graph.nodes()[node]["t"]= self._graph.nodes()[node]["t"]-time
            if self._graph.nodes()[node]["t"].duration()==0:
                self._graph.remove_node(node)

            if self._start in time or self._end in time or time.end()==self._end:
                new_max = -math.inf
                new_min = math.inf
                for k,v in self.node_presence().items():
                    new_max = max(new_max,v.end())
                    new_min = min(new_min,v.start())

                self._start = new_min
                self._end = new_max
Пример #2
0
    def add_node_presence(self, n, time):
        """
        Add presence for a node for a period

        :param n: node
        :param time: a period, couple (start, stop) or an interval
        """

        if not isinstance(time, Intervals):
            time = Intervals(time)

        if not self._graph.has_node(n):
            self._graph.add_node(n, t=time)
        else:
            self._graph.nodes[n]["t"] += time

        self._start = min(self._start, time.start())
        self._end = max(self._end, time.end())
Пример #3
0
    def add_interaction(self, u, v, time):
        """
        Add an interaction between nodes u and v at time time

        :param u: first node
        :param b: second node
        :param time: pair (start,end) or Intervals
        :return:
        """

        if not isinstance(time, Intervals):
            time = Intervals(time)
        self.add_node_presence(u, time)
        self.add_node_presence(v, time)

        self._add_interaction_safe(u, v, time)

        start = time.start()
        end = time.end()
        self._start = min(self._start, start)
        self._end = max(self._end, end)