def translate_value(session, _segment, _value_node, _value): """Setup value \p _value to \p _value_node @return: Return list of creates sc-elements """ v_node = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) bin_pair = sc_utils.createPairBinaryOrientFull(session, _segment, v_node, _value_node, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, keynodes.common.nrel_value, bin_pair[0], sc.SC_CONST) res = [v_node, a, keynodes.common.nrel_value] res.extend(bin_pair) vu_node = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, v_node, vu_node, sc.SC_CONST) res.extend([vu_node, a]) # make identification idtf_node = sc_utils.createNodeSheaf(session, _segment, sc.SC_CONST) bin_pair = sc_utils.createPairBinaryOrientFull(session, _segment, idtf_node, vu_node, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, keynodes.common.nrel_identification, bin_pair[0], sc.SC_CONST) res.extend([idtf_node, a, keynodes.common.nrel_identification]) res.extend(bin_pair) # set value val = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) sc_utils.setContentReal(session, _segment, val, _value) a = sc_utils.createPairPosPerm(session, _segment, idtf_node, val, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(session, _segment, keynodes.common.rrel_dec_number, a, sc.SC_CONST) res.extend([val, a, a1, keynodes.common.rrel_dec_number]) return res
def translate_value(_segment, _value_node, _value): session = core.Kernel.session() v_node = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) sheaf = sc_utils.createPairBinaryOrient(session, _segment, v_node, _value_node, sc.SC_CONST) sc_utils.createPairPosPerm(session, _segment, keynodes.common.nrel_value, sheaf, sc.SC_CONST) vu_node = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) a = sc_utils.createPairPosPerm(session, _segment, v_node, vu_node, sc.SC_CONST) sc_utils.createPairPosPerm(session, _segment, geom_keynodes.Relation.rrel_cm2, a, sc.SC_CONST) # make identification idtf_node = sc_utils.createNodeSheaf(session, _segment, sc.SC_CONST) sheaf = sc_utils.createPairBinaryOrient(session, _segment, idtf_node, vu_node, sc.SC_CONST) sc_utils.createPairPosPerm(session, _segment, keynodes.common.nrel_identification, sheaf, sc.SC_CONST) # set value val = sc_utils.createNodeElement(session, _segment, sc.SC_CONST) sc_utils.setContentReal(session, _segment, val, _value) a = sc_utils.createPairPosPerm(session, _segment, idtf_node, val, sc.SC_CONST) sc_utils.createPairPosPerm(session, _segment, keynodes.common.rrel_dec_number, a, sc.SC_CONST)
def makeScGraph(self): """Construct sc representation of netwokX graph @return: Return sc_addr of structure, that include all elements of generated sc-graph construction """ assert self.graphSc is None assert self.graphNx is not None _session = core.Kernel.session() result = sc_utils.createNode(_session, self.segment, sc.SC_CONST, "element") self.graphSc = sc_utils.createNode(_session, self.segment, sc.SC_CONST, "struct") a = sc_utils.createPairPosPerm(_session, self.segment, graph_keynodes.Common.graph, self.graphSc, sc.SC_CONST) res_list = [self.graphSc, a] nx2sc = {} # create all nodes for node in self.graphNx.nodes(): sc_node = sc_utils.createNode(_session, self.segment, sc.SC_CONST, "element") nx2sc[node] = sc_node # append into graph with vertex attribute a = sc_utils.createPairPosPerm(_session, self.segment, self.graphSc, sc_node, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(_session, self.segment, graph_keynodes.Common.rrel_vertex, a, sc.SC_CONST) res_list.extend([sc_node, a, a1]) # create edges for edge in self.graphNx.edges(): sc_edge = sc_utils.createNodeSheaf(_session, self.segment, sc.SC_CONST) # append into graph with edge attribute a = sc_utils.createPairPosPerm(_session, self.segment, self.graphSc, sc_edge, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(_session, self.segment, graph_keynodes.Common.rrel_edge, a, sc.SC_CONST) # setup begin and end objects beg, end = edge a2 = sc_utils.createPairPosPerm(_session, self.segment, sc_edge, nx2sc[beg], sc.SC_CONST) a3 = sc_utils.createPairPosPerm(_session, self.segment, sc_edge, nx2sc[end], sc.SC_CONST) res_list.extend([sc_edge, a, a1, a2, a3]) res_list.extend([graph_keynodes.Common.rrel_edge, graph_keynodes.Common.rrel_vertex, graph_keynodes.Common.graph ]) # create result set for r in res_list: sc_utils.createPairPosPerm(_session, self.segment, result, r, sc.SC_CONST) return result
def translate_impl(self, _input, _output): """Translator implementation """ # translating objects objs = objects.ScObject._sc2Objects(_input) assert len(objs) > 0 sheet = objs[0] assert type(sheet) is objects.ObjectSheet segment = sheet.getTmpSegment() errors = [] session = core.Kernel.session() # getting objects, that need to be translated trans_obj = [] for obj in sheet.getChilds(): _addr = obj._getScAddr() if _addr is None: trans_obj.append(obj) # remove old translation data else: if _addr.seg == segment: obj._setScAddr(None) #session.erase_el(_addr) trans_obj.append(obj) # sort objects to nodes and edges verticies = [] edges = [] for obj in trans_obj: if isinstance(obj, graph_objects.GraphVertex): verticies.append(obj) elif isinstance(obj, graph_objects.GraphLink): edges.append(obj) graph = sc_utils.createNode(session, segment, sc.SC_CONST, "struct") sc_utils.createPairPosPerm(session, segment, graph_keynodes.Common.graph, graph, sc.SC_CONST) # create all nodes for node in verticies: sc_node = sc_utils.createNode(session, segment, sc.SC_CONST, "element") node._setScAddr(sc_node) # append into graph with vertex attribute a = sc_utils.createPairPosPerm(session, segment, graph, sc_node, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(session, segment, graph_keynodes.Common.rrel_vertex, a, sc.SC_CONST) # create edges for edge in edges: sc_edge = sc_utils.createNodeSheaf(session, segment, sc.SC_CONST) # append into graph with edge attribute a = sc_utils.createPairPosPerm(session, segment, graph, sc_edge, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(session, segment, graph_keynodes.Common.rrel_edge, a, sc.SC_CONST) # setup begin and end objects beg = edge.getBegin()._getScAddr() end = edge.getEnd()._getScAddr() a2 = sc_utils.createPairPosPerm(session, segment, sc_edge, beg, sc.SC_CONST) a3 = sc_utils.createPairPosPerm(session, segment, sc_edge, end, sc.SC_CONST) edge._setScAddr(sc_edge) print "Translation errors:" for obj, error in errors: print error return errors
def makeScGraph(self): """Construct sc representation of netwokX graph @return: Return sc_addr of structure, that include all elements of generated sc-graph construction """ assert self.graphSc is None assert self.graphNx is not None _session = core.Kernel.session() result = sc_utils.createNode(_session, self.segment, sc.SC_CONST, "element") self.graphSc = sc_utils.createNode(_session, self.segment, sc.SC_CONST, "struct") a = sc_utils.createPairPosPerm(_session, self.segment, graph_keynodes.Common.graph, self.graphSc, sc.SC_CONST) res_list = [self.graphSc, a] nx2sc = {} # create all nodes for node in self.graphNx.nodes(): sc_node = sc_utils.createNode(_session, self.segment, sc.SC_CONST, "element") nx2sc[node] = sc_node # append into graph with vertex attribute a = sc_utils.createPairPosPerm(_session, self.segment, self.graphSc, sc_node, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(_session, self.segment, graph_keynodes.Common.rrel_vertex, a, sc.SC_CONST) res_list.extend([sc_node, a, a1]) # create edges for edge in self.graphNx.edges(): sc_edge = sc_utils.createNodeSheaf(_session, self.segment, sc.SC_CONST) # append into graph with edge attribute a = sc_utils.createPairPosPerm(_session, self.segment, self.graphSc, sc_edge, sc.SC_CONST) a1 = sc_utils.createPairPosPerm(_session, self.segment, graph_keynodes.Common.rrel_edge, a, sc.SC_CONST) # setup begin and end objects beg, end = edge a2 = sc_utils.createPairPosPerm(_session, self.segment, sc_edge, nx2sc[beg], sc.SC_CONST) a3 = sc_utils.createPairPosPerm(_session, self.segment, sc_edge, nx2sc[end], sc.SC_CONST) res_list.extend([sc_edge, a, a1, a2, a3]) res_list.extend([ graph_keynodes.Common.rrel_edge, graph_keynodes.Common.rrel_vertex, graph_keynodes.Common.graph ]) # create result set for r in res_list: sc_utils.createPairPosPerm(_session, self.segment, result, r, sc.SC_CONST) return result