Use OmicIDX from R (omicidxr)

The omicidxr R package connects DuckDB to OmicIDX, pins a version, gives tab-completable dplyr tables, and replaces SRAdb and GEOmetadb.

omicidxr is an R package for OmicIDX. It connects DuckDB to the published Parquet, so you can query it with SQL or dplyr without downloading anything. It also has helpers for the common SRAdb and GEOmetadb tasks. The package website documents every function.

The examples on this page ran against latest/ when the page was built.

Install

Install from GitHub with pak:

# install.packages("pak")
pak::pak("seandavi/omicidxr")

remotes::install_github("seandavi/omicidxr") works too. The package depends on duckdb. On Linux without binary packages (e.g. from Posit Package Manager or r-universe), duckdb compiles from source, which takes 20 minutes or more. A Bioconductor release is planned.

Connect

omicidx_connect() returns an ordinary DuckDB DBI connection. Tables are schema.table, such as sradb.study or geometadb.gsm:

library(omicidxr)

con <- omicidx_connect()

head(omicidx_tables(con))
schema table type
geometadb geo_supplemental_files VIEW
geometadb gpl VIEW
geometadb gse VIEW
geometadb gse_gpl VIEW
geometadb gse_gsm VIEW
geometadb gsm VIEW
head(omicidx_describe(con, "sradb.run"))
column_name column_type null
run_id BIGINT YES
run_alias VARCHAR YES
run_accession VARCHAR YES
experiment_accession VARCHAR YES
total_spots BIGINT YES
total_bases BIGINT YES
DBI::dbGetQuery(con, "SELECT count(*) AS n FROM sradb.study")
n
775372
DBI::dbDisconnect(con)

Pick a version

The version argument picks a version:

version What you get
"latest" (default) The nightly build at https://omicidx.cancerdatasci.org/data/latest/
"YYYY-MM-DD" A dated nightly build. Kept for 30 days
"YYYY-MM" A monthly release from HuggingFace (seandavis/omicidx@YYYY-MM). Kept long term. Cite this one
con <- omicidx_connect("2026-10-20")  # a dated build
con <- omicidx_connect("2026-10")     # the October 2026 monthly release

Query latest and the dated builds in place. For a monthly release, make a local copy first: HuggingFace limits anonymous requests to 3000 per 5 minutes per IP address, and one query can make hundreds, so querying a monthly release in place soon fails with HTTP 429. Connecting to one also takes about 30 seconds, because DuckDB inspects every Parquet file as it creates the views.

Tab-completable dplyr tables

omicidx_db() returns every table as a lazy dplyr table, nested by schema, so db$sradb$<TAB> completes table names. Printing db lists the schemas, tables, and row counts. Nothing is read until collect():

db <- omicidx_db()
db
#> <omicidx_db> OmicIDX release latest (published 2026-10-23)
#> 
#> geometadb
#>   geo_supplemental_files    7,098,064
#>   gpl                          29,060
#>   gse                         298,108
#>   gse_gpl                     345,076
#>   gse_gsm                  10,562,000
#>   gsm                       8,774,090
#> 
#> main
#>   bioprojects                      1,130,284
#>   biosamples                      60,484,224
#>   db_creation_metadata
#>   geo_platforms                       29,060
#>   geo_samples                      8,774,090
#>   geo_series                         298,108
#>   geo_series_with_rnaseq_counts       27,714
#>   pubmed_articles                 41,275,240
#>   sra_accessions                 162,991,962
#>   sra_experiments                 42,655,706
#>   sra_runs                        45,553,970
#>   sra_samples                     44,670,639
#>   sra_studies                        775,372
#> 
#> sradb
#>   experiment       42,655,706
#>   human_runs        8,540,117
#>   mouse_runs        4,415,567
#>   rnaseq_runs       9,054,381
#>   run              45,699,354
#>   run_with_study   45,699,354
#>   sample           44,670,639
#>   sra              45,699,354
#>   study               775,372
#>   wgs_runs          9,601,400
#> 
#> Tables: db$<schema>$<table>. Connection: attr(db, "con").
db$sradb$experiment |>
  dplyr::filter(library_strategy == "RNA-Seq") |>
  dplyr::count(platform, sort = TRUE) |>
  dplyr::collect()
platform n
ILLUMINA 6814451
DNBSEQ 124812
OXFORD_NANOPORE 115720
BGISEQ 107218
ION_TORRENT 28103
PACBIO_SMRT 15871
ABI_SOLID 12660
ELEMENT 12658
LS454 7215
CAPILLARY 4527
COMPLETE_GENOMICS 1174
HELICOS 704
GENEMIND 652
VELA_DIAGNOSTICS 643
ULTIMA 322
GENAPSYS 218
GENEUS_TECH 43
TAPESTRI 37
SINGULAR_GENOMICS 37
SALUS 6
con <- attr(db, "con")  # the DBI connection behind it
DBI::dbDisconnect(con)

omicidx_db() takes a version too, or an existing connection: omicidx_db(con).

SRAdb and GEOmetadb helpers

Each helper takes the connection first, runs one query, and returns a tibble.

The runs of an SRA study, with the fields you need to download them:

con <- omicidx_connect()

sra_runs(con, "SRP299835") |>
  dplyr::select(run_accession, experiment_accession, library_layout, spots, instrument_model)
run_accession experiment_accession library_layout spots instrument_model
SRR13332242 SRX9759115 SINGLE 5970564 NextSeq 500
SRR13332243 SRX9759115 SINGLE 6168624 NextSeq 500
SRR13332244 SRX9759115 SINGLE 6135802 NextSeq 500
SRR13332245 SRX9759115 SINGLE 6012012 NextSeq 500
SRR13332246 SRX9759116 SINGLE 6696443 NextSeq 500
SRR13332247 SRX9759116 SINGLE 6917201 NextSeq 500
SRR13332248 SRX9759116 SINGLE 6865186 NextSeq 500
SRR13332249 SRX9759116 SINGLE 6742490 NextSeq 500
SRR13332250 SRX9759117 SINGLE 6086941 NextSeq 500
SRR13332251 SRX9759117 SINGLE 6271610 NextSeq 500
SRR13332252 SRX9759117 SINGLE 6237721 NextSeq 500
SRR13332253 SRX9759117 SINGLE 6120275 NextSeq 500
SRR13332254 SRX9759118 SINGLE 5917953 NextSeq 500
SRR13332255 SRX9759118 SINGLE 6086856 NextSeq 500
SRR13332256 SRX9759118 SINGLE 6057632 NextSeq 500
SRR13332257 SRX9759118 SINGLE 5938600 NextSeq 500
SRR13332258 SRX9759119 SINGLE 6339931 NextSeq 500
SRR13332259 SRX9759119 SINGLE 6572969 NextSeq 500
SRR13332260 SRX9759119 SINGLE 6540252 NextSeq 500
SRR13332261 SRX9759119 SINGLE 6406558 NextSeq 500
SRR13332262 SRX9759120 SINGLE 5503198 NextSeq 500
SRR13332263 SRX9759120 SINGLE 5715831 NextSeq 500
SRR13332264 SRX9759120 SINGLE 5677541 NextSeq 500
SRR13332265 SRX9759120 SINGLE 5570472 NextSeq 500
SRR13332266 SRX9759121 SINGLE 7560036 NextSeq 500
SRR13332267 SRX9759121 SINGLE 7833135 NextSeq 500
SRR13332268 SRX9759121 SINGLE 7785156 NextSeq 500
SRR13332269 SRX9759121 SINGLE 7642399 NextSeq 500
SRR13332270 SRX9759122 SINGLE 6757009 NextSeq 500
SRR13332271 SRX9759122 SINGLE 6979052 NextSeq 500
SRR13332272 SRX9759122 SINGLE 6949549 NextSeq 500
SRR13332273 SRX9759122 SINGLE 6807736 NextSeq 500
SRR13332274 SRX9759123 SINGLE 6630536 NextSeq 500
SRR13332275 SRX9759123 SINGLE 6844176 NextSeq 500
SRR13332276 SRX9759123 SINGLE 6817496 NextSeq 500
SRR13332277 SRX9759123 SINGLE 6686406 NextSeq 500
SRR13332278 SRX9759124 SINGLE 5716253 NextSeq 500
SRR13332279 SRX9759124 SINGLE 5894187 NextSeq 500
SRR13332280 SRX9759124 SINGLE 5866699 NextSeq 500
SRR13332281 SRX9759124 SINGLE 5757576 NextSeq 500
SRR13332282 SRX9759125 SINGLE 5345680 NextSeq 500
SRR13332283 SRX9759125 SINGLE 5502373 NextSeq 500
SRR13332284 SRX9759125 SINGLE 5473623 NextSeq 500
SRR13332285 SRX9759125 SINGLE 5371670 NextSeq 500
SRR13332286 SRX9759126 SINGLE 6768417 NextSeq 500
SRR13332287 SRX9759126 SINGLE 6951576 NextSeq 500
SRR13332288 SRX9759126 SINGLE 6939056 NextSeq 500
SRR13332289 SRX9759126 SINGLE 6799266 NextSeq 500
SRR13332290 SRX9759127 SINGLE 5426079 NextSeq 500
SRR13332291 SRX9759127 SINGLE 5603556 NextSeq 500
SRR13332292 SRX9759127 SINGLE 5584914 NextSeq 500
SRR13332293 SRX9759127 SINGLE 5465757 NextSeq 500
SRR13332294 SRX9759128 SINGLE 5236036 NextSeq 500
SRR13332295 SRX9759128 SINGLE 5406525 NextSeq 500
SRR13332296 SRX9759128 SINGLE 5380727 NextSeq 500
SRR13332297 SRX9759128 SINGLE 5273367 NextSeq 500
SRR13332298 SRX9759129 SINGLE 6434942 NextSeq 500
SRR13332299 SRX9759129 SINGLE 6643426 NextSeq 500
SRR13332300 SRX9759129 SINGLE 6613707 NextSeq 500
SRR13332301 SRX9759129 SINGLE 6489738 NextSeq 500
SRR13332302 SRX9759130 SINGLE 5730629 NextSeq 500
SRR13332303 SRX9759130 SINGLE 5884446 NextSeq 500
SRR13332304 SRX9759130 SINGLE 5874224 NextSeq 500
SRR13332305 SRX9759130 SINGLE 5756277 NextSeq 500
SRR13332306 SRX9759131 SINGLE 5226212 NextSeq 500
SRR13332307 SRX9759131 SINGLE 5395464 NextSeq 500
SRR13332308 SRX9759131 SINGLE 5369034 NextSeq 500
SRR13332309 SRX9759131 SINGLE 5264012 NextSeq 500
SRR13332310 SRX9759132 SINGLE 7227894 NextSeq 500
SRR13332311 SRX9759132 SINGLE 7460958 NextSeq 500
SRR13332312 SRX9759132 SINGLE 7412037 NextSeq 500
SRR13332313 SRX9759132 SINGLE 7273438 NextSeq 500

sra_runs() also takes experiment, sample, and GEO accessions.

Convert accessions across SRA, GEO, BioSample, and BioProject, in any direction:

sra_convert(con, "GSE164073", c("run", "biosample")) |>
  dplyr::arrange(run)
run biosample gse
SRR13332242 SAMN17187141 GSE164073
SRR13332243 SAMN17187141 GSE164073
SRR13332244 SAMN17187141 GSE164073
SRR13332245 SAMN17187141 GSE164073
SRR13332246 SAMN17187140 GSE164073
SRR13332247 SAMN17187140 GSE164073
SRR13332248 SAMN17187140 GSE164073
SRR13332249 SAMN17187140 GSE164073
SRR13332250 SAMN17187139 GSE164073
SRR13332251 SAMN17187139 GSE164073
SRR13332252 SAMN17187139 GSE164073
SRR13332253 SAMN17187139 GSE164073
SRR13332254 SAMN17187138 GSE164073
SRR13332255 SAMN17187138 GSE164073
SRR13332256 SAMN17187138 GSE164073
SRR13332257 SAMN17187138 GSE164073
SRR13332258 SAMN17187137 GSE164073
SRR13332259 SAMN17187137 GSE164073
SRR13332260 SAMN17187137 GSE164073
SRR13332261 SAMN17187137 GSE164073
SRR13332262 SAMN17187136 GSE164073
SRR13332263 SAMN17187136 GSE164073
SRR13332264 SAMN17187136 GSE164073
SRR13332265 SAMN17187136 GSE164073
SRR13332266 SAMN17187129 GSE164073
SRR13332267 SAMN17187129 GSE164073
SRR13332268 SAMN17187129 GSE164073
SRR13332269 SAMN17187129 GSE164073
SRR13332270 SAMN17187128 GSE164073
SRR13332271 SAMN17187128 GSE164073
SRR13332272 SAMN17187128 GSE164073
SRR13332273 SAMN17187128 GSE164073
SRR13332274 SAMN17187127 GSE164073
SRR13332275 SAMN17187127 GSE164073
SRR13332276 SAMN17187127 GSE164073
SRR13332277 SAMN17187127 GSE164073
SRR13332278 SAMN17187126 GSE164073
SRR13332279 SAMN17187126 GSE164073
SRR13332280 SAMN17187126 GSE164073
SRR13332281 SAMN17187126 GSE164073
SRR13332282 SAMN17187125 GSE164073
SRR13332283 SAMN17187125 GSE164073
SRR13332284 SAMN17187125 GSE164073
SRR13332285 SAMN17187125 GSE164073
SRR13332286 SAMN17187124 GSE164073
SRR13332287 SAMN17187124 GSE164073
SRR13332288 SAMN17187124 GSE164073
SRR13332289 SAMN17187124 GSE164073
SRR13332290 SAMN17187135 GSE164073
SRR13332291 SAMN17187135 GSE164073
SRR13332292 SAMN17187135 GSE164073
SRR13332293 SAMN17187135 GSE164073
SRR13332294 SAMN17187134 GSE164073
SRR13332295 SAMN17187134 GSE164073
SRR13332296 SAMN17187134 GSE164073
SRR13332297 SAMN17187134 GSE164073
SRR13332298 SAMN17187133 GSE164073
SRR13332299 SAMN17187133 GSE164073
SRR13332300 SAMN17187133 GSE164073
SRR13332301 SAMN17187133 GSE164073
SRR13332302 SAMN17187132 GSE164073
SRR13332303 SAMN17187132 GSE164073
SRR13332304 SAMN17187132 GSE164073
SRR13332305 SAMN17187132 GSE164073
SRR13332306 SAMN17187131 GSE164073
SRR13332307 SAMN17187131 GSE164073
SRR13332308 SAMN17187131 GSE164073
SRR13332309 SAMN17187131 GSE164073
SRR13332310 SAMN17187130 GSE164073
SRR13332311 SAMN17187130 GSE164073
SRR13332312 SAMN17187130 GSE164073
SRR13332313 SAMN17187130 GSE164073

The samples and platforms of a GEO series, and the characteristics of a sample:

geo_samples(con, "GSE164073") |>
  dplyr::select(gsm, title, gpl, sra_experiment)
gsm title gpl sra_experiment
GSM4996084 Cornea_mock_1 GPL18573 SRX9759115
GSM4996085 Cornea_mock_2 GPL18573 SRX9759116
GSM4996086 Cornea_mock_3 GPL18573 SRX9759117
GSM4996087 Cornea_CoV2_1 GPL18573 SRX9759118
GSM4996088 Cornea_CoV2_2 GPL18573 SRX9759119
GSM4996089 Cornea_CoV2_3 GPL18573 SRX9759120
GSM4996090 Limbus_mock_1 GPL18573 SRX9759121
GSM4996091 Limbus_mock_2 GPL18573 SRX9759122
GSM4996092 Limbus_mock_3 GPL18573 SRX9759123
GSM4996093 Limbus_CoV2_1 GPL18573 SRX9759124
GSM4996094 Limbus_CoV2_2 GPL18573 SRX9759125
GSM4996095 Limbus_CoV2_3 GPL18573 SRX9759126
GSM4996096 Sclera_mock_1 GPL18573 SRX9759127
GSM4996097 Sclera_mock_2 GPL18573 SRX9759128
GSM4996098 Sclera_mock_3 GPL18573 SRX9759129
GSM4996099 Sclera_CoV2_1 GPL18573 SRX9759130
GSM4996100 Sclera_CoV2_2 GPL18573 SRX9759131
GSM4996101 Sclera_CoV2_3 GPL18573 SRX9759132
geo_characteristics(con, "GSM4996084")
gsm channel tag value
GSM4996084 1 tissue cornea
GSM4996084 1 infection mock
GSM4996084 1 time point 24 hours

sra_search() and geo_search() match study and series titles and abstracts, case-insensitively:

sra_search(con, "single cell%glioma", limit = 5)
study_accession study_title study_type study_abstract center_name bioproject_accession geo_accession
ERP144083 Longitudinal scRNA-Seq of immune cells from GL261 murine brain Tumors and MHC class II deficient tumor-mircoenvironments Transcriptome Analysis Longitudinal phenotyping of T cells and myeloid cells in early (day 14) and late (day26) GL261 tumors. Single cell RNA sequencing of CD45+ immune cell from intracranial murine GL261-SIINFEKL tumors 20 days after inoculation. SIINFEKL-reactive T cells were sorted based on dextramer staining. Using time-resolved scRNA-seq of murine tumor-infiltrating immune cells from early (d14) and late stage (d26) syngeneic GL261 gliomas we observed constant MHCII expression by murine microglia over time and overall high but decreasing MHCII expression in late stage bbm indicating a dynamic process of MHCII expression. We show that loss of major histocompatibility complex (MHC) class II (MHCII)-restricted antigen presentation on bbm drives dysfunctional intratumoral tumor-reactive CD8+ T cell states through increased expression of Tox, a critical regulator of T cell exhaustion. By calculating the normalized abundance of T cell states along the pseudotime trajectory of SIINFEKL-reactive CD8+ T cells retrieved from myeloidMHCII-proficient and -deficient microenvironments, we found an enrichment of a distinct T cell state in myeloidMHCIIKO CD8+ T cells that was defined by peak expression of exhaustion markers. Mechanistically, MHCII-dependent activation of CD4+ T cells restricts myeloid-derived osteopontin that triggers a chronic activation of nuclear factor of activated T cells (Nfat)2 in tumor-reactive CD8+ T cells. In summary, we provide evidence that MHCII-restricted antigen presentation on bbm is a key mechanism to directly maintain functional cytotoxic T cell states in brain tumors. DKTK Clinical Cooperation Unit (CCU) Neuroimmunology and Brain Tumor Immunology, German Cancer Research Center (DKFZ), Heidelberg, Germany. PRJEB59018 NA
SRP042161 Single cell RNA-seq of primary human glioblastomas Transcriptome Analysis We report transcriptomes from 430 single glioblastoma cells isolated from 5 individual tumors and 102 single cells from gliomasphere cells lines generated using SMART-seq. In addition, we report population RNA-seq from the five tumors as well as RNA-seq from cell lines derived from 3 tumors (MGH26, MGH28, MGH31) cultured under serum free (GSC) and differentiated (DGC) conditions. This dataset highlights intratumoral heterogeneity with regards to the expression of de novo derived transcriptional modules and established subtype classifiers. Overall design: Operative specimens from five glioblastoma patients (MGH26, MGH28, MGH29, MGH30, MGH31) were acutely dissociated, depleted for CD45+ inflammatory cells and then sorted as single cells (576 samples). Population controls for each tumor were isolated by sorting 2000-10000 cells and processed in parallel (5 population control samples). Single cells from two established cell lines, GBM6 and GBM8, were also sorted as single cells (192 samples). SMART-seq protocol was implemented to generate single cell full length transcriptomes (modified from Shalek, et al Nature 2013) and sequenced using 25 bp paired end reads. Single cell cDNA libraries for MGH30 were resequenced using 100 bp paired end reads to allow for isoform and splice junction reconstruction (96 samples, annotated MGH30L). Cells were also cultured in serum free conditions to generate gliomasphere cell lines for MGH26, MGH28, and MGH31 (GSC) which were then differentiated using 10% serum (DGC). Population RNA-seq was performed on these samples (3 GSC, 3 DGC, 6 total). The initial dataset included 875 RNA-seq libraries (576 single glioblastoma cells, 96 resequenced MGH30L, 192 single gliomasphere cells, 5 tumor population controls, 6 population libraries from GSC and DGC samples). Data was processed as described below using RSEM for quantification of gene expression. 5,948 genes with the highest composite expression either across all single cells combined (average log2(TPM)>4.5) or within a single tumor (average log2(TPM)>6 in at least one tumor) were included. Cells expressing less than 2,000 of these 5,948 genes were excluded. The final processed dataset then included 430 primary single cell glioblastoma transcriptomes, 102 single cell transcriptomes from cell lines(GBM6,GBM8), 5 population controls (1 for each tumor), and 6 population libraries from cell lines derived from the tumors (GSC and DGC for MGH26, MGH28 and MGH31). The final matrix (GBM_data_matrix.txt) therefore contains 5948 rows (genes) quantified in 543 samples (columns). Please note that the samples which are not included in the data processing are indicated in the sample description field. GEO PRJNA248302 GSE57872
SRP060524 Single cell RNA-seq analysis of oligodendroglioma Transcriptome Analysis To understand the diversity of expression states within oligodendroglioma tumors, we obtained six freshly resected samples, profiled ~1000 cells from each tumor and examined their diversity. Overall design: Tumors were disaggregated, sorted into single cells, and profiled by Smart-seq2. GSM1812084 to GSM1815456: Submitter declares reads will be made available through dbGaP. Sample records after GSM1815456: Submitter declares reads will be submitted to controlled access SRA and/or dbGaP. The sample records that follow GSM1815456 are incomplete. GEO PRJNA289244 GSE70630
SRP067604 Single cell transcriptome dynamics and subpopulation heterogeneity in radiation treated recurrent glioma Transcriptome Analysis Radiation is the frontline treatment for malignant gliomas. Intra-tumoral heterogeneity has been proposed to grant cancer cells a superior trajectory and survival advantage to avoid therapeutic interventions including radiation. However, direct evidence to support the hypothesis via the transcriptome dynamics of glioma during radiation therapy is limited. The current study aim to measure the functional subpopulation dynamics before and after radiation treatment that assist the radiation resistance at single cell resolution. We investigate the single cell transcriptome and biological pathways of primary glioma mouse model and post-radiation early/late time point. Specifically, we used the RCAS mouse model for gliomas, which overexpress PDGFRA as the model. Using single cell transcriptome, for the first time, we confirmed the proneural classification of PDGFRA RCAS glioma mouse model and its heterogeneity. We found that recurrent dominant subpopulations are featured with elevated proliferation rate and hypoxia. In addition, we identified a subpopulation of radiation resistant cells in at early time points with elevated stemness. Lastly, the subpopulations composition undergoes large changes at late time point when the tumor recurred. Single cell transcriptome profiling of radiation treated mouse glioma mouse model identified tumor cell subpopulations dynamics. It provides novel insights into the molecular phenotype and biological functions of radiation resistant tumor cell population. Overall design: To study mechanism of glioma relapse posterior to therapeutic dose irradiation, we have used PDGF-driven murine RCAS-tva glioma model as described in Methods. These mice develop high-grade glioma at approximately week 6. The tumors mimic pathological radiological and characteristics of glioblastoma. Since tumors in the RCAS-tva mice were driven by enhanced PDGF signaling and tumor cells were potentially derived from oligodendritic progenitor cells, majority of transformed cells were are abundantly expressing PDGFRa. Once we detected the radiographic primary high-grade tumor in RCAS-tva mice, we started to irradiate mice’s brain at 2 Gy every other day for five times. During week one post-radiation, we observed complete regression of primary tumors after radiation, confirmed by both MRI and histology. Thereafter, we had followed up the recurrence of tumors by MRI every week by MRI. We demonstrated that the mice had developed secondary high-grade tumors from week 4 to week 8 post-irradiation. We collected tumor samples from three time points: primary glioma (T1, primary stage), early phase of relapse post-radiation (T2, early stage), and late phase of relapse post-radiation (T3, late stage). Tumor samples were dissociated and subjected for FCAS. The stromal cell including immune cells and endothelial cells were removed and PDGFRa positive cells were isolated for subsequent analysis. To examine the transcriptome level heterogeneity of tumor cells of these three stages, we performed bulk RNA-seq and single cell RNA-seq experiments for the FCAS sorted tumor cells using Fluidgm C1 system. GEO PRJNA306557 GSE76184
SRP081644 An automatec microwell platform for large-scale single cell RNA-seq. Other We report an automated microwell array platform for single cell RNA-seq with significantly improved performance over previous implementations. We demonstrate cell capture efficiencies of >50%, compatibility with commercially available barcoded mRNA capture beads, and parallel expression profiling from thousands of individual cells. We apply our system to comprehensively assess heterogeneity in gene expression of patient-derived glioma neurospheres and uncover subpopulations similar to those observed in human glioma tissue. Overall design: Performed single cell RNA-seq on thousands of cells from three cell lines. GEO PRJNA338815 GSE85575
DBI::dbDisconnect(con)

A local copy

omicidx_download() copies every table of a release into a local DuckDB file and checks the row counts against the release’s manifest.json. It’s the R counterpart of restore.sql, and the way to use a monthly release. A full release is tens of GB, so this takes a while:

path <- omicidx_download("2026-10", "omicidx-2026-10.duckdb")
con <- DBI::dbConnect(duckdb::duckdb(), path, read_only = TRUE)
DBI::dbGetQuery(con, "SELECT count(*) AS n FROM sradb.study")
DBI::dbDisconnect(con)

Migrating from SRAdb and GEOmetadb

The sradb and geometadb schemas follow the SRAdb and GEOmetadb tables, so most code ports by connecting with omicidx_connect() and prefixing table names with the schema:

SRAdb / GEOmetadb omicidxr
getSRAdbFile() or getSQLiteFile(), then dbConnect(SQLite(), ...) con <- omicidx_connect()
dbGetQuery(sra_con, "SELECT * FROM study ...") DBI::dbGetQuery(con, "SELECT * FROM sradb.study ...")
sraConvert(in_acc, out_type, sra_con) sra_convert(con, in_acc, out_type)
getSRAinfo(), listSRAfile() sra_runs(con, in_acc). Gives run accessions for the SRA Toolkit, not file URLs
getSRA(search_terms, out_types, sra_con) sra_search(con, query)
Parsing characteristics_ch1 by hand geo_characteristics(con, gsm)

There are no SRA submission or GEO DataSet (GDS) tables, and characteristics_ch1 is a list of tag/value pairs rather than a string. The Getting Started vignette has the full list of differences, and the reference documents every function.