This vignette demonstrates the first true analysis-layer workflow in PubChemR:
# Aspirin SMILES as seed
seed_smiles <- "CC(=O)OC1=CC=CC=C1C(=O)O"
sim <- pc_similarity_search(
identifier = seed_smiles,
namespace = "smiles",
threshold = 90,
max_records = 200,
cache = TRUE
)
sim_tbl <- as_tibble(sim) %>%
filter(!is.na(CID)) %>%
mutate(CID = as.character(CID)) %>%
distinct(CID)
sim_tbl
#> # A tibble: 200 × 1
#> CID
#> <chr>
#> 1 2244
#> 2 4133
#> 3 5161
#> 4 8361
#> 5 8365
#> 6 9458
#> 7 16330
#> 8 61151
#> 9 11370
#> 10 15109
#> # ℹ 190 more rowsassay_long <- pc_assay_activity_long(
identifier = sim_tbl$CID,
namespace = "cid",
chunk_size = 25,
cache = TRUE
)
assay_long %>%
select(CID, AID, ActivityOutcome, ActivityValue_uM) %>%
head()
#> # A tibble: 6 × 4
#> CID AID ActivityOutcome ActivityValue_uM
#> <chr> <chr> <chr> <dbl>
#> 1 2244 1 Inactive NA
#> 2 2244 3 Inactive NA
#> 3 2244 9 Inactive NA
#> 4 2244 15 Inactive NA
#> 5 2244 19 Inactive NA
#> 6 2244 21 Inactive NAactivity_mat <- pc_activity_matrix(
assay_long,
cid_col = "CID",
aid_col = "AID",
outcome_col = "ActivityOutcome",
aggregate = "max",
fill = NA_real_
)
activity_mat
#> # A tibble: 117 × 4,043
#> CID AID_1 AID_3 AID_9 AID_15 AID_19 AID_21 AID_23 AID_25 AID_29 AID_31
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2244 0 0 0 0 0 0 0 0 0 0
#> 2 4133 NA NA NA NA NA NA NA NA NA NA
#> 3 5161 NA NA NA NA NA NA NA NA NA NA
#> 4 8361 NA NA NA NA NA NA NA NA NA NA
#> 5 8365 NA NA NA NA NA NA NA NA NA NA
#> 6 9458 NA NA NA NA NA NA NA NA NA NA
#> 7 16330 NA NA NA NA NA NA NA NA NA NA
#> 8 61151 NA NA NA NA NA NA NA NA NA NA
#> 9 11370 NA NA NA NA NA NA NA NA NA NA
#> 10 15109 NA NA NA NA NA NA NA NA NA NA
#> # ℹ 107 more rows
#> # ℹ 4,032 more variables: AID_33 <dbl>, AID_35 <dbl>, AID_37 <dbl>,
#> # AID_39 <dbl>, AID_41 <dbl>, AID_43 <dbl>, AID_45 <dbl>, AID_47 <dbl>,
#> # AID_49 <dbl>, AID_53 <dbl>, AID_55 <dbl>, AID_59 <dbl>, AID_65 <dbl>,
#> # AID_67 <dbl>, AID_71 <dbl>, AID_73 <dbl>, AID_79 <dbl>, AID_81 <dbl>,
#> # AID_83 <dbl>, AID_85 <dbl>, AID_87 <dbl>, AID_89 <dbl>, AID_91 <dbl>,
#> # AID_93 <dbl>, AID_99 <dbl>, AID_103 <dbl>, AID_105 <dbl>, AID_107 <dbl>, …feature_tbl <- pc_feature_table(
identifier = sim_tbl$CID,
properties = c(
"MolecularWeight",
"XLogP",
"TPSA",
"HBondDonorCount",
"HBondAcceptorCount"
),
namespace = "cid",
cache = TRUE
) %>%
mutate(CID = as.character(CID))
model_tbl <- feature_tbl %>%
left_join(activity_mat, by = "CID")
mm <- pc_model_matrix(
x = model_tbl,
id_cols = "CID",
na_fill = 0,
scale = TRUE
)
mm
#>
#> PubChemModelMatrix
#>
#> - Rows: 200
#> - Features: 4047
#> - Outcome: Noneout_csv <- file.path(tempdir(), "phase4_similarity_activity_model.csv")
out_rds <- file.path(tempdir(), "phase4_similarity_activity_model.rds")
pc_export_model_data(mm, path = out_csv, format = "csv")
pc_export_model_data(mm, path = out_rds, format = "rds")
out_csv
#> [1] "/tmp/RtmprF1Cix/phase4_similarity_activity_model.csv"
out_rds
#> [1] "/tmp/RtmprF1Cix/phase4_similarity_activity_model.rds"This workflow is intended for reproducible discovery pipelines where structure-driven retrieval, bioactivity reshaping, and model preparation are performed within one package.