Beispiel #1
0
    def lookup_nodes(self, node_type, ids):
        """ Get all the node properties.
    """
        req = pywrap.new_lookup_nodes_req(node_type)
        pywrap.set_lookup_nodes_req(req, ids)

        res = pywrap.new_lookup_nodes_res()
        raise_exception_on_not_ok_status(self._client.lookup_nodes(req, res))

        decoder = self.get_node_decoder(node_type)
        weights = pywrap.get_node_weights_res(res) \
          if decoder.weighted else None
        labels = pywrap.get_node_labels_res(res) \
          if decoder.labeled else None
        int_attrs = pywrap.get_node_int_attr_res(res) \
          if decoder.attributed else None
        float_attrs = pywrap.get_node_float_attr_res(res) \
          if decoder.attributed else None
        string_attrs = pywrap.get_node_string_attr_res(res) \
          if decoder.attributed else None
        int_attrs, float_attrs, string_attrs = \
          decoder.format_attrs(int_attrs, float_attrs, string_attrs)

        pywrap.del_lookup_nodes_res(res)
        pywrap.del_lookup_nodes_req(req)

        return Values(int_attrs=int_attrs,
                      float_attrs=float_attrs,
                      string_attrs=string_attrs,
                      weights=weights,
                      labels=labels,
                      graph=self)
Beispiel #2
0
    def lookup_edges(self, edge_type, src_ids, edge_ids):
        """ Get all the edge properties.
    """
        batch_size = src_ids.flatten().size
        if batch_size != edge_ids.flatten().size:
            raise ValueError("src_ids and edge_ids for lookup edges must "
                             "be same, got {} and {}".format(
                                 batch_size,
                                 edge_ids.flatten().size))

        req = pywrap.new_lookup_edges_req(edge_type)
        pywrap.set_lookup_edges_req(req, src_ids, edge_ids)

        res = pywrap.new_lookup_edges_res()
        status = self._client.lookup_edges(req, res)
        if status.ok():
            decoder = self.get_edge_decoder(edge_type)
            weights = pywrap.get_edge_weights_res(res) \
              if decoder.weighted else None
            labels = pywrap.get_edge_labels_res(res) \
              if decoder.labeled else None
            int_attrs = pywrap.get_edge_int_attr_res(res) \
              if decoder.attributed else None
            float_attrs = pywrap.get_edge_float_attr_res(res) \
              if decoder.attributed else None
            string_attrs = pywrap.get_edge_string_attr_res(res) \
              if decoder.attributed else None
            int_attrs, float_attrs, string_attrs = \
              decoder.format_attrs(int_attrs, float_attrs, string_attrs)

        pywrap.del_lookup_edges_res(res)
        pywrap.del_lookup_edges_req(req)
        raise_exception_on_not_ok_status(status)

        return Values(int_attrs=int_attrs,
                      float_attrs=float_attrs,
                      string_attrs=string_attrs,
                      weights=weights,
                      labels=labels,
                      graph=self)