Easily Process a Batch of Cox Models

Overview

ezcox: Easily Process a Batch of Cox Models

CRAN status Hits R-CMD-check Codecov test coverage Lifecycle: stable

The goal of ezcox is to operate a batch of univariate or multivariate Cox models and return tidy result.

Installation

You can install the released version of ezcox from CRAN with:

install.packages("ezcox")

And the development version from GitHub with:

# install.packages("remotes")
remotes::install_github("ShixiangWang/ezcox")

It is possible to install ezcox from Conda conda-forge channel:

conda install r-ezcox --channel conda-forge

Visualization feature of ezcox needs the recent version of forestmodel, please run the following commands:

remotes::install_github("ShixiangWang/forestmodel")

🔰 Example

This is a basic example which shows you how to get result from a batch of cox models.

library(ezcox)
#> Welcome to 'ezcox' package!
#> =======================================================================
#> You are using ezcox version 0.8.1
#> 
#> Github page  : https://github.com/ShixiangWang/ezcox
#> Documentation: https://shixiangwang.github.io/ezcox/articles/ezcox.html
#> 
#> Run citation("ezcox") to see how to cite 'ezcox'.
#> =======================================================================
#> 
library(survival)

# Build unvariable models
ezcox(lung, covariates = c("age", "sex", "ph.ecog"))
#> => Processing variable age
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
#> => Processing variable sex
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
#> => Processing variable ph.ecog
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
#> # A tibble: 3 × 12
#>   Variable is_control contrast_level ref_level n_contrast n_ref    beta    HR
#>   <chr>    <lgl>      <chr>          <chr>          <int> <int>   <dbl> <dbl>
#> 1 age      FALSE      age            age              228   228  0.0187 1.02 
#> 2 sex      FALSE      sex            sex              228   228 -0.531  0.588
#> 3 ph.ecog  FALSE      ph.ecog        ph.ecog          227   227  0.476  1.61 
#> # … with 4 more variables: lower_95 <dbl>, upper_95 <dbl>, p.value <dbl>,
#> #   global.pval <dbl>

# Build multi-variable models
# Control variable 'age'
ezcox(lung, covariates = c("sex", "ph.ecog"), controls = "age")
#> => Processing variable sex
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
#> => Processing variable ph.ecog
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
#> # A tibble: 4 × 12
#>   Variable is_control contrast_level ref_level n_contrast n_ref    beta    HR
#>   <chr>    <lgl>      <chr>          <chr>          <int> <int>   <dbl> <dbl>
#> 1 sex      FALSE      sex            sex              228   228 -0.513  0.599
#> 2 sex      TRUE       age            age              228   228  0.017  1.02 
#> 3 ph.ecog  FALSE      ph.ecog        ph.ecog          227   227  0.443  1.56 
#> 4 ph.ecog  TRUE       age            age              228   228  0.0113 1.01 
#> # … with 4 more variables: lower_95 <dbl>, upper_95 <dbl>, p.value <dbl>,
#> #   global.pval <dbl>
lung$ph.ecog = factor(lung$ph.ecog)
zz = ezcox(lung, covariates = c("sex", "ph.ecog"), controls = "age", return_models=TRUE)
#> => Processing variable sex
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
#> => Processing variable ph.ecog
#> ==> Building Surv object...
#> ==> Building Cox model...
#> ==> Done.
mds = get_models(zz)
str(mds, max.level = 1)
#> List of 2
#>  $ Surv ~ sex + age    :List of 19
#>   ..- attr(*, "class")= chr "coxph"
#>   ..- attr(*, "Variable")= chr "sex"
#>  $ Surv ~ ph.ecog + age:List of 22
#>   ..- attr(*, "class")= chr "coxph"
#>   ..- attr(*, "Variable")= chr "ph.ecog"
#>  - attr(*, "class")= chr [1:2] "ezcox_models" "list"
#>  - attr(*, "has_control")= logi TRUE

show_models(mds)

🌟 Vignettes

📃 Citation

If you are using it in academic research, please cite the preprint arXiv:2110.14232 along with URL of this repo.

Comments
  • Fast way to add interaction terms?

    Fast way to add interaction terms?

    Hi, just wondering how the the interaction terms can be handled as "controls" here. Any way to add them rather than manually create new 'interaction variables' in the data? Cheers.

    opened by lijing-lin 12
  • similar tools or approach

    similar tools or approach

    • https://github.com/kevinblighe/RegParallel https://bioconductor.org/packages/release/data/experiment/vignettes/RegParallel/inst/doc/RegParallel.html
    • https://pubmed.ncbi.nlm.nih.gov/25769333/
    opened by ShixiangWang 12
  • 没有show-models这个函数

    没有show-models这个函数

    install.packages("ezcox")#先安装包 packageVersion("ezcox")#0.4.0版本 library(survival) library(ezcox) library("devtools") install.packages("devtools") devtools::install_github("ShixiangWang/ezcox") lung$ph.ecog <- factor(lung$ph.ecog) zz <- ezcox(lung, covariates = c("sex", "ph.ecog"), controls = "age", return_models = TRUE) zz mds <- get_models(zz) str(mds, max.level = 1) install.packages("forestmodel") library("forestmodel") show_models(mds) 问题是没有show-models这个函数

    opened by demi0304 4
  • 并行速度不够快

    并行速度不够快

    library(survival)
    ### write a function
    fastcox_single <- function(num){
      data= cbind(clin,expreset[,num])
      UniNames <- colnames(data)[-c(1:2)]
      do.call(rbind,lapply(UniNames,function(i){
        surv =as.formula(paste('Surv(times, status)~',i))
        cur_cox=coxph(surv, data = data)
        x = summary(cur_cox)
        HR=x$coefficients[i,"exp(coef)"]
        HR.confint.lower = signif(x$conf.int[i,"lower .95"],3)
        HR.confint.upper = signif(x$conf.int[i,"upper .95"],3)
        CI <- paste0("(",HR.confint.lower, "-",HR.confint.upper,")")
        p.value=x$coef[i,"Pr(>|z|)"]
        data.frame(gene=i,HR=HR,CI=CI,p.value=p.value)
      }))
    }
    
    
    clin = share.data[,1:2]
    expreset = share.data[,-c(1:2)]
    length = ncol(expreset)
    groupdf = data.frame(colnuber = seq(1,length),
                         group = rep(1:ceiling(length/100),each=100,length.out=length))
    index = split(groupdf$colnuber,groupdf$group)
    library(future.apply)
    # options(future.globals.maxSize= 891289600)
    plan(multiprocess)
    share.data.os.result=do.call(rbind,future_lapply(index,fastcox_single))
    
    
    #=== Use ezcox
    # devtools::install_github("ShixiangWang/ezcox")
    res = ezcox::ezcox(share.data, covariates = colnames(share.data)[-(1:2)], parallel = TRUE, time = "times")
    
    
    share.data$VIM.INHBE
    tt = ezcox::ezcox(share.data, covariates = "VIM.INHBE", return_models = T, time = "times")
    
    
    
    

    大批量计算时两者时间差4倍

    enhancement 
    opened by ShixiangWang 3
  • 建议

    建议

    诗翔:

    我用你的这个R包,有两个建议,你可以改进一下:

    1. 对covariates的顺序,按照用户给的顺序进行展示,现在是按照字符的大小排序的。
    2. 对HR太大的值,使用科学记数法进行展示

    这个是用的代码

    zz = ezcox(
      scores.combined,
      covariates = c("JSI", "Tindex", "Subclonal_Aca", "Subclonal_Nec", "ITH_Aca", "ITH_Nec"),
      controls = "Age",
      time = "Survival_months",
      status = "Death",
      return_models = TRUE
    )
    
    mds = get_models(zz)
    
    show_models(mds, drop_controls = TRUE)
    
    

    这个是现在的图

    image

    opened by qingjian1991 2
  • Change format setting including text size

    Change format setting including text size

    See

    library(survival)
    library(forestmodel)
    library(ezcox)
    show_forest(lung, covariates = c("sex", "ph.ecog"), controls = "age", format_options = forest_model_format_options(text_size = 3))
    

    image

    opened by ShixiangWang 0
  • Weekly Digest (22 September, 2019 - 29 September, 2019)

    Weekly Digest (22 September, 2019 - 29 September, 2019)

    Here's the Weekly Digest for ShixiangWang/ezcox:


    ISSUES

    Last week, no issues were created.


    PULL REQUESTS

    Last week, no pull requests were created, updated or merged.


    COMMITS

    Last week there were no commits.


    CONTRIBUTORS

    Last week there were no contributors.


    STARGAZERS

    Last week there were no stargazers.


    RELEASES

    Last week there were no releases.


    That's all for last week, please :eyes: Watch and :star: Star the repository ShixiangWang/ezcox to receive next weekly updates. :smiley:

    You can also view all Weekly Digests by clicking here.

    Your Weekly Digest bot. :calendar:

    opened by weekly-digest[bot] 0
  • Weekly Digest (15 September, 2019 - 22 September, 2019)

    Weekly Digest (15 September, 2019 - 22 September, 2019)

    Here's the Weekly Digest for ShixiangWang/ezcox:


    ISSUES

    Last week, no issues were created.


    PULL REQUESTS

    Last week, no pull requests were created, updated or merged.


    COMMITS

    Last week there were no commits.


    CONTRIBUTORS

    Last week there were no contributors.


    STARGAZERS

    Last week there were no stargazers.


    RELEASES

    Last week there were no releases.


    That's all for last week, please :eyes: Watch and :star: Star the repository ShixiangWang/ezcox to receive next weekly updates. :smiley:

    You can also view all Weekly Digests by clicking here.

    Your Weekly Digest bot. :calendar:

    weekly-digest 
    opened by weekly-digest[bot] 0
  • Weekly Digest (8 September, 2019 - 15 September, 2019)

    Weekly Digest (8 September, 2019 - 15 September, 2019)

    Here's the Weekly Digest for ShixiangWang/ezcox:


    ISSUES

    Last week, no issues were created.


    PULL REQUESTS

    Last week, no pull requests were created, updated or merged.


    COMMITS

    Last week there were no commits.


    CONTRIBUTORS

    Last week there were no contributors.


    STARGAZERS

    Last week there were no stargazers.


    RELEASES

    Last week there were no releases.


    That's all for last week, please :eyes: Watch and :star: Star the repository ShixiangWang/ezcox to receive next weekly updates. :smiley:

    You can also view all Weekly Digests by clicking here.

    Your Weekly Digest bot. :calendar:

    weekly-digest 
    opened by weekly-digest[bot] 0
  • Weekly Digest (1 September, 2019 - 8 September, 2019)

    Weekly Digest (1 September, 2019 - 8 September, 2019)

    Here's the Weekly Digest for ShixiangWang/ezcox:


    ISSUES

    Last week, no issues were created.


    PULL REQUESTS

    Last week, no pull requests were created, updated or merged.


    COMMITS

    Last week there were no commits.


    CONTRIBUTORS

    Last week there were no contributors.


    STARGAZERS

    Last week there were no stargazers.


    RELEASES

    Last week there were no releases.


    That's all for last week, please :eyes: Watch and :star: Star the repository ShixiangWang/ezcox to receive next weekly updates. :smiley:

    You can also view all Weekly Digests by clicking here.

    Your Weekly Digest bot. :calendar:

    weekly-digest 
    opened by weekly-digest[bot] 0
  • Weekly Digest (28 August, 2019 - 4 September, 2019)

    Weekly Digest (28 August, 2019 - 4 September, 2019)

    Here's the Weekly Digest for ShixiangWang/ezcox:


    ISSUES

    Last week, no issues were created.


    PULL REQUESTS

    Last week, no pull requests were created, updated or merged.


    COMMITS

    Last week there were no commits.


    CONTRIBUTORS

    Last week there were no contributors.


    STARGAZERS

    Last week there were no stargazers.


    RELEASES

    Last week there were no releases.


    That's all for last week, please :eyes: Watch and :star: Star the repository ShixiangWang/ezcox to receive next weekly updates. :smiley:

    You can also view all Weekly Digests by clicking here.

    Your Weekly Digest bot. :calendar:

    weekly-digest 
    opened by weekly-digest[bot] 0
Releases(v1.0.1)
Owner
Shixiang Wang
Don't Program by Coincidence.
Shixiang Wang
The official implementation of paper Siamese Transformer Pyramid Networks for Real-Time UAV Tracking, accepted by WACV22

SiamTPN Introduction This is the official implementation of the SiamTPN (WACV2022). The tracker intergrates pyramid feature network and transformer in

Robotics and Intelligent Systems Control @ NYUAD 29 Jan 08, 2023
Code implementing "Improving Deep Learning Interpretability by Saliency Guided Training"

Saliency Guided Training Code implementing "Improving Deep Learning Interpretability by Saliency Guided Training" by Aya Abdelsalam Ismail, Hector Cor

8 Sep 22, 2022
Official PyTorch implementation of Retrieve in Style: Unsupervised Facial Feature Transfer and Retrieval.

Retrieve in Style: Unsupervised Facial Feature Transfer and Retrieval PyTorch This is the PyTorch implementation of Retrieve in Style: Unsupervised Fa

60 Oct 12, 2022
[ICRA 2022] An opensource framework for cooperative detection. Official implementation for OPV2V.

OpenCOOD OpenCOOD is an Open COOperative Detection framework for autonomous driving. It is also the official implementation of the ICRA 2022 paper OPV

Runsheng Xu 322 Dec 23, 2022
simple artificial intelligence utilities

Simple AI Project home: http://github.com/simpleai-team/simpleai This lib implements many of the artificial intelligence algorithms described on the b

921 Dec 08, 2022
PyTorch Implementations for DeeplabV3 and PSPNet

Pytorch-segmentation-toolbox DOC Pytorch code for semantic segmentation. This is a minimal code to run PSPnet and Deeplabv3 on Cityscape dataset. Shor

Zilong Huang 746 Dec 15, 2022
Notepy is a full-featured Notepad Python app

Notepy A full featured python text-editor Notable features Autocompletion for parenthesis and quote Auto identation Syntax highlighting Compile and ru

Mirko Rovere 11 Sep 28, 2022
Send text to girlfriend in the morning

Girlfriend Text Send text to girlfriend (or really anyone with a phone number) in the morning 1. Configure your settings in utils.py. phone_number = "

Paras Adhikary 199 Oct 25, 2022
A new video text spotting framework with Transformer

TransVTSpotter: End-to-end Video Text Spotter with Transformer Introduction A Multilingual, Open World Video Text Dataset and End-to-end Video Text Sp

weijiawu 67 Jan 03, 2023
[ACM MM 2021] TSA-Net: Tube Self-Attention Network for Action Quality Assessment

Tube Self-Attention Network (TSA-Net) This repository contains the PyTorch implementation for paper TSA-Net: Tube Self-Attention Network for Action Qu

ShunliWang 18 Dec 23, 2022
A collection of inference modules for fastai2

fastinference A collection of inference modules for fastai including inference speedup and interpretability Install pip install fastinference There ar

Zachary Mueller 83 Oct 10, 2022
Image-to-image regression with uncertainty quantification in PyTorch

Image-to-image regression with uncertainty quantification in PyTorch. Take any dataset and train a model to regress images to images with rigorous, distribution-free uncertainty quantification.

Anastasios Angelopoulos 25 Dec 26, 2022
Repository for the AugmentedPCA Python package.

Overview This Python package provides implementations of Augmented Principal Component Analysis (AugmentedPCA) - a family of linear factor models that

Billy Carson 6 Dec 07, 2022
A time series processing library

Timeseria Timeseria is a time series processing library which aims at making it easy to handle time series data and to build statistical and machine l

Stefano Alberto Russo 11 Aug 08, 2022
TuckER: Tensor Factorization for Knowledge Graph Completion

TuckER: Tensor Factorization for Knowledge Graph Completion This codebase contains PyTorch implementation of the paper: TuckER: Tensor Factorization f

Ivana Balazevic 296 Dec 06, 2022
A Real-World Benchmark for Reinforcement Learning based Recommender System

RL4RS: A Real-World Benchmark for Reinforcement Learning based Recommender System RL4RS is a real-world deep reinforcement learning recommender system

121 Dec 01, 2022
Pytorch implementation for "Distribution-Balanced Loss for Multi-Label Classification in Long-Tailed Datasets" (ECCV 2020 Spotlight)

Distribution-Balanced Loss [Paper] The implementation of our paper Distribution-Balanced Loss for Multi-Label Classification in Long-Tailed Datasets (

Tong WU 304 Dec 22, 2022
An AutoML Library made with Optuna and PyTorch Lightning

An AutoML Library made with Optuna and PyTorch Lightning Installation Recommended pip install -U gradsflow From source pip install git+https://github.

GradsFlow 294 Dec 17, 2022
Safe Bayesian Optimization

SafeOpt - Safe Bayesian Optimization This code implements an adapted version of the safe, Bayesian optimization algorithm, SafeOpt [1], [2]. It also p

Felix Berkenkamp 111 Dec 11, 2022
DeepStruc is a Conditional Variational Autoencoder which can predict the mono-metallic nanoparticle from a Pair Distribution Function.

ChemRxiv | [Paper] XXX DeepStruc Welcome to DeepStruc, a Deep Generative Model (DGM) that learns the relation between PDF and atomic structure and the

Emil Thyge Skaaning Kjær 13 Aug 01, 2022