## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>"
)

## ----echo = FALSE-------------------------------------------------------------
options(crayon.enabled = FALSE, cli.num_colors = 0)

## -----------------------------------------------------------------------------
library(SNFtool)

## -----------------------------------------------------------------------------
K <- 20
alpha <- 0.5
T <- 20

## -----------------------------------------------------------------------------
data(Data1)
data(Data2)

## ----eval = FALSE-------------------------------------------------------------
# library(ComplexHeatmap)
# 
# # gene expression data
# gene_expression_hm <- Heatmap(
#     as.matrix(Data1),
#     cluster_rows = FALSE,
#     cluster_columns = FALSE,
#     show_row_names = FALSE,
#     show_column_names = FALSE,
#     heatmap_legend_param = list(
#         title = "Gene Expression"
#     )
# )
# 
# gene_expression_hm

## ----eval = FALSE-------------------------------------------------------------
# # methylation data
# methylation_hm <- Heatmap(
#     as.matrix(Data2),
#     cluster_rows = FALSE,
#     cluster_columns = FALSE,
#     show_row_names = FALSE,
#     show_column_names = FALSE,
#     heatmap_legend_param = list(
#         title = "Methylation"
#     )
# )
# 
# methylation_hm

## -----------------------------------------------------------------------------
true_label <- c(matrix(1, 100, 1), matrix(2, 100, 1))

## -----------------------------------------------------------------------------
distance_matrix_1 <- as.matrix(dist(Data1, method = "euclidean"))
distance_matrix_2 <- as.matrix(dist(Data2, method = "euclidean"))

## -----------------------------------------------------------------------------
similarity_matrix_1 <- affinityMatrix(distance_matrix_1, K, alpha)
similarity_matrix_2 <- affinityMatrix(distance_matrix_2, K, alpha)

## -----------------------------------------------------------------------------
fused_network <- SNF(list(similarity_matrix_1, similarity_matrix_2), K, T)

## -----------------------------------------------------------------------------
number_of_clusters <- 2
assigned_clusters <- spectralClustering(fused_network, number_of_clusters)

## -----------------------------------------------------------------------------
all(true_label == assigned_clusters)

## -----------------------------------------------------------------------------
library(metasnf)

## -----------------------------------------------------------------------------
# Add "patient_id" column to each data frame
Data1$"patient_id" <- 101:(nrow(Data1) + 100)
Data2$"patient_id" <- 101:(nrow(Data2) + 100)

my_dl <- data_list(
    list(
        data = Data1,
        name = "genes_1_and_2_exp",
        domain = "gene_expression",
        type = "continuous"
    ),
    list(
        data = Data2,
        name = "genes_1_and_2_meth",
        domain = "gene_methylation",
        type = "continuous"
    ),
    uid = "patient_id"
)

## ----eval = FALSE-------------------------------------------------------------
# # Compactly:
# my_dl <- data_list(
#     list(Data1, "genes_1_and_2_exp", "gene_expression", "continuous"),
#     list(Data2, "genes_1_and_2_meth", "gene_methylation", "continuous"),
#     uid = "patient_id"
# )

## -----------------------------------------------------------------------------
sc <- snf_config(
    dl = my_dl,
    n_solutions = 1,
    alpha_values = 0.5,
    k_values = 20,
    t_values = 20,
    dropout_dist = "none",
    possible_snf_schemes = 1
)

sc

## -----------------------------------------------------------------------------
as.data.frame(sc$"settings_df")

## -----------------------------------------------------------------------------
sol_df <- batch_snf(dl = my_dl, sc = sc)

sol_df

## -----------------------------------------------------------------------------
cluster_solution <- t(sol_df)

cluster_solution

## -----------------------------------------------------------------------------
all.equal(cluster_solution$"s1", true_label)

## -----------------------------------------------------------------------------
sol_df <- batch_snf(
    dl = my_dl,
    sc,
    return_sim_mats = TRUE
)

# The first (and only, in this case) final fused network
similarity_matrix <- sim_mats_list(sol_df)[[1]]

## -----------------------------------------------------------------------------
max(similarity_matrix - fused_network)