Skip to contents

Obtain various immune biomarkers scores, which combined together give the immunophenoscore (Charoentong et al., 2017).

Usage

hack_immunophenoscore(expr_data, extract = "ips")

Arguments

expr_data

A normalized gene expression matrix (or data frame) with gene symbols as row names and samples as columns.

extract

A string controlling which type of biomarker scores you want to obtain. Possible choices are:

  • "ips" (default), only raw and discrete IPS scores;

  • "class", IPS scores together with the four summary class scores;

  • "all", all possible biomarker scores.

Value

A tibble with one row for each sample in expr_data, a column sample_id

indicating sample identifiers and a number of additional columns depending on the choice of extract.

Details

The immunophenoscore is conceived as a quantification of tumor immunogenicity. It is obtained by aggregating multiple immune biomarkers scores, which are grouped into four major classes:

  • MHC molecules (MHC), expression of MHC class I, class II, and non-classical molecules;

  • Immunomodulators (CP), expression of certain co-inhibitory and co-stimulatory molecules;

  • Effector cells (EC), infiltration of activated CD8+/CD4+ T cells and Tem (effector memory) CD8+/CD4+ cells;

  • Suppressor cells (SC), infiltration of immunosuppressive cells (Tregs and MDSCs).

The table below shows in detail the 26 immune biomarkers and cell types grouped by class together with the number of genes which represent them:

Class |Biomarker/cell type |No. genes
MHCB2M1
MHCHLA-A1
MHCHLA-B1
MHCHLA-C1
MHCHLA-DPA11
MHCHLA-DPB11
MHCHLA-E1
MHCHLA-F1
MHCTAP11
MHCTAP21
CPCD271
CPCTLA-41
CPICOS1
CPIDO11
CPLAG31
CPPD11
CPPD-L11
CPPD-L21
CPTIGIT1
CPTIM31
ECAct CD424
ECAct CD826
ECTem CD427
ECTem CD825
SCMDSC20
SCTreg20

Algorithm

Samplewise gene expression z-scores are obtained for each of 26 immune cell types and biomarkers. Then, weighted averaged z-scores are computed for each class and the raw immunophenoscore (\(IPS_{raw}\)) results as the sum of the four class scores. Finally, the immunophenoscore (\(IPS\)) is given as an integer value between 0 and 10 in the following way:

  • \(IPS = 0\), if \(IPS_{raw} \le 0\);

  • \(IPS = [10 * (IPS_{raw} / 3)]\), if \(0 < IPS_{raw} < 3\);

  • \(IPS = 10\), if \(IPS_{raw} \ge 3\).

References

Charoentong, P., Finotello, F., Angelova, M., Mayer, C., Efremova, M., Rieder, D., Hackl, H., & Trajanoski, Z. (2017). Pan-cancer Immunogenomic Analyses Reveal Genotype-Immunophenotype Relationships and Predictors of Response to Checkpoint Blockade. Cell reports, 18(1), 248–262. doi:10.1016/j.celrep.2016.12.019 .

See also

hack_sig() to compute Immunophenoscore biomarkers in different ways (e.g. use signatures = "ips" and method = "singscore").

check_sig() to check if all/most of the Immunophenoscore biomarkers are present in your expression matrix (use signatures = "ips").

Examples

hack_immunophenoscore(test_expr)
#> # A tibble: 20 × 3
#>    sample_id raw_score ips_score
#>    <fct>         <dbl>     <dbl>
#>  1 sample1      0.942          3
#>  2 sample2     -0.348          0
#>  3 sample3      0.0939         0
#>  4 sample4     -0.335          0
#>  5 sample5      1.64           5
#>  6 sample6      1.73           6
#>  7 sample7     -0.153          0
#>  8 sample8      0.468          2
#>  9 sample9     -0.236          0
#> 10 sample10    -2.31           0
#> 11 sample11     0.114          0
#> 12 sample12     1.46           5
#> 13 sample13    -0.866          0
#> 14 sample14     0.909          3
#> 15 sample15     0.647          2
#> 16 sample16     0.749          2
#> 17 sample17     0.344          1
#> 18 sample18    -0.322          0
#> 19 sample19    -1.10           0
#> 20 sample20     0.809          3
hack_immunophenoscore(test_expr, extract = "class")
#> # A tibble: 20 × 7
#>    sample_id raw_score ips_score cp_score  ec_score mhc_score sc_score
#>    <fct>         <dbl>     <dbl>    <dbl>     <dbl>     <dbl>    <dbl>
#>  1 sample1      0.942          3   0.126  -0.148       0.312   0.652  
#>  2 sample2     -0.348          0   0.407   0.0679     -0.796  -0.0268 
#>  3 sample3      0.0939         0   0.627   0.0347     -0.483  -0.0843 
#>  4 sample4     -0.335          0  -0.0161  0.292      -0.777   0.166  
#>  5 sample5      1.64           5   0.778   0.0607      0.876  -0.0742 
#>  6 sample6      1.73           6   0.415   0.191       1.26   -0.136  
#>  7 sample7     -0.153          0  -0.0862 -0.0140     -0.0677  0.0153 
#>  8 sample8      0.468          2   0.355   0.0814     -0.508   0.539  
#>  9 sample9     -0.236          0  -0.0908  0.0357     -0.481   0.300  
#> 10 sample10    -2.31           0   0.198  -0.258      -2.12   -0.129  
#> 11 sample11     0.114          0  -0.338   0.0755      0.552  -0.176  
#> 12 sample12     1.46           5   0.360   0.105       0.904   0.0910 
#> 13 sample13    -0.866          0   0.195   0.165      -1.28    0.0480 
#> 14 sample14     0.909          3   0.433  -0.000192    0.656  -0.179  
#> 15 sample15     0.647          2   0.971   0.0167     -0.503   0.163  
#> 16 sample16     0.749          2   0.905  -0.0463     -0.115   0.00550
#> 17 sample17     0.344          1   0.0661 -0.0334      0.401  -0.0898 
#> 18 sample18    -0.322          0  -0.751   0.0160      0.788  -0.376  
#> 19 sample19    -1.10           0  -0.466  -0.0592     -0.488  -0.0839 
#> 20 sample20     0.809          3   0.269   0.353       0.462  -0.275