Skip to contents

Stream selected model, gene, and sample combinations from an existing grom output on disk.

Usage

grom_read(grom_pfx, models = NULL, genes = NULL, samples = NULL)

Arguments

grom_pfx

Path prefix to an existing grom output without the file extension.

models

Optional character vector of model IDs to retain. `NULL` selects all models.

genes

Optional character vector of gene IDs to retain. `NULL` selects all genes.

samples

Optional character vector of sample IDs to retain. `NULL` selects all samples.

Value

A numeric matrix with samples in rows and selected model-gene pairs in columns.

Examples

library(gromtools)

pgen_dir <- system.file(
  "extdata",
  "synthetic_chromosomes",
  package = "gromtools"
)
db_directory <- system.file(
  "extdata",
  "synth_small_variant_weights_db",
  package = "gromtools"
)
model_weights_table <- read_db_dir(db_dir = db_directory)

out_dir <- file.path(tempdir(), "tmp_grom_run")
dir.create(out_dir, recursive = TRUE, showWarnings = FALSE)
grom_pfx <- file.path(out_dir, "synth_example")

grom_impute(
  weights_table = model_weights_table,
  grom_pfx = grom_pfx,
  pgen_dir = pgen_dir
)
#> All chromosome tags were uniquely mapped to a .pgen file.
#> ### impute_grom() started at: 2026-08-08 18:30:42
#> grom_axpy_engine timing: chunks=2 waves=6 ops=1341 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=36 output_bytes_written=29088 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000265728s decoded_variants=1321 decoded_dosages=133421 pgen_load=0.00578975s pgen_dosages_per_sec=2.30443e+07 wave_prepare=0.000531017s parallel_compute=0.00816191s output_flush=0.000146684s output_write_prepare=2.1185e-05s output_write_positioned=0.000111443s output_bytes_per_sec=2.61012e+08 max_wave_ops=256 max_live_gene_columns=36 decoded_buffer_bytes=808000 reader_workspace_bytes=2057168 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=363 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=15 output_bytes_written=12120 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000210659s decoded_variants=361 decoded_dosages=36461 pgen_load=0.00219258s pgen_dosages_per_sec=1.66293e+07 wave_prepare=0.000172734s parallel_compute=8.4664e-05s output_flush=6.9097e-05s output_write_prepare=1.0366e-05s output_write_positioned=5.2853e-05s output_bytes_per_sec=2.29315e+08 max_wave_ops=256 max_live_gene_columns=15 decoded_buffer_bytes=291688 reader_workspace_bytes=1918928 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=403 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=17 output_bytes_written=13736 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000199342s decoded_variants=401 decoded_dosages=40501 pgen_load=9.1218e-05s pgen_dosages_per_sec=4.44002e+08 wave_prepare=0.000136365s parallel_compute=8.7517e-05s output_flush=6.2796e-05s output_write_prepare=9.361e-06s output_write_positioned=4.7948e-05s output_bytes_per_sec=2.86477e+08 max_wave_ops=256 max_live_gene_columns=17 decoded_buffer_bytes=324008 reader_workspace_bytes=1925072 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=587 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=21 output_bytes_written=16968 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000216901s decoded_variants=580 decoded_dosages=58580 pgen_load=0.00203831s pgen_dosages_per_sec=2.87396e+07 wave_prepare=0.000233008s parallel_compute=0.000125163s output_flush=8.2803e-05s output_write_prepare=1.2875e-05s output_write_positioned=6.2074e-05s output_bytes_per_sec=2.73351e+08 max_wave_ops=256 max_live_gene_columns=21 decoded_buffer_bytes=468640 reader_workspace_bytes=1950672 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=1 ops=83 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=8 output_bytes_written=6464 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000138452s decoded_variants=83 decoded_dosages=8383 pgen_load=2.7732e-05s pgen_dosages_per_sec=3.02286e+08 wave_prepare=3.4202e-05s parallel_compute=2.2265e-05s output_flush=3.1163e-05s output_write_prepare=4.72601e-06s output_write_positioned=2.3404e-05s output_bytes_per_sec=2.76192e+08 max_wave_ops=83 max_live_gene_columns=8 decoded_buffer_bytes=67064 reader_workspace_bytes=1878992 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=593 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=18 output_bytes_written=14544 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000325544s decoded_variants=590 decoded_dosages=59590 pgen_load=0.00148993s pgen_dosages_per_sec=3.9995e+07 wave_prepare=0.00022697s parallel_compute=0.000149512s output_flush=7.2026e-05s output_write_prepare=1.0737e-05s output_write_positioned=5.4701e-05s output_bytes_per_sec=2.65882e+08 max_wave_ops=256 max_live_gene_columns=18 decoded_buffer_bytes=476720 reader_workspace_bytes=1951696 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=354 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=13 output_bytes_written=10504 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000174949s decoded_variants=337 decoded_dosages=34037 pgen_load=0.00194284s pgen_dosages_per_sec=1.75192e+07 wave_prepare=0.00014437s parallel_compute=7.0119e-05s output_flush=5.6013e-05s output_write_prepare=8.291e-06s output_write_positioned=4.2308e-05s output_bytes_per_sec=2.48275e+08 max_wave_ops=256 max_live_gene_columns=13 decoded_buffer_bytes=272296 reader_workspace_bytes=1915856 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=335 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=14 output_bytes_written=11312 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000169755s decoded_variants=331 decoded_dosages=33431 pgen_load=0.00174167s pgen_dosages_per_sec=1.91948e+07 wave_prepare=0.00012692s parallel_compute=0.0014066s output_flush=5.1652e-05s output_write_prepare=7.888e-06s output_write_positioned=3.8914e-05s output_bytes_per_sec=2.90692e+08 max_wave_ops=256 max_live_gene_columns=14 decoded_buffer_bytes=267448 reader_workspace_bytes=1914832 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=626 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=32 output_bytes_written=25856 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000213767s decoded_variants=552 decoded_dosages=55752 pgen_load=0.000328107s pgen_dosages_per_sec=1.6992e+08 wave_prepare=0.000242869s parallel_compute=0.00200363s output_flush=0.000238924s output_write_prepare=1.6638e-05s output_write_positioned=0.000203305s output_bytes_per_sec=1.27178e+08 max_wave_ops=256 max_live_gene_columns=32 decoded_buffer_bytes=446016 reader_workspace_bytes=1946576 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=1 ops=97 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=3 output_bytes_written=2424 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.00016407s decoded_variants=97 decoded_dosages=9797 pgen_load=0.00159956s pgen_dosages_per_sec=6.12481e+06 wave_prepare=4.4099e-05s parallel_compute=3.3671e-05s output_flush=1.7445e-05s output_write_prepare=3.50199e-06s output_write_positioned=1.2358e-05s output_bytes_per_sec=1.96148e+08 max_wave_ops=97 max_live_gene_columns=3 decoded_buffer_bytes=78376 reader_workspace_bytes=1881040 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=655 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=19 output_bytes_written=15352 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000212981s decoded_variants=629 decoded_dosages=63529 pgen_load=0.00229703s pgen_dosages_per_sec=2.7657e+07 wave_prepare=0.000257249s parallel_compute=0.000186689s output_flush=8.2082e-05s output_write_prepare=1.3893e-05s output_write_positioned=6.1173e-05s output_bytes_per_sec=2.5096e+08 max_wave_ops=256 max_live_gene_columns=19 decoded_buffer_bytes=508232 reader_workspace_bytes=1956816 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=757 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=29 output_bytes_written=23432 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000207876s decoded_variants=731 decoded_dosages=73831 pgen_load=0.000170819s pgen_dosages_per_sec=4.32218e+08 wave_prepare=0.000267816s parallel_compute=0.000185907s output_flush=8.7444e-05s output_write_prepare=1.5183e-05s output_write_positioned=6.2532e-05s output_bytes_per_sec=3.7472e+08 max_wave_ops=256 max_live_gene_columns=29 decoded_buffer_bytes=590648 reader_workspace_bytes=1972176 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=1 ops=105 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=7 output_bytes_written=5656 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000138048s decoded_variants=105 decoded_dosages=10605 pgen_load=0.000144283s pgen_dosages_per_sec=7.35014e+07 wave_prepare=4.0497e-05s parallel_compute=0.0011241s output_flush=3.1945e-05s output_write_prepare=4.64701e-06s output_write_positioned=2.3671e-05s output_bytes_per_sec=2.38942e+08 max_wave_ops=105 max_live_gene_columns=7 decoded_buffer_bytes=84840 reader_workspace_bytes=1882064 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=1 ops=117 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=4 output_bytes_written=3232 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000140696s decoded_variants=116 decoded_dosages=11716 pgen_load=0.000211157s pgen_dosages_per_sec=5.54848e+07 wave_prepare=5.6028e-05s parallel_compute=0.000711033s output_flush=3.2377e-05s output_write_prepare=3.333e-06s output_write_positioned=2.7019e-05s output_bytes_per_sec=1.19619e+08 max_wave_ops=117 max_live_gene_columns=4 decoded_buffer_bytes=93728 reader_workspace_bytes=1883088 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=1 ops=173 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=7 output_bytes_written=5656 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000159419s decoded_variants=172 decoded_dosages=17372 pgen_load=0.000501179s pgen_dosages_per_sec=3.46623e+07 wave_prepare=6.4916e-05s parallel_compute=0.00138791s output_flush=3.7557e-05s output_write_prepare=4.563e-06s output_write_positioned=2.9615e-05s output_bytes_per_sec=1.90984e+08 max_wave_ops=173 max_live_gene_columns=7 decoded_buffer_bytes=138976 reader_workspace_bytes=1891280 omp_workers=16
#> grom_axpy_engine timing: chunks=2 waves=6 ops=1157 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=39 output_bytes_written=31512 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000258702s decoded_variants=1121 decoded_dosages=113221 pgen_load=0.00547224s pgen_dosages_per_sec=2.06901e+07 wave_prepare=0.000574444s parallel_compute=0.0201757s output_flush=0.000273915s output_write_prepare=4.8316e-05s output_write_positioned=0.00020289s output_bytes_per_sec=1.55316e+08 max_wave_ops=256 max_live_gene_columns=39 decoded_buffer_bytes=808000 reader_workspace_bytes=2028496 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=662 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=29 output_bytes_written=23432 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000356543s decoded_variants=584 decoded_dosages=58984 pgen_load=0.00375605s pgen_dosages_per_sec=1.57038e+07 wave_prepare=0.000294588s parallel_compute=0.00793944s output_flush=0.000114701s output_write_prepare=1.7117e-05s output_write_positioned=8.4722e-05s output_bytes_per_sec=2.76575e+08 max_wave_ops=256 max_live_gene_columns=29 decoded_buffer_bytes=471872 reader_workspace_bytes=1951696 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=408 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=17 output_bytes_written=13736 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000211255s decoded_variants=405 decoded_dosages=40905 pgen_load=0.00268307s pgen_dosages_per_sec=1.52456e+07 wave_prepare=0.000186184s parallel_compute=0.00214495s output_flush=5.8755e-05s output_write_prepare=9.443e-06s output_write_positioned=4.1471e-05s output_bytes_per_sec=3.31219e+08 max_wave_ops=256 max_live_gene_columns=17 decoded_buffer_bytes=327240 reader_workspace_bytes=1925072 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=452 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=17 output_bytes_written=13736 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000486574s decoded_variants=432 decoded_dosages=43632 pgen_load=0.00102212s pgen_dosages_per_sec=4.26878e+07 wave_prepare=0.000178894s parallel_compute=0.00800633s output_flush=9.8815e-05s output_write_prepare=1.7835e-05s output_write_positioned=7.1873e-05s output_bytes_per_sec=1.91115e+08 max_wave_ops=256 max_live_gene_columns=17 decoded_buffer_bytes=349056 reader_workspace_bytes=1929168 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=575 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=16 output_bytes_written=12928 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000249748s decoded_variants=571 decoded_dosages=57671 pgen_load=0.00113452s pgen_dosages_per_sec=5.08328e+07 wave_prepare=0.000233139s parallel_compute=0.00686946s output_flush=9.6219e-05s output_write_prepare=1.7732e-05s output_write_positioned=7.1602e-05s output_bytes_per_sec=1.80554e+08 max_wave_ops=256 max_live_gene_columns=16 decoded_buffer_bytes=461368 reader_workspace_bytes=1948624 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=2 ops=487 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=11 output_bytes_written=8888 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000198722s decoded_variants=462 decoded_dosages=46662 pgen_load=0.000787235s pgen_dosages_per_sec=5.92733e+07 wave_prepare=0.000212372s parallel_compute=0.00241338s output_flush=5.7175e-05s output_write_prepare=1.1163e-05s output_write_positioned=4.0581e-05s output_bytes_per_sec=2.19019e+08 max_wave_ops=256 max_live_gene_columns=11 decoded_buffer_bytes=373296 reader_workspace_bytes=1933264 omp_workers=16
#> grom_axpy_engine timing: chunks=1 waves=3 ops=709 compute_threads=16 requested_pgen_threads=0 resolved_pgen_threads=16 requested_write_threads=1 resolved_write_threads=1 write_batches=1 gene_columns_written=23 output_bytes_written=18584 max_active_write_threads=1 duplicate_write_gids=0 reader_init=0.000216201s decoded_variants=674 decoded_dosages=68074 pgen_load=0.00351545s pgen_dosages_per_sec=1.93643e+07 wave_prepare=0.000294782s parallel_compute=0.00289896s output_flush=0.000154865s output_write_prepare=1.8534e-05s output_write_positioned=0.000127543s output_bytes_per_sec=1.45708e+08 max_wave_ops=256 max_live_gene_columns=23 decoded_buffer_bytes=544592 reader_workspace_bytes=1963984 omp_workers=16
#> ### impute_grom() completed at: 2026-08-08 18:30:42
#> Results stored under directory /tmp/RtmpHK6cG3/tmp_grom_run

grom_mat <- grom_read(
  grom_pfx = grom_pfx,
  models = c("AMR_subclass_IN_SST", "AMR_subclass_VLMC"),
  genes = c("ENSG00000003987", "ENSG00000053900"),
  samples = c(
    "sample0001", "sample0014", "sample0034", "sample0039", "sample0043"
  )
)

print(grom_mat)
#>            AMR_subclass_IN_SST_ENSG00000003987
#> sample0001                           0.3191238
#> sample0014                           0.4542425
#> sample0034                           0.4138578
#> sample0039                           0.2676161
#> sample0043                           0.3721308
#>            AMR_subclass_IN_SST_ENSG00000053900
#> sample0001                           0.2737647
#> sample0014                          -0.4481538
#> sample0034                          -0.2212396
#> sample0039                          -0.3217697
#> sample0043                           0.2609762
#>            AMR_subclass_VLMC_ENSG00000053900
#> sample0001                        -0.5058091
#> sample0014                        -0.9249124
#> sample0034                        -0.5259653
#> sample0039                        -0.9044481
#> sample0043                        -0.6188168