def gen_syn5(nb_shapes=80, width_basis=8, feature_generator=None, m=3): """ Synthetic Graph #5: Start with a tree and attach grid-shaped subgraphs. Args: nb_shapes : The number of shapes (here 'houses') that should be added to the base graph. width_basis : The width of the basis graph (here a random 'grid'). feature_generator : A `FeatureGenerator` for node features. If `None`, add constant features to nodes. m : The tree depth. Returns: G : A networkx graph role_id : Role ID for each node in synthetic graph name : A graph identifier """ basis_type = "tree" list_shapes = [["grid", m]] * nb_shapes plt.figure(figsize=(8, 6), dpi=300) G, role_id, _ = synthetic_structsim.build_graph(width_basis, basis_type, list_shapes, start=0) G = perturb([G], 0.1)[0] if feature_generator is None: feature_generator = featgen.ConstFeatureGen(1) feature_generator.gen_node_features(G) name = basis_type + "_" + str(width_basis) + "_" + str(nb_shapes) path = os.path.join("log/syn5_base_h20_o20") writer = SummaryWriter(path) return G, role_id, name
def gen_syn3(nb_shapes=80, width_basis=300, feature_generator=None, m=5): """ Synthetic Graph #3: Start with Barabasi-Albert graph and attach grid-shaped subgraphs. Args: nb_shapes : The number of shapes (here 'grid') that should be added to the base graph. width_basis : The width of the basis graph (here 'Barabasi-Albert' random graph). feature_generator : A `FeatureGenerator` for node features. If `None`, add constant features to nodes. m : number of edges to attach to existing node (for BA graph) Returns: G : A networkx graph role_id : Role ID for each node in synthetic graph. name : A graph identifier """ basis_type = "ba" list_shapes = [["grid", 3]] * nb_shapes plt.figure(figsize=(8, 6), dpi=300) G, role_id, _ = synthetic_structsim.build_graph(width_basis, basis_type, list_shapes, start=0, m=5) G = perturb([G], 0.01)[0] if feature_generator is None: feature_generator = featgen.ConstFeatureGen(1) feature_generator.gen_node_features(G) name = basis_type + "_" + str(width_basis) + "_" + str(nb_shapes) return G, role_id, name
def gen_sat1(nb_shapes=80, width_basis=300, feature_generator=None, m=5): """ Sat Graph #1: Start with Barabasi-Albert graph and attach house-shaped subgraphs. Args: nb_shapes : The number of shapes (here 'houses') that should be added to the base graph. width_basis : The width of the basis graph (here 'Barabasi-Albert' random graph). feature_generator : A `FeatureGenerator` for node features. If `None`, add constant features to nodes. m : number of edges to attach to existing node (for BA graph) Returns: G : A networkx graph role_id : A list with length equal to number of nodes in the entire graph (basis : + shapes). role_id[i] is the ID of the role of node i. It is the label. name : A graph identifier """ basis_type = "ba" list_shapes = [["house"]] * nb_shapes plt.figure(figsize=(8, 6), dpi=300) G, role_id, _ = synthetic_structsim.build_graph(width_basis, basis_type, list_shapes, start=0, m=5) G = perturb([G], 0.01)[0] if feature_generator is None: feature_generator = featgen.ConstFeatureGen(1) feature_generator.gen_node_features(G) name = basis_type + "_" + str(width_basis) + "_" + str(nb_shapes) return G, role_id, name
def gen_syn1(nb_shapes=80, width_basis=300, feature_generator=None, m=5): basis_type = 'ba' list_shapes = [['house']] * nb_shapes fig = plt.figure(figsize=(8, 6), dpi=300) G, role_id, plugins = synthetic_structsim.build_graph(width_basis, basis_type, list_shapes, start=0, m=5) G = perturb_new([G], 0.01)[0] if feature_generator is None: feature_generator = featgen.ConstFeatureGen(1) feature_generator.gen_node_features(G) name = basis_type + '_' + str(width_basis) + '_' + str(nb_shapes) return G, role_id, name
def gen_syn5(nb_shapes=80, width_basis=8, feature_generator=None, m=3): basis_type = 'tree' list_shapes = [['grid', m]] * nb_shapes fig = plt.figure(figsize=(8, 6), dpi=300) G, role_id, plugins = synthetic_structsim.build_graph(width_basis, basis_type, list_shapes, start=0) G = perturb_new([G], 0.1)[0] if feature_generator is None: feature_generator = featgen.ConstFeatureGen(1) feature_generator.gen_node_features(G) name = basis_type + '_' + str(width_basis) + '_' + str(nb_shapes) path = os.path.join('log/syn5_base_h20_o20') writer = SummaryWriter(path) #io_utils.log_graph(writer, G, 'graph/full') return G, role_id, name