Clair::Network::Sample

RandomEdge


SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods

SummaryTop
Clair::Network::Sample::RandomEdge - Random edge sampling

Package variablesTop
Globals (from "use vars" definitions)
$VERSION

Included modulesTop
Clair::Network::Sample::SampleBase

InheritTop
Clair::Network::Sample::SampleBase

SynopsisTop
my $sample = Clair::Network::Sample::RandomEdge->new($net);
$sample->number_of_edges(2);
my $new_net = $sample->sample();

DescriptionTop
Uniformly samples a number of edges from the network.

MethodsTop
create_subset_network_from_edgesDescriptionCode
number_of_edgesNo descriptionCode
sampleNo descriptionCode

Methods description


create_subset_network_from_edgescode    nextTop
Create a subset network from a set of edges

Methods code


create_subset_network_from_edgesdescriptionprevnextTop
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;
}

number_of_edgesdescriptionprevnextTop
sub number_of_edges {
  my $self = shift;
  my $num_edges = shift;

  $self->{num_edges} = $num_edges;
}

sampledescriptionprevnextTop
sub sample {
  my $self = shift;
  my $num_edges = shift;

  my $net;
  if (defined $self->{num_edges}) {
    my $num_edges = $self->{num_edges};
  } elsif (not defined $num_edges) {
    die "Must call number_of_edges first or pass in number of edges\n";
  }

  my @sample_edges = $self->get_random_edges($num_edges);
  $net = $self->create_subset_network_from_edges(\@sample_edges);

  return $net;
}

General documentation


No general documentation available.