Skip to main content

BioRAG codecov workflow version license

This is the repository for BioRAG1. BioRAG can identify relevant studies within the ARCHS4 database, using a text-based query or a gene set.

Image Description

Table of Contents

Installation

BioRAG has been tested on python 3.9, 3.10, and 3.11.

Install BioRAG via PyPI with the following command:

pip install biorag

Additional files

These additional files will need to be downloaded. Below is a table containing a description of these files, and the links.

File Name Description Size checksum
semantic_db.h5ad semantic vector store 58Mb bd23f8835032dcd709f8ca05915038b3
transcriptomic_db.h5ad transcriptomic vector store 38GB d26e564653424ed6e189aea7d0be5d4d
human_gene_v2.2.h5 ARCHS42 hdf5 database 37GB f546fdecc0ba20bf2a5571628f132ca5

Both the semantic vector stores and the transcriptomic vector stores are AnnData3 objects, containing both the embedding matrices and the indices which link each embedding vector to an experiment in the ARCHS4 database. Additionally, the transcriptomic vector store also contains derived count data of "representative transcriptomes" in the ARCHS4 database.

Usage

To load BioRAG, follow these steps:

  1. Download the additional files described above.

  2. Instantiate a query_db object to perform BioRAG search in following way:

    from biorag.biorag import Query_DB
    
    new_query_db = Query_DB(SEMANTIC_VECTOR_STORE_PATH, TRANSCRIPTOME_VECTOR_STORE_PATH, ARCHS4_HDF5_DATABASE_PATH)
    
  3. Run BioRAG with a gene set query and/or textual query. The gene set is a python list, and the textual query is a python string.

    text_query = "This text query usually describes the experiment"
    
    geneset_query = ["IFNG", "IRF1", "IFR2"]
    
    result = new_query_db.search(geneset = geneset_query, text_query = text_query)
    
  4. The output is a Results object, which is composed of three pandas dataframes, which can be accessed via dot notation.

  • The "seed_studies" variable holds a dataframe containing study metadata from the search step.
  • The "expansion_studies" holds a dataframe of studies from the expansion step,
  • The "samples" variable holds a dataframe of the relevant samples, with metadata derived from the ARCHS4 database.
    result = new_query_db.search(geneset = geneset_query, text_query = text_query)

    # save the results as csv files
    result.seed_studies.to_csv("relevant_seed_studies.csv")
    result.expansion_studies.to_csv("relevant_expansion_studies.csv")
    result.samples.to_csv("relevant_samples.csv")

Modifying searches using different inputs

All BioRAG searches should contain at least a text query or a gene set query. Users can choose one of several search strategies, with examples illustrated below:

  • Strategy 1: Text only as input

    result = new_query_db.search(text_query = text_query, geneset = None)
    
  • Strategy 2: Text and gene set as input

    result = new_query_db.search(text_query = text_query, geneset = geneset_query)
    
  • Strategy 3: Gene set only as input

    result = new_query_db.search(text_query = None, geneset = geneset_query)
    

Modifying searches using different expansion strategies

By default, BioRAG will perform semantic search, followed by transcriptomic expansion. However, this search strategy can be modified. For instance, one can use semantic search, followed by perfoming the expansion step using semantic similiarity. In this case, the transcriptome vector store is not queried.

The "seed" and "expand" parameters accepts either "transcriptome" or "semantic" as options.

If transcriptome search is performed as the initial step, the count data from "representative transcriptomes" in the transcriptome vector store is used to search for enriched samples, using ssGSEA (single sample gene set enrichment analysis) to rank the most relevant samples. In semantic search, BioRAG retrieves the most semantically similar studies to the text query, using cosine distance as the metric.

  1. Example 1 - perform semantic search, followed by transcriptome expansion.

    result = new_query_db.search(text_query = text_query, geneset = geneset_query, search = "semantic", expand = "transcriptome")
    
  2. Example 2 - perform transcriptome search, followed by semantic expansion.

    result = new_query_db.search(text_query = text_query, geneset = geneset_query, search = "transcriptome", expand = "semantic")
    
  3. Example 3 - perform semantic search, followed by semantic expansion, using only a text query.

    result = new_query_db.search(text_query = text_query, geneset = None, search = "semantic", expand = "semantic")
    

The types of searches which can be performed depend on input. For instance,if only a gene set is supplied, the search step defaults to "transcriptome", with the user able to select between "transcriptome" and "semantic" for the expansion step.

Optional single sample gene set enrichment analysis (ssGSEA)

To further refine the set of samples and studies returned by BioRAG search, ssGSEA can be peformed on all samples returned by the query. Use the "perform_enrichment" parameter to specifiy if ssGSEA should be performed on all samples. If so, the returned dataframe will contain enrichment scores, pvalues and FDRs. The ssGSEA results will be stored as a dataframe in the "samples" attribute in the Results object.

    result = new_query_db.search(text_query = text_query, geneset = None, search = "semantic", expand = "semantic", perform_enrichment = True)

    # save enrichment results from the sample dataframe
    results.samples.to_csv("samples_with_ssgsea_results.csv")

License

BioRAG is published under the MIT License.

References

  1. Chin WL, & Lassmann, T. (2024). BioRAG: using large language models to discover relevant transcriptome data. bioRxiv. ↩

  2. Lachmann A, Torre D, Keenan AB, Jagodnik KM, Lee HJ, Wang L, Silverstein MC, Ma'ayan A. Massive mining of publicly available RNA-seq data from human and mouse. Nat Commun. 2018 Apr 10;9(1):1366. doi: 10.1038/s41467-018-03751-6. PMID: 29636450; PMCID: PMC5893633. ↩

  3. AnnData ↩

Metadata

Release files for biorag 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for biorag 0.1.7
File Size Uploaded
biorag-0.1.7.tar.gz 16.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for biorag 0.1.7
File Interpreter ABI Platform
biorag-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 33.9 kB

Release files / biorag-0.1.7.tar.gz

Download URL biorag-0.1.7.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ca0e525ddd91fadf6ae6a9cf236770eb1d1a2da70ce9629794a9ee05c5119458
BLAKE2b-256 checksum
How to use checksums
3512078c8c94edbe6b6c81539b8eab327c901c7215b326b145db48f5d8239c61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.9.18 Linux/5.4.0-170-generic

Release files / biorag-0.1.7-py3-none-any.whl

Download URL biorag-0.1.7-py3-none-any.whl
Size 17.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99fa5425dc44789d65c803ca15484955bcd1abaa241dc87036ba49b9fae222c4
BLAKE2b-256 checksum
How to use checksums
31979d4bde435ba5950ddba54a5dd1844174ac4170fc9959d0e1d1e8e68edabf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.9.18 Linux/5.4.0-170-generic

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page