- Notifications
You must be signed in to change notification settings - Fork0
R Package for Comprehensive Cytokine Data Analysis
License
saraswatsh/CytoProfile
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
The goal of CytoProfile is to conduct quality control using biologicalmeaningful cutoff on raw measured values of cytokines. Specifically,test on distributional symmetry to suggest the adopt of transformation.Conduct exploratory analysis including summary statistics, generateenriched barplots, and boxplots. Further, conduct univariate analysisand multivariate analysis for advance analysis.
Before installation of the CytoProfile package, make sure to installBiocManager and mixOmics packages using:
## install BiocManagerif (!requireNamespace("BiocManager",quietly=TRUE)) install.packages("BiocManager")## install mixOmicsBiocManager::install('mixOmics')
You can install the development version of CytoProfile fromGitHub with:
# install.packages("devtools")devtools::install_github("saraswatsh/CytoProfile")
Install CytoProfile fromCRAN with:
install.packages("CytoProfile")See change log for the latest updates and changes atNews
Below are examples of using the functions provided in CytoProfile. Anysaved or generated files that are PDF or PNG format will be found at intheFiguresFolder.
# Loading all packages required# Data manipulation and reshapinglibrary(dplyr)# For data filtering, grouping, and summarising.library(tidyr)# For reshaping data (e.g., pivot_longer, pivot_wider).# Plotting and visualizationlibrary(ggplot2)# For creating all the ggplot-based visualizations.library(gridExtra)# For arranging multiple plots on a single page.library(ggrepel)# For improved label placement in plots (e.g., volcano plots).library(pheatmap)# For heatmap.2, which is used to generate heatmaps.library(plot3D)# For creating 3D scatter plots in PCA and sPLS-DA analyses.library(reshape2)# For data transformation (e.g., melt) in cross-validation plots.# Statistical analysislibrary(mixOmics)# For multivariate analyses (PCA, sPLS-DA, etc.).library(e1071)# For computing skewness and kurtosis.library(pROC)# For ROC curve generation in machine learning model evaluation.# Machine learninglibrary(xgboost)# For building XGBoost classification models.library(randomForest)# For building Random Forest classification models.library(caret)# For cross-validation and other machine learning utilities.# Package development and document renderinglibrary(knitr)# For knitting RMarkdown files and setting chunk options.library(devtools)# For installing the development version of the package from GitHub.# Load in the CytoProfile packagelibrary(CytoProfile)# Loading in datadata("ExampleData1")data_df<-ExampleData1
# Generating boxplots to check for outliers for raw valuescyt_bp(data_df[,-c(1:3)],pdf_title=NULL)
# Removing the first 3 columns to retain only continuous variables.# Generating boxplots to check for outliers for log2 valuescyt_bp(data_df[,-c(1:3)],pdf_title=NULL,scale="log2")
# Using log2 transformation for cytokine values.data_df<-ExampleData1[,-c(3,5:28)]data_df<-dplyr::filter(data_df,Group=="T2D",Treatment=="Unstimulated")# Raw values for group-specific boxplotscyt_bp2(data_df,pdf_title=NULL,scale=NULL)
# Log2-transformed group-specific boxplotscyt_bp2(data_df,pdf_title=NULL,scale="log2")
data_df<-ExampleData1# Histogram of skewness and kurtosis for raw datacyt_skku(data_df[,-c(1:3)],pdf_title=NULL,group_cols=NULL)
# Histogram of skewness and kurtosis with grouping (e.g., "Group")cyt_skku(ExampleData1[,-c(2:3)],pdf_title=NULL,group_cols= c("Group"))
# Generating basic error bar plotsdata_df<-ExampleData1cyt_errbp(data_df[, c("Group","CCL.20.MIP.3A","IL.10")],group_col="Group",p_lab=FALSE,es_lab=FALSE,class_symbol=FALSE,x_lab="Cytokines",y_lab="Concentrations in log2 scale",log2=TRUE)
# Generating Error Bar Plot enriched with p-value and effect sizedata_df<-ExampleData1cyt_errbp(data_df[, c("Group","CCL.20.MIP.3A","IL.10")],group_col="Group",p_lab=TRUE,es_lab=TRUE,class_symbol=TRUE,x_lab="Cytokines",y_lab="Concentrations in log2 scale",log2=TRUE)
# Performing Testdata_df<-ExampleData1[,-c(3)]data_df<-dplyr::filter(data_df,Group!="ND",Treatment!="Unstimulated")# Test examplecyt_ttest(data_df[, c(1:2,5:6)],scale="log2",verbose=TRUE,format_output=TRUE)#> $results#> Outcome Categorical Comparison#> 1 IFN.G Group PreT2D vs T2D#> 2 IL.10 Group PreT2D vs T2D#> 3 IFN.G Treatment CD3/CD28 vs LPS#> 4 IL.10 Treatment CD3/CD28 vs LPS#> Test Estimate Statistic P_value#> 1 Wilcoxon rank sum test with continuity correction -2.463 1599.0 0.008#> 2 Wilcoxon rank sum test with continuity correction -0.956 1625.0 0.012#> 3 Wilcoxon rank sum test with continuity correction 9.024 4132.5 0.000#> 4 Wilcoxon rank sum test with continuity correction 1.690 3091.0 0.000
# Perform ANOVA comparisons test (example with 2 cytokines)data_df<-ExampleData1[,-c(3)]cyt_anova(data_df[, c(1:2,5:6)],format_output=TRUE)#> Outcome Categorical Comparison P_adj#> PreT2D-ND IFN.G Group PreT2D-ND 0.0883#> T2D-ND IFN.G Group T2D-ND 0.9779#> T2D-PreT2D IFN.G Group T2D-PreT2D 0.0550#> PreT2D-ND1 IL.10 Group PreT2D-ND 0.7745#> T2D-ND1 IL.10 Group T2D-ND 0.1546#> T2D-PreT2D1 IL.10 Group T2D-PreT2D 0.0316#> LPS-CD3/CD28 IFN.G Treatment LPS-CD3/CD28 0.0000#> Unstimulated-CD3/CD28 IFN.G Treatment Unstimulated-CD3/CD28 0.0000#> Unstimulated-LPS IFN.G Treatment Unstimulated-LPS 0.9988#> LPS-CD3/CD281 IL.10 Treatment LPS-CD3/CD28 0.0000#> Unstimulated-CD3/CD281 IL.10 Treatment Unstimulated-CD3/CD28 0.0000#> Unstimulated-LPS1 IL.10 Treatment Unstimulated-LPS 0.0001
# cyt_plsda function.data<-ExampleData1[,-c(3)]data_df<-dplyr::filter(data,Group!="ND"&Treatment=="CD3/CD28")cyt_splsda(data_df,pdf_title=NULL,colors= c("black","purple"),bg=FALSE,scale="log2",ellipse=TRUE,conf_mat=FALSE,var_num=25,cv_opt="loocv",comp_num=2,pch_values= c(16,4),group_col="Group",group_col2="Treatment",roc=TRUE)
# cyt_mint_plsda function.data_df<-ExampleData5[,-c(2,4)]data_df<-dplyr::filter(data_df,Group!="ND")cyt_mint_splsda(data_df,group_col="Group",batch_col="Batch",colors= c("black","purple"),ellipse=TRUE,var_num=25,comp_num=2,scale="log2",verbose=FALSE)
data<-ExampleData1[,-c(3,23)]data_df<- filter(data,Group!="ND"&Treatment!="Unstimulated")cyt_pca(data_df,pdf_title=NULL,colors= c("black","red2"),scale="log2",comp_num=2,pch_values= c(16,4),group_col="Group")
# Generating Volcano Plotdata_df<-ExampleData1[,-c(2:3)]cyt_volc(data_df,group_col="Group",cond1="T2D",cond2="ND",fold_change_thresh=2.0,top_labels=15)#> $`T2D vs ND`
# Generating Heat mapcyt_heatmap(data=data_df,scale="log2",# Optional scalingannotation_col="Group",title=NULL)
# Generating dual flashlights plotdata_df<-ExampleData1[,-c(2:3)]dfp<- cyt_dualflashplot(data_df,group_var="Group",group1="T2D",group2="ND",ssmd_thresh=-0.2,log2fc_thresh=1,top_labels=10)# Print the plotdfp
# Print the table data used for plottingprint(dfp$data,n=25)#> # A tibble: 25 × 11#> cytokine mean_ND mean_PreT2D mean_T2D variance_ND variance_PreT2D#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>#> 1 CCL.20.MIP.3A 634. 404. 887. 6.72e+ 5 2.74e+5#> 2 GM.CSF 2.65 3.11 1.92 2.63e+ 1 3.14e+1#> 3 IFN.G 57730. 18303. 61484. 2.86e+10 2.30e+9#> 4 IL.10 979. 836. 1366. 1.99e+ 6 1.19e+6#> 5 IL.12.P70 13.0 39.1 78.9 4.15e+ 2 2.56e+4#> 6 IL.13 1064. 1543. 1122. 5.60e+ 6 1.11e+7#> 7 IL.15 7.92 4.29 8.22 3.54e+ 1 2.58e+1#> 8 IL.17A 352. 653. 615. 9.40e+ 5 2.88e+6#> 9 IL.17E.IL.25 0.0101 0.0163 0.01 1.01e- 6 3.88e-3#> 10 IL.17F 1.63 2.35 3.11 1.56e+ 1 3.37e+1#> 11 IL.1B 2806. 2977. 4299. 6.63e+ 7 3.76e+7#> 12 IL.2 9227. 10718. 16129. 2.60e+ 8 4.10e+8#> 13 IL.21 205. 210. 316. 3.15e+ 5 2.49e+5#> 14 IL.22 0.0513 0.0684 0.0633 4.58e- 3 4.51e-3#> 15 IL.23 0.147 0.243 0.269 3.13e- 2 9.37e-2#> 16 IL.27 0.0662 0.0834 0.106 6.18e- 3 5.66e-3#> 17 IL.28A 0.0537 0.0710 0.0666 2.45e- 3 5.10e-3#> 18 IL.31 0.0409 0.0905 0.0354 6.62e- 3 4.88e-2#> 19 IL.33 1.17 1.43 1.16 2.09e+ 0 2.71e+0#> 20 IL.4 0.344 0.707 0.297 4.24e- 1 2.96e+0#> 21 IL.5 134. 340. 155. 1.09e+ 5 9.88e+5#> 22 IL.6 4620. 5197. 8925. 2.86e+ 7 5.72e+7#> 23 IL.9 203. 256. 254. 1.34e+ 5 2.11e+5#> 24 TNF.A 5046. 3069. 5624. 7.02e+ 7 1.63e+7#> 25 TNF.B 0.641 0.709 0.610 2.37e+ 0 2.76e+0#> # ℹ 5 more variables: variance_T2D <dbl>, ssmd <dbl>, log2FC <dbl>,#> # SSMD_Category <chr>, Significant <lgl>
# Using XGBoost for classificationdata_df0<-ExampleData1data_df<-data.frame(data_df0[,1:3], log2(data_df0[,-c(1:3)]))data_df<-data_df[,-c(2:3)]data_df<-dplyr::filter(data_df,Group!="ND")cyt_xgb(data=data_df,group_col="Group",nrounds=500,max_depth=4,min_split_loss=0,learning_rate=0.05,nfold=5,cv=TRUE,objective="multi:softprob",eval_metric="auc",early_stopping_rounds=NULL,top_n_features=10,verbose=0,plot_roc=TRUE,print_results=FALSE)
# Using Random Forest for classificationcyt_rf(data=data_df,group_col="Group",k_folds=5,ntree=1000,mtry=4,run_rfcv=TRUE,plot_roc=TRUE,verbose=FALSE)
About
R Package for Comprehensive Cytokine Data Analysis
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.













































