def start_selecting(self, info): svg = self.svg side = self.default_side (x, y) = self.event_position(info) self.select_start = dGraph.pos(x,y) self.select_end = dGraph.pos(x+side, y+side) if self.selection_id is None: # create a selection rectangle svg.rect(SELECTION, x, y, side, side, "black", style_dict={"fill-opacity": 0.2}) self.selection_id = SELECTION else: atts = {"x": x, "y": y, "width": side, "height": side} svg.change_element(self.selection_id, atts) svg.send_commands() self.selecting = True
def iGraphLayout(G, name, fit=1000): iG = asIGraph(G) index_to_name = {i: n.attributes()["name"] for (i, n) in enumerate(iG.vs)} L = iG.layout(name) L.fit_into([0, 0, fit, fit]) D = {index_to_name[i]: pos(xy[0], xy[1]) for (i,xy) in enumerate(L)} return D
def load(filename): with open(filename) as f: jlayout = json.load(f) # Lower case gene names and array positions. layout = {k.lower(): pos(*jlayout[k]) for k in jlayout} return layout
def __init__(self): self.title_html = widgets.HTML("Gene network") self.zoom_button = self.make_button("zoom", self.zoom_click, True) self.trim_button = self.make_button("trim", self.trim_click) self.layout_button = self.make_button("layout", self.layout_click) self.expand_button = self.make_button("expand", self.expand_click) self.regulates_button = self.make_button("regulates", self.regulates_click) self.targeted_button = self.make_button("targeted by", self.targeted_click) self.focus_button = self.make_button("focus", self.focus_click) self.restore_button = self.make_button("restore", self.restore_click) self.ignore_button = self.make_button("ignore", self.ignore_click) self.nodes_button = self.make_button("list nodes", self.nodes_click) self.edges_button = self.make_button("list edges", self.edges_click) self.layout_dropdown = self.make_layout_dropdown() self.labels_button = self.make_checkbox("labels", self.labels_click) self.colors_button = self.make_checkbox("colors", self.colors_click) self.draw_button = self.make_button("draw", self.draw_click) # Assemble the layout self.threshhold_assembly = self.make_threshhold_assembly() self.pattern_assembly = self.make_pattern_assembly() self.info_area = widgets.Textarea(description="status") self.colors_assembly = self.make_colors_assembly() self.dialog = self.make_dialog() self.colors_assembly.visible = False svg = self.svg = canvas.SVGCanvasWidget() sslider = self.size_slider = widgets.FloatSlider(value=500, min=500, max=2000, step=10, readout=False, width="150px") self.depth_slider = widgets.IntSlider( description="depth", value=0, min=0, max=5, width="50px") traitlets.directional_link((sslider, "value"), (svg, "width")) traitlets.directional_link((sslider, "value"), (svg, "height")) #self.svg = widgets.Button(description="dummy button") svg.add_style("background-color", "white") svg.watch_event = "click mousedown mouseup mousemove mouseover" svg.default_event_callback = self.svg_callback left_panel = [self.title_html, self.svg, self.threshhold_assembly, self.pattern_assembly, self.info_area] self.vertical = widgets.VBox(children=left_panel) buttons = [self.zoom_button, self.focus_button, self.ignore_button, self.trim_button, self.expand_button, self.regulates_button, self.targeted_button, self.layout_dropdown, self.layout_button, self.nodes_button, self.edges_button, self.labels_button, self.restore_button, self.size_slider, self.draw_button, self.depth_slider, self.colors_button, self.colors_assembly, self.dialog] self.inputs = widgets.VBox(children=buttons) self.assembly = widgets.HBox(children=[self.inputs, self.vertical]) self.select_start = None self.select_end = None self.selection_id = None self.selecting = False self.data_graph = None self.data_positions = None self.display_positions = None self.display_graph = None self.selected_nodes = None self.svg_origin = dGraph.pos(0, 0) self.moving_node = None
def event_position(self, info): "Get the position array for an event info descriptor." x = info.get("svgX") y = info.get("svgY") return dGraph.pos(x, y)