Code Monkey home page Code Monkey logo

transgi's Introduction

transGI: Nonparametric transformation method of transcriptome based on prior gene interactions

The interaction between genes can be represented as a scale-free directed network. A common practice is to infer the strength of signals for genes and their downstream functions based on gene expression levels. Although this approach is simple, it does not consider prior information on gene-gene interactions.

To incorporate prior information on gene interactions into the model, a non-parametric transformation of transcript expression is a worthwhile consideration. transGI has compiled several methods and pairs of gene interactions from previously published literature, allowing users to quantitatively construct gene interaction networks de novo.

Nonparametric transformation method of transcriptome based on prior gene interactions has the following potential advantages:

  1. It allows users to construct a gene interaction network for single samples, by comparing it with a reference network or selecting high-variance features from it, quantifying the perturbation effects of gene expression in specific tissues or central networks that promote biological events;
  2. Non-parametric transformation methods have good cross-dataset performance and can robustly remove batch effects between data sets. For microarrays and RNA-seq, due to differences in platforms, technologies, quantification methods, and sensitivities between the two, the effectiveness of nonparametric transformation methods is comparable to traditional methods such as quantile regression;
  3. Nonparametric transformation methods rely on fewer assumptions.

Currently, the functions supported by transGI include:

  1. Using transformation methods from previously publication like deltarank or pairwise calculation methods to construct single-sample networks on prior gene interaction pairs.
  2. Providing a gene enrichment method that uses prior gene interaction pairs as background gene sets. Simply put, it is a weighted gene enrichment method that uses the node degree of each prior gene interaction pair as weight.
  3. Providing a series of methods for selecting features with high variance or correlation with certain indicators, as well as visualizing gene interaction networks.

Installation

You can install the development version of transGI from GitHub with:

# install.packages("devtools")
devtools::install_github("Vinnish-A/transGI")

Example

Use the transGI function to transform transcriptome data.

library(transGI)

testMat = system.file('extdata', 'testMat.csv', package = 'transGI') |>
  read.csv(row.names = 'symbol') |>
  as.matrix() |> 
  _[1:2000, ]
res = transGI(testMat, 'deltarank', 'reactome')

Use future component to implement parallel computing.

future::plan('multisession', workers = 4)
res = transGI(testMat, 'deltarank', 'reactome')

Use cal_HR and a series of evaluation function to select features. Execute selector to get existing methods.

testPhen = system.file('extdata', 'testPhen.csv', package = 'transGI') |>
  read.csv(row.names = 'sample')

res_eval = sapply(res$converted, cal_HR, time_ = testPhen$time, event_ = testPhen$event) |> t()
symbols = net2gene(res$genepair, rownames(res_eval)[res_eval[, 'p'] < 0.05])

Use enrichGraph to calculate the enrichment results of genes in the background gene interaction network, while autoBar and autoBubble provides delicate visualization of enrich result.

db = read_gmt('material/h.all.v2023.2.Hs.symbols.gmt')
res_enrich = enrichGraph(symbols, db_ = db, pathways_ = 'all', bgNet_ = 'reactome')

autoBar(res_enrich)

Use visNet to visualize gene interactions.

visNet(symbols, degree_ = 1)

Future Plan

Currently, transGI has implemented a series of functions including feature engineering, feature selection, gene enrichment, and simple visualization. In the future, we plan to add the following features to transGI:

  1. Infer new potential gene pairs for interaction based on perturbation effects in experimental and control groups
  2. For networks of interactions between two or more genes, add functions such as network comparison and key node selection
  3. Add more methods for constructing or evaluating single-sample interaction networks and calculating perturbation effects.

Citation

The calculation method for deltarank is obtained from (Chen et al. 2020), and the pairwise calculation method is obtained from (Zhu et al. 2022)

If you use transGI in your research, please cite:

@Manual{,
  title = {transGI: Nonparametric transformation method of transcriptome based on prior gene interactions},
  author = {Zhihao Xu},
  year = {2024},
  note = {R package version 0.1.0},
  url = {https://github.com/Vinnish-A/transGI},
}

reference

Chen, Yuanyuan, Yu Gu, Zixi Hu, and Xiao Sun. 2020. “Sample-specific perturbation of gene interactions identifies breast cancer subtypes.” Briefings in Bioinformatics 22 (4): bbaa268. https://doi.org/10.1093/bib/bbaa268.

Zhu, Sujie, Weikaixin Kong, Jie Zhu, Liting Huang, Shixin Wang, Suzhen Bi, and Zhengwei Xie. 2022. “The genetic algorithm-aided three-stage ensemble learning method identified a robust survival risk score in patients with glioma.” Briefings in Bioinformatics 23 (5): bbac344. https://doi.org/10.1093/bib/bbac344.

transgi's People

Contributors

vinnish-a avatar

Stargazers

 avatar Ke Xu avatar  avatar Junming Bu avatar  avatar  avatar  avatar  avatar iFans avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.