Ejemplo n.º 1
0
 def visit_LoadVar(self, node):
     label = node.name
     node_id = self.node_id()
     node_label = "  LoadVar(" + str(label) + ")"
     node_text = get_node_text(node_id, node_label)
     self.dot.node(node_id, node_text)
     return node_id
Ejemplo n.º 2
0
 def visit_Statement(self, node):
     node_id = self.node_id()
     node_label = "  stmt"
     node_text = get_node_text(node_id, node_label)
     stmt = self.visit(node.statement)
     self.dot.edge(node_id, stmt)
     self.dot.node(node_id, node_text)
     return node_id
Ejemplo n.º 3
0
 def visit_GroupParent(self, node):  #obsoleto
     node_id = self.node_id()
     node_label = " Group "
     node_text = get_node_text(node_id, node_label)
     expr = self.visit(node.expr)
     self.dot.edge(node_id, expr)
     self.dot.node(node_id, node_text)
     return node_id
Ejemplo n.º 4
0
 def visit_PrintValue(self, node):  #obsoleto
     node_id = self.node_id()
     node_label = "  Print "
     node_text = get_node_text(node_id, node_label)
     value_id = self.visit(node.value)
     self.dot.edge(node_id, value_id)
     self.dot.node(node_id, node_text)
     return node_id
Ejemplo n.º 5
0
 def visit_Expression(self, node):
     node_id = self.node_id()
     node_label = "  expr"
     node_text = get_node_text(node_id, node_label)
     expr = self.visit(node.expression)
     self.dot.edge(node_id, expr)
     self.dot.node(node_id, node_text)
     return node_id
Ejemplo n.º 6
0
    def visit_UnaryOp(self, node):
        node_id = self.node_id()
        node_label = "  UnaryOp (" + node.op + ") "
        node_text = get_node_text(node_id, node_label)

        left_id = self.visit(node.right)
        self.dot.edge(node_id, left_id)
        self.dot.node(node_id, node_text)
        return node_id
Ejemplo n.º 7
0
    def visit_ReturnValue(self, node):
        node_id = self.node_id()
        node_label = " Return "
        node_text = get_node_text(node_id, node_label)
        self.dot.node(node_id, node_text)

        value_id = self.visit(node.value)
        self.dot.edge(node_id, value_id)
        return node_id
Ejemplo n.º 8
0
 def visit_BinaryOp(self, node):
     node_id = self.node_id()
     node_label = str(node.op)
     node_text = get_node_text(node_id, node_label)
     self.dot.node(node_id, node_text)
     l = self.visit(node.left)
     r = self.visit(node.right)
     self.dot.edge(node_id, l)
     self.dot.edge(node_id, r)
     return node_id
Ejemplo n.º 9
0
 def visit_PrList(self, node):
     node_id = self.node_id()
     node_label = "Print"
     node_text = get_node_text(node_id, node_label)
     self.dot.node(node_id, node_text)
     for obj in node.prlist:
         if not (node.__class__.__name__ == "Empty"):
             list_obj = self.visit(obj)
             self.dot.edge(node_id, list_obj)
     return node_id
Ejemplo n.º 10
0
 def visit_ArgList(self, node):
     node_id = self.node_id()
     node_label = "Args"
     node_text = get_node_text(node_id, node_label)
     self.dot.node(node_id, node_text)
     for node in node.arglist:
         if not (node.__class__.__name__ == "Empty"):
             list_obj = self.visit(node)
             self.dot.edge(node_id, list_obj)
     return node_id
Ejemplo n.º 11
0
    def visit_Literal(self, node):
        label = node.value
        node_id = self.node_id()
        node_label = str(label)
        node_text = get_node_text(node_id, node_label)

        if label == '\n':
            label = 'NEWLINE'
        self.dot.node(node_id, node_text)
        return node_id
Ejemplo n.º 12
0
    def visit_StatementList(self, node):
        node_id = self.node_id()
        node_label = "Statements"
        node_text = get_node_text(node_id, node_label)
        self.dot.node(node_id, node_text)
        for node in node.statements:
            if not (node.__class__.__name__ == "Empty"):
                list_obj = self.visit(node)

                self.dot.edge(node_id, list_obj)
        return node_id
Ejemplo n.º 13
0
    def visit_ProgList(self, node):
        node_id = self.node_id()
        node_label = "Program"
        node_text = get_node_text(node_id, node_label)
        self.dot.node(node_id, node_text)

        for node in node.proglist:
            if not (node.__class__.__name__ in ["Empty", "Comment"]):
                list_obj = self.visit(node)
                self.dot.edge(node_id, list_obj)
        return node_id
Ejemplo n.º 14
0
    def visit_Calls(self, node):
        node_id = self.node_id()
        node_label = " Calls " + str(node.n_params)
        node_text = get_node_text(node_id, node_label)
        self.dot.node(node_id, node_text)
        function_id = self.visit(node.function)
        arglist_id = self.visit(node.arglist)

        self.dot.edge(node_id, function_id)
        self.dot.edge(node_id, arglist_id)
        return node_id
Ejemplo n.º 15
0
 def visit_FuncDef(self, node):
     node_id = self.node_id()
     node_label = " Def " + str(node.n_params)
     node_text = get_node_text(node_id, node_label)
     self.dot.node(node_id, node_text)
     function_id = self.visit(node.function)
     formals_id = self.visit(node.formals)
     stmt_id = self.visit(node.stmt)
     self.dot.edge(node_id, function_id)
     self.dot.edge(node_id, formals_id)
     self.dot.edge(node_id, stmt_id)
     return node_id
Ejemplo n.º 16
0
    def visit_IfStatement(self, node):
        node_id = self.node_id()
        node_label = " If "
        node_text = get_node_text(node_id, node_label)
        self.dot.node(node_id, node_text)

        cond_id = self.visit(node.cond)
        then_stmt_id = self.visit(node.then_stmt)

        else_stmt = node.else_stmt

        if else_stmt:
            else_stmt_id = self.visit(node.else_stmt)
            self.dot.edge(node_id, else_stmt_id)

        self.dot.edge(node_id, cond_id)
        self.dot.edge(node_id, then_stmt_id)
        return node_id
Ejemplo n.º 17
0
    def visit_SymTab(self, node):
        node_id = self.node_id()
        node_label = node.name
        node_text = get_node_text(node_id, node_label)
        node_text += "\n-------------\n"
        for p in node.entries.keys():
            node_text += p + "\n"
        # if len(node.errors)>0:
        #     print "===========Errores Semanticos==============="
        #     for error in node.errors:
        #         print error
        # print node_text

        self.dot.node(node_id, node_text)

        for child in node.children:
            child_id = self.visit(child)
            self.dot.edge(node_id, child_id)

        return node_id
Ejemplo n.º 18
0
def get_graph_plot_colored_by_election_results(pipeline, year, df, data,
                                               keep_layout):
    '''Function make plot of US with counties colored by winner of election
    
    Parameters
    ----------
    pipe : MapperPipeline
        The Mapper pipeline to compute the mapper-graph
    year : np.int
        Color by election results from year `year`
    df : pandas data frame
        Data frame containing info of winner per county, year of election and
        number of electors in county
    data : ndarray (n_samples x n_dim)
        Data used for mapper
    keep_layout : list of two dicts, with keys 'x', 'y', and such that values are 1d arrays
        Positions of lines (keep_layout[0]) and markers respectively (keep_layout[1])
        for the mapper graph

    Returns
    -------
    fig: igraph object
    '''

    node_elements = pipeline.fit_transform(
        data)['node_metadata']['node_elements']

    # set node color to percentage of number of electors won by republicans
    node_color = np.array([
        100 * (df[df['year'] == year]['winner'].values *
               df[df['year'] == year]['n_electors'].values)[x].sum() /
        df[df['year'] == year]['n_electors'].values[x].sum()
        for x in node_elements
    ])

    data_cols = utils.get_cols_for_mapper()
    columns_to_color = dict(zip(data_cols, range(len(data_cols))))

    node_text = utils.get_node_text(
        dict(zip(range(len(node_elements)), node_elements)),
        utils.get_n_electors(
            node_elements,
            df[df['year'] == year]['n_electors'].reset_index(drop=True)),
        node_color, 'Percentage of Electors Won by Republicans')

    plotly_kwargs = {
        'node_trace_marker_colorscale':
        'RdBu',
        'node_trace_marker_reversescale':
        True,
        'node_trace_marker_cmin':
        0,
        'node_trace_marker_cmax':
        100,
        'node_trace_text':
        node_text,
        'node_trace_marker_size':
        utils.get_n_electors(
            node_elements,
            df[df['year'] == year]['n_electors'].reset_index(drop=True)),
        'node_trace_marker_sizeref':
        .5 / max(
            utils.get_n_electors(
                node_elements,
                df[df['year'] == year]['n_electors'].reset_index(drop=True)))
    }

    fig = plot_static_mapper_graph(pipeline,
                                   data,
                                   'kk',
                                   layout_dim=2,
                                   node_color_statistic=node_color,
                                   color_by_columns_dropdown=True,
                                   plotly_kwargs=plotly_kwargs)
    if keep_layout is not None:
        fig._data[0].update(keep_layout[0])
        fig._data[1].update(keep_layout[1])
    return fig
Ejemplo n.º 19
0
def _parse_xml_metadata(element):
    """Extract metadata from an xml.dom.Element object (ELEMENT_NODE)

    The "<metadata>" tag has a lot of metadatas about the epub this method
    inspect and store into object attributes (like "title" or "creator").
    """
    metadata = Metadata()

    for node in element.getElementsByTagName('dc:title'):
        metadata.add_title(get_node_text(node), node.getAttribute('xml:lang'))

    for node in element.getElementsByTagName('dc:creator'):
        metadata.add_creator(get_node_text(node),
                             node.getAttribute('opf:role'),
                             node.getAttribute('opf:file-as'))

    for node in element.getElementsByTagName('dc:subject'):
        metadata.add_subject(get_node_text(node))

    for node in element.getElementsByTagName('dc:description'):
        metadata.description = get_node_text(node)

    # Custom change to support description in some books not starting with dc:
    if metadata.description in [None, ""]:
        for node in element.getElementsByTagName('description'):
            metadata.description = get_node_text(node)

    for node in element.getElementsByTagName('dc:publisher'):
        metadata.publisher = get_node_text(node)

    for node in element.getElementsByTagName('dc:contributor'):
        metadata.add_contributor(get_node_text(node),
                                 node.getAttribute('opf:role'),
                                 node.getAttribute('opf:file-as'))

    for node in element.getElementsByTagName('dc:date'):
        metadata.add_date(get_node_text(node), node.getAttribute('opf:event'))

    for node in element.getElementsByTagName('dc:type'):
        metadata.dc_type = get_node_text(node)

    for node in element.getElementsByTagName('dc:format'):
        metadata.format = get_node_text(node)

    for node in element.getElementsByTagName('dc:identifier'):
        metadata.add_identifier(get_node_text(node), node.getAttribute('id'),
                                node.getAttribute('opf:scheme'))

    for node in element.getElementsByTagName('dc:source'):
        metadata.source = get_node_text(node)

    for node in element.getElementsByTagName('dc:language'):
        metadata.add_language(get_node_text(node))

    for node in element.getElementsByTagName('dc:relation'):
        metadata.relation = get_node_text(node)

    for node in element.getElementsByTagName('dc:coverage'):
        metadata.coverage = get_node_text(node)

    for node in element.getElementsByTagName('dc:rights'):
        metadata.right = get_node_text(node)

    for node in element.getElementsByTagName('meta'):
        metadata.add_meta(node.getAttribute('name'),
                          node.getAttribute('content'))

    return metadata
Ejemplo n.º 20
0
 def visit_Empty(self, node):
     node_id = self.node_id()
     node_label = "Empty"
     node_text = get_node_text(node_id, node_label)
     self.dot.node(node_id, node_text)
     return node_id
Ejemplo n.º 21
0
def _parse_xml_metadata(element):
    """Extract metadata from an xml.dom.Element object (ELEMENT_NODE)

    The "<metadata>" tag has a lot of metadatas about the epub this method
    inspect and store into object attributes (like "title" or "creator").
    """
    metadata = Metadata()

    for node in element.getElementsByTagName('dc:title'):
        metadata.add_title(get_node_text(node),
                           node.getAttribute('xml:lang'))

    for node in element.getElementsByTagName('dc:creator'):
        metadata.add_creator(get_node_text(node),
                             node.getAttribute('opf:role'),
                             node.getAttribute('opf:file-as'))

    for node in element.getElementsByTagName('dc:subject'):
        metadata.add_subject(get_node_text(node))

    for node in element.getElementsByTagName('dc:description'):
        metadata.description = get_node_text(node)

    for node in element.getElementsByTagName('dc:publisher'):
        metadata.publisher = get_node_text(node)

    for node in element.getElementsByTagName('dc:contributor'):
        metadata.add_contributor(get_node_text(node),
                                 node.getAttribute('opf:role'),
                                 node.getAttribute('opf:file-as'))

    for node in element.getElementsByTagName('dc:date'):
        metadata.add_date(get_node_text(node),
                          node.getAttribute('opf:event'))

    for node in element.getElementsByTagName('dc:type'):
        metadata.dc_type = get_node_text(node)

    for node in element.getElementsByTagName('dc:format'):
        metadata.format = get_node_text(node)

    for node in element.getElementsByTagName('dc:identifier'):
        metadata.add_identifier(get_node_text(node),
                            node.getAttribute('id'),
                            node.getAttribute('opf:scheme'))

    for node in element.getElementsByTagName('dc:source'):
        metadata.source = get_node_text(node)

    for node in element.getElementsByTagName('dc:language'):
        metadata.add_language(get_node_text(node))

    for node in element.getElementsByTagName('dc:relation'):
        metadata.relation = get_node_text(node)

    for node in element.getElementsByTagName('dc:coverage'):
        metadata.coverage = get_node_text(node)

    for node in element.getElementsByTagName('dc:rights'):
        metadata.right = get_node_text(node)

    for node in element.getElementsByTagName('meta'):
        metadata.add_meta(node.getAttribute('name'),
                          node.getAttribute('content'))

    return metadata
Ejemplo n.º 22
0
def get_graph_plot_colored_by_election_results(graph, year, df, data,
                                               layout=None):
    '''Function make plot of US with counties colored by winner of election
    
    Parameters
    ----------
    graph : igraph object
        Mapper graph
    df : pandas data frame
        Data frame containing info of winner per county, year of election and
        number of electors in county
    data : ndarray (n_samples x n_dim)
        Data used for mapper
    layout : igraph.layout.Layout (default: None)
        Layout of graph

    Returns
    -------
    fig: igraph object
    '''

    node_elements = graph['node_metadata']['node_elements']

    if layout is None:
        layout = graph.layout('kk', dim=2)

    # set node color to percentage of number of electors won by republicans
    node_color = [
        100 * (df[df['year'] == year]['winner'].values *
               df[df['year'] == year]['n_electors'].values)[x].sum() /
        df[df['year'] == year]['n_electors'].values[x].sum()
        for x in node_elements]

    data_cols = utils.get_cols_for_mapper()
    columns_to_color = dict(zip(data_cols, range(len(data_cols))))

    node_text = utils.get_node_text(
        dict(zip(range(len(node_elements)),
                 node_elements)),
        utils.get_n_electors(node_elements,
                             df[df['year'] == year]['n_electors']
                             .reset_index(drop=True)),
        node_color,
        'Percentage of Electors Won by Republicans')

    plotly_kwargs = {
        'node_trace_marker_colorscale': 'RdBu',
        'node_trace_marker_reversescale': True,
        'node_trace_marker_cmin': 0,
        'node_trace_marker_cmax': 100,
        'node_trace_text': node_text,
        'node_trace_marker_size':
        utils.get_n_electors(node_elements,
                             df[df['year'] == year]['n_electors']
                             .reset_index(drop=True)),
        'node_trace_marker_sizeref':
        .5 / max(utils.get_n_electors(node_elements,
                                      df[df['year'] == year]['n_electors']
                                      .reset_index(drop=True)))}

    return visualization.create_network_2d(graph, data, layout, node_color,
                                           columns_to_color=columns_to_color,
                                           plotly_kwargs=plotly_kwargs)