# Load libraries library("netdist") library("purrr")
# Set source directory for Virus PPI graph edge files source_dir <- system.file(file.path("extdata", "VRPINS"), package = "netdist") # Load query graphs graph_1 <- read_simple_graph(file.path(source_dir, "EBV.txt"), format = "ncol") graph_2 <- read_simple_graph(file.path(source_dir, "ECL.txt"), format = "ncol")
# Maximum graphlet size to calculate counts and netdis statistic for. max_graphlet_size <- 4 # Ego network neighbourhood size neighbourhood_size <- 2 # Minimum size of ego networks to consider min_ego_nodes <- 3 min_ego_edges <- 1 # Ego network density binning parameters min_bin_count <- 5 num_bins <- 100
# Get ego networks for query graphs and reference graph ego_1 <- make_named_ego_graph(graph_1, order = neighbourhood_size, min_ego_nodes = min_ego_nodes, min_ego_edges = min_ego_edges) ego_2 <- make_named_ego_graph(graph_2, order = neighbourhood_size, min_ego_nodes = min_ego_nodes, min_ego_edges = min_ego_edges)
# Count graphlets for ego networks in query and reference graphs graphlet_counts_1 <- ego_to_graphlet_counts(ego_1, max_graphlet_size = max_graphlet_size) graphlet_counts_2 <- ego_to_graphlet_counts(ego_2, max_graphlet_size = max_graphlet_size)
# Load reference graph ref_path <- system.file(file.path("extdata", "random", "ER_1250_10_1"), package = "netdist") ref_graph <- read_simple_graph(ref_path, format = "ncol") ego_ref <- make_named_ego_graph(ref_graph, order = neighbourhood_size, min_ego_nodes = min_ego_nodes, min_ego_edges = min_ego_edges) graphlet_counts_ref <- ego_to_graphlet_counts(ego_ref, max_graphlet_size = max_graphlet_size) # Scale ego-network graphlet counts by dividing by total number of k-tuples in # ego-network (where k is graphlet size) scaled_graphlet_counts_ref <- scale_graphlet_counts_ego(graphlet_counts_ref, max_graphlet_size) # Get ego-network densities densities_ref <- ego_network_density(graphlet_counts_ref) # Adaptively bin ref ego-network densities binned_densities <- binned_densities_adaptive(densities_ref, min_counts_per_interval = min_bin_count, num_intervals = num_bins) ref_ego_density_bins <- binned_densities$breaks # Average ref graphlet counts across density bins ref_binned_graphlet_counts <- mean_density_binned_graphlet_counts( scaled_graphlet_counts_ref, binned_densities$interval_indexes)
# Calculate expected graphlet counts (using ref graph ego network density bins) exp_graphlet_counts_1 <- netdis_expected_counts(graphlet_counts_1, ref_ego_density_bins, ref_binned_graphlet_counts, max_graphlet_size, scale_fn=count_graphlet_tuples) exp_graphlet_counts_2 <- netdis_expected_counts(graphlet_counts_2, ref_ego_density_bins, ref_binned_graphlet_counts, max_graphlet_size, scale_fn=count_graphlet_tuples) # Centre graphlet counts by subtracting expected counts centred_graphlet_counts_1 <- netdis_subtract_exp_counts(graphlet_counts_1, exp_graphlet_counts_1, max_graphlet_size) centred_graphlet_counts_2 <- netdis_subtract_exp_counts(graphlet_counts_2, exp_graphlet_counts_2, max_graphlet_size)
sum_graphlet_counts_1 <- colSums(centred_graphlet_counts_1) sum_graphlet_counts_2 <- colSums(centred_graphlet_counts_2)
netdis_result <- netdis_uptok(sum_graphlet_counts_1, sum_graphlet_counts_2, max_graphlet_size) print(netdis_result)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.