Example #1
0
    def networkx2cytoscape(self, g):
        pos = nx.drawing.nx_agraph.pygraphviz_layout(g, prog='dot', args="-Grankdir=LR")
        g_cy = cy.network.create_from_networkx(g)
        view_id_list = g_cy.get_views()
        view1 = g_cy.get_view(view_id_list[0], format='view')

        # Switch current visual style to a simple one...
        minimal_style = cy.style.create('Minimal')
        cy.style.apply(style=minimal_style, network=g_cy)

        node_name2id = util.name2suid(g_cy, 'node')
        edge_name2id = util.name2suid(g_cy, 'edge')

        node_x_values = {node_name2id[i]: pos[i][0] for i in pos}
        node_y_values = {node_name2id[i]: pos[i][1] for i in pos}

        node_label_values = {node_name2id[i[0]]: i[1]['label'] for i in g.nodes(data=True)}
        node_color_values = {node_name2id[i[0]]: i[1]['background-color'] for i in g.nodes(data=True)}
        edge_source_arrow_head = {edge_name2id[str(i[0]) + ',' + str(i[1])]: i[2]['source-arrow-shape'] for i in
                                  g.edges(data=True)}
        edge_target_arrow_head = {edge_name2id[str(i[0]) + ',' + str(i[1])]: i[2]['target-arrow-shape'] for i in
                                  g.edges(data=True)}

        view1.update_node_views(visual_property='NODE_X_LOCATION', values=node_x_values)
        view1.update_node_views(visual_property='NODE_Y_LOCATION', values=node_y_values)

        view1.update_node_views(visual_property='NODE_LABEL', values=node_label_values)
        view1.update_node_views(visual_property='NODE_FILL_COLOR', values=node_color_values)
        view1.update_edge_views(visual_property='EDGE_SOURCE_ARROW_SHAPE', values=edge_source_arrow_head)
        view1.update_edge_views(visual_property='EDGE_TARGET_ARROW_SHAPE', values=edge_target_arrow_head)
        return
Example #2
0
 def test_name2suid(self):
     print('\n---------- name2suid tests start -----------\n')
     locations = ['http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif']
     network = self.client.network.create_from(locations)
     node_count = len(network.get_nodes())
     edge_count = len(network.get_edges())
     result = NetworkUtil.name2suid(network, obj_type='node')
     edge_result = NetworkUtil.name2suid(network, obj_type='edge')
     self.assertEqual(node_count, len(result))
     self.assertEqual(edge_count, len(edge_result))
 def test_name2suid(self):
     print('\n---------- name2suid tests start -----------\n')
     locations = [
         'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif'
     ]
     network = self.client.network.create_from(locations)
     node_count = len(network.get_nodes())
     edge_count = len(network.get_edges())
     result = NetworkUtil.name2suid(network, obj_type='node')
     edge_result = NetworkUtil.name2suid(network, obj_type='edge')
     self.assertEqual(node_count, len(result))
     self.assertEqual(edge_count, len(edge_result))
Example #4
0
    def __init__(self, graph, layout="attributes-layout", style='Directed'):
        # name='FromMAGINE'):
        # force-directed
        # attributes-layout

        self.graph = graph
        self.cy = CyRestClient()
        self.cy.session.delete()
        self.cy.layout2 = LayoutClient()
        self.style = None
        self.edge_name2id = None
        self.node_name2id = None
        self.g_cy = None
        self.view1 = None
        for n, (i, j) in enumerate(self.graph.edges()):
            self.graph[i][j]['name'] = '{},{}'.format(i, j)
        self.g_cy = self.cy.network.create_from_networkx(self.graph)

        time.sleep(2)
        view_id_list = self.g_cy.get_views()
        self.view1 = self.g_cy.get_view(view_id_list[0], format='view')

        # Marquee Directed Simple
        self.style = self.cy.style.create(style)
        # self.style = self.cy.style.create('Marquee')

        options = {
            'NODE_LABEL_FONT_SIZE': 24,
            'EDGE_WIDTH': 2,
            'EDGE_TRANSPARENCY': '150',
            # 'NETWORK_HEIGHT'           : '2800',
            # 'NETWORK_WIDTH'            : '2800',
            'NODE_LABEL_COLOR': 'black',
            'NODE_FILL_COLOR': 'red',
            'NETWORK_BACKGROUND_PAINT': '#00FFFFFF',
            'NODE_SIZE': 80,
            # 'NODE_LABEL_POSITION': 'C,C,c,0.00,-60.00',
            'NETWORK_CENTER_X_LOCATION': 0.0,
            'NETWORK_CENTER_Y_LOCATION': 0.0,
        }

        self.style.update_defaults(options)
        if layout == 'attributes-layout':
            self.cy.layout2.apply(name=layout,
                                  network=self.g_cy,
                                  params={'column': 'color'})
        else:
            self.cy.layout2.apply(name=layout, network=self.g_cy)
        self.node_name2id = util.name2suid(self.g_cy, 'node')
        self.edge_name2id = util.name2suid(self.g_cy, 'edge')
Example #5
0
    def __update_views(self,
                       visual_property,
                       values,
                       object_type=None,
                       key_type='suid'):
        if key_type is 'name':
            name2suid = NetworkUtil.name2suid(self.__network)

        body = []
        for key in values.keys():
            if key_type is 'name':
                suid = name2suid[key]
                if suid is None:
                    continue
            else:
                suid = key

            new_value = self.__create_new_value(suid, visual_property,
                                                values[key])
            print(type(suid))

            body.append(new_value)

        requests.put(self.__url + '/' + object_type,
                     json=body,
                     headers=HEADERS)
Example #6
0
    def __update_views(self,
                       visual_property,
                       values,
                       object_type=None,
                       key_type='suid'):
        if key_type == 'name':
            name2suid = NetworkUtil.name2suid(self.__network)

        body = []
        for key in values.keys():
            if key_type == 'name':
                try:
                    suid = name2suid[key]
                except KeyError:
                    continue
            else:
                suid = key

            new_value = self.__create_new_value(suid, visual_property,
                                                values[key])

            body.append(new_value)

        res = requests.put(self.__url + '/' + object_type,
                           json=body,
                           headers=HEADERS)
        check_response(res)
Example #7
0
    def graph_connections(self):
        # Auromatically initialize graph if it's not initalized already
        if self.graph is False:
            self._setup_graph()

        g_cy = self.cy.network.create_from_networkx(self.g)
        self.cy.style.apply(style=self.CY_STYLE, network=g_cy)
        self.cy.layout.apply(network=g_cy)
        self.cy.layout.fit(network=g_cy)

        view_id_list = g_cy.get_views()
        view = g_cy.get_view(view_id_list[0], format="view")

        idmap = util.name2suid(g_cy)
        shape_dict = {}
        color_dict = {}
        border_dict = {}
        for n_id in idmap.values():
            shape_dict[n_id] = "ellipse"
            color_dict[n_id] = "white"
            border_dict[n_id] = "#FF56E9"


        view.update_node_views(visual_property="NODE_SHAPE", values=shape_dict)
        view.update_node_views(visual_property="NODE_FILL_COLOR", values=color_dict)
        view.update_node_views(visual_property="NODE_BORDER_PAINT", values=border_dict)
Example #8
0
    def __update_views(self, visual_property, values,
                       object_type=None, key_type='suid'):
        if key_type is 'name':
            name2suid = NetworkUtil.name2suid(self.__network)

        body = []
        for key in values.keys():
            if key_type is 'name':
                suid = name2suid[key]
                if suid is None:
                    continue
            else:
                suid = key

            new_value = self.__create_new_value(suid, visual_property,
                                                values[key])
            body.append(new_value)
        requests.put(self.__url + '/' + object_type, data=json.dumps(body), headers=HEADERS)