sub create_subset_network_from_edges
{ my $self = shift;
my $graph = $self->get_old_net()->{graph};
my $sub_edges_ref = shift;
my @sub_edges = @$sub_edges_ref;
my $new_network = new Clair::Network(directed =>
$self->get_old_net()->{directed});
my $new_graph = $new_network->{graph};
# Add the edges foreach my $edge (@sub_edges) {
my ($u, $v) = @$edge;
if ($graph->has_edge($u, $v)) {
# Add nodes $new_network->add_node($u);
$new_network->add_node($v);
my $attr = $graph->get_vertex_attributes($u);
$new_graph->set_vertex_attributes($u, $attr);
$attr = $graph->get_vertex_attributes($v);
$new_graph->set_vertex_attributes($v, $attr);
# Add edge $new_graph->add_edge($u, $v);
$attr = $graph->get_edge_attributes($u, $v);
if (defined $attr) {
$new_graph->set_edge_attributes($u, $v, $attr);
}
if ($graph->has_edge_weight($u, $v)) {
my $w = $graph->get_edge_weight($u, $v);
$new_graph->set_edge_weight($u, $v, $w);
}
}
}
return $new_network;} |