├── README.txt ├── example ├── VanAllen.Mutation ├── VanAllen.OS ├── VanAllen.PFS └── VanAllen.expression └── src └── survival_interaction.R /README.txt: -------------------------------------------------------------------------------- 1 | Usage: 2 | ./survival_interaction.R variables_input pivot_expression clinical_outcome output 3 | 4 | variables_input: 5 | Matrix of input variables, with columns as samples and rows as genes. This matrix can contain any type of information, including gene expression, mutation, and protein level. 6 | 7 | Pivot_expression: 8 | Matrix of pivot gene expression, with columns as samples and rows as genes. We set pivot genes as CD8A, CD8B, GZMA, GZMB, and PRF1. Please make sure that these genes should be profiled in the pivot expression matrix. 9 | 10 | Clinical_outcome: 11 | Response variables of survival and other clinical information. The first two columns should always be survival length and event status (death=1, alive=0). Other clinical information (e.g., age, gender, stage) could be included as later columns. The survival length could be either overall survival (OS) or progression-free survival (PFS). 12 | 13 | Output: 14 | There will be several types of output files with different postfix. Each file contains the z-score, p-value, and false discovery rate (FDR) for each gene tested. 15 | *.interaction: interaction scores between pivot (CTL level) and other genes with survival as the response. 16 | *.base: basic associations between the gene variable and survival outcome 17 | *.partial: associations between the gene variable and survival outcome with the CTL level corrected in Cox-PH regression. 18 | *.main: the main effect associated with each gene in the interaction test. 19 | 20 | Examples: 21 | In the current folder, try the following commands. 22 | 1: ./src/survival_interaction.R ./example/VanAllen.expression ./example/VanAllen.expression ./example/VanAllen.OS ./example/output_OS_Expression 23 | 2: ./src/survival_interaction.R ./example/VanAllen.expression ./example/VanAllen.expression ./example/VanAllen.PFS ./example/output_PFS_Expression 24 | 3: ./src/survival_interaction.R ./example/VanAllen.Mutation ./example/VanAllen.expression ./example/VanAllen.OS ./example/output_OS_Mutation 25 | 4: ./src/survival_interaction.R ./example/VanAllen.Mutation ./example/VanAllen.expression ./example/VanAllen.PFS ./example/output_PFS_Mutation 26 | 27 | Please contact: Peng Jiang (peng.jiang.software@gmail.com) if you have any questions or find some problems. 28 | -------------------------------------------------------------------------------- /example/VanAllen.Mutation: -------------------------------------------------------------------------------- 1 | Pat02 Pat03 Pat04 Pat06 Pat07 Pat08 Pat100 Pat101 Pat103 Pat104 Pat105 Pat106 Pat109 Pat11 Pat110 Pat113 Pat115 Pat117 Pat118 Pat119 Pat121 Pat123 Pat124 Pat126 Pat127 Pat128 Pat129 Pat13 Pat130 Pat131 Pat132 Pat133 Pat135 Pat138 Pat139 Pat14 Pat140 Pat143 Pat147 Pat148 Pat15 Pat151 Pat157 Pat159 Pat16 Pat160 Pat162 Pat163 Pat165 Pat166 Pat167 Pat168 Pat17 Pat170 Pat171 Pat174 Pat175 Pat18 Pat19 Pat21 Pat24 Pat25 Pat27 Pat28 Pat29 Pat32 Pat33 Pat36 Pat37 Pat38 Pat39 Pat40 Pat41 Pat43 Pat44 Pat45 Pat46 Pat47 Pat49 Pat50 Pat54 Pat55 Pat56 Pat57 Pat58 Pat59 Pat60 Pat62 Pat63 Pat64 Pat66 Pat67 Pat70 Pat71 Pat73 Pat74 Pat76 Pat77 Pat78 Pat79 Pat80 Pat81 Pat82 Pat83 Pat85 Pat86 Pat88 Pat90 Pat92 Pat98 2 | ANK3.missense 0.0 0.088106 0.386581 0.0 0.0 0.0 0.28908 0.0 0.069648 0.0 0.0 0.0 0.0 0.2269045 0.270725941176 0.473373 0.0 0.0 0.0 0.485437 0.0 0.411371 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.166667 0.0 0.0 0.0 0.405965 0.0 0.495957 0.0 0.114989 0.0 0.0 0.326163 0.0 0.0 0.380197 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.196226 0.082437 0.0 0.0 0.0 0.0 0.0 0.383333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.92623 0.0 0.386935 0.380952 0.0 0.42482225 0.0 0.0 0.0 0.0 0.139594 0.222474666667 0.626556 0.0 0.398374 0.892401 0.0 0.0 0.0 0.0 0.0 0.0 0.245625 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.223022 0.0 0.0 0.0 3 | BRAF.V600E 0.631579 0.238671 0.0 0.0 0.435644 0.828571 0.0 0.089202 0.0 0.7 0.136213 0.0 0.0 0.187861 0.0 0.0 0.0 0.0 0.70229 0.0 0.0 0.0 0.0 0.0 0.639066 0.408451 0.639276 0.0 0.941781 0.0 0.0 0.0 0.0 0.0 0.0 0.283401 0.0 0.0 0.181208 0.375 0.650538 0.0 0.825301 0.0 0.0 0.0 0.0 0.774194 0.0 0.0 0.0 0.680628 0.0 0.0 0.0 0.0 0.241758 0.282258 0.0 0.0 0.0 0.0 0.234043 0.0 0.0 0.0 0.0 0.0 0.0 0.191011 0.37156 0.0 0.0 0.280315 0.0 0.0 0.0 0.0 0.617363 0.804878 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.50289 0.0 0.0 0.0 0.0 0.359551 0.286275 0.0 0.465854 0.0 0.0 0.0 0.0 0.409877 0.0 0.602694 0.0 0.0 4 | BRAF.missense 0.631579 0.238671 0.0 0.0 0.435644 0.828571 0.0 0.089202 0.058642 0.7 0.136213 0.0 0.0 0.187861 0.0 0.0 0.0 0.0 0.70229 0.0 0.0 0.0 0.0 0.0 0.639066 0.293611 0.639276 0.0 0.941781 0.0 0.084495 0.0 0.0 0.0 0.0 0.283401 0.0 0.489474 0.1790395 0.375 0.650538 0.0 0.825301 0.0 0.0 0.0 0.0 0.774194 0.0 0.0 0.0 0.680628 0.0 0.0 0.0 0.0 0.241758 0.282258 0.0 0.0 0.0 0.0 0.234043 0.0 0.0 0.0 0.0 0.0 0.0 0.191011 0.37156 0.0 0.0 0.280315 0.0 0.0 0.0 0.0 0.615391 0.800813 0.0 0.417266 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.50289 0.0 0.0 0.0 0.0 0.359551 0.286275 0.0 0.465854 0.0 0.0 0.0 0.0 0.409877 0.084388 0.602694 0.0 0.0 5 | CSMD1.missense 0.0 0.0 0.0 0.0 0.0 0.0 0.304054 0.0 0.061033 0.0 0.0 0.0 0.3125 0.103028 0.258868181818 0.0 0.0 0.282609 0.0 0.0 0.0 0.445378 0.0 0.0 0.691983 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2178055 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1698525 0.0 0.0 0.6070335 0.0 0.0 0.0 0.0 0.0 0.0 0.681818 0.0 0.0 0.0 0.0 0.0 0.0 0.227273 0.1208335 0.0 0.0 0.0 0.135593 0.0 0.394751 0.0 0.0 0.0 0.0 0.0 0.0 0.292308 0.0 0.0 0.564706 0.326203 0.0 0.167619 0.0 0.383092 0.0 0.0 0.0 0.0 0.322581 0.35 0.328385666667 0.465116 0.63 0.0 0.0 0.0 0.0749895 0.0 0.0 0.350877 0.0 0.0 0.0 0.0 0.0 0.45283 0.0 0.0 0.0 0.3060524 0.0 0.0 0.0 6 | CSMD3.missense 0.0 0.0 0.0 0.0 0.320988 0.135135 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.111111 0.2534471 0.582375 0.0 0.19084 0.0 0.0 0.0 0.426752 0.0 0.0 0.0 0.0 0.0 0.0 0.432727 0.0 0.116279 0.0 0.0 0.057522 0.412987 0.0 0.0 0.0 0.0 0.0 0.0 0.107481 0.0 0.0 0.623474 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.220126 0.0 0.0 0.0 0.0 0.3033455 0.067925 0.0 0.0 0.0 0.0 0.0 0.571236333333 0.0 0.0 0.0 0.085973 0.0 0.0 0.391608 0.0 0.0 0.472414 0.0 0.0 0.0 0.4093135 0.440367 0.0 0.0 0.0 0.055556 0.137703 0.0 0.0 0.0 0.653363 0.398374 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.053546 0.0 0.0 0.0 0.0 0.245283 0.31550675 0.0 0.0 0.349398 7 | DNAH3.missense 0.512 0.086957 0.0 0.0 0.0 0.0 0.0 0.0 0.093617 0.0 0.052174 0.0 0.459459 0.181818 0.359877 0.418605 0.0 0.0 0.0 0.0 0.0 0.0 0.403846 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.121212 0.0 0.387097 0.1192255 0.45902075 0.0 0.0 0.258621 0.102113 0.0 0.0 0.0 0.0 0.0 0.167568 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3041085 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.092857 0.0 0.0 0.0 0.0 0.0 0.097143 0.0 0.0 0.0 0.0 0.0 0.453791 0.0 0.438596 0.306168 0.0 0.4688805 0.367089 0.0 0.0 0.412833 0.0 0.0 0.605581 0.0 0.0 0.0 0.0 0.0 0.053191 0.0 0.444444 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.094663 0.0 0.0 0.0 0.0 0.0 8 | DNAH5.missense 0.356061 0.054054 0.688792 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.117324166667 0.266866454545 0.415929 0.0 0.264423 0.0 0.306771333333 0.0 0.406375 0.097345 0.0 0.0 0.0 0.0 0.214286 0.434783 0.0 0.0 0.112676 0.0 0.098182 0.862491333333 0.0 0.4551805 0.513889 0.109005 0.0 0.0 0.076923 0.52381 0.0 0.330097 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.083333 0.0876206666667 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.431719 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.43087 0.301887 0.0 0.0 0.0 0.0 0.22076 0.3830175 0.0 0.4193335 0.0 0.0 0.0 0.0549745 0.175573 0.0 0.0 0.291865 0.0 0.0 0.0 0.0 0.0 0.0 0.0556876666667 0.0 0.32882425 0.0 0.0 0.0 9 | DNAH8.missense 0.0 0.0 0.0 0.0 0.0 0.0 0.357972 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2015745 0.0 0.0 0.20678 0.0 0.372093 0.0 0.0 0.0 0.702771 0.0 0.0 0.0 0.0 0.4 0.0 0.1732245 0.0585 0.305556 0.0 0.459184 0.0 0.0 0.421053 0.076923 0.276875333333 0.0 0.053763 0.0 0.0 0.2733885 0.0 0.0 0.3125 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.219403 0.0 0.0 0.279294 0.147727 0.0 0.0 0.0 0.0 0.0 0.239553 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.078224 0.0 0.30546775 0.0 0.0 0.0 0.0 0.455224 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.211009 0.0 0.0 0.0 0.0 0.309278 0.359756 0.0 0.0 0.0 0.511905 0.169811 0.0 0.0 0.0 0.058824 0.0 0.0 0.0 0.0 0.0 10 | GPR98.missense 0.0 0.0 0.315789 0.0 0.0 0.0 0.0 0.0 0.082198 0.0 0.0 0.0 0.0 0.12801025 0.4613835 0.362745 0.0 0.152632 0.0 0.394366 0.0 0.421687 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.089899 0.0 0.0 0.225 0.904762 0.0 0.460674 0.631579 0.226415 0.0 0.0 0.0 0.0 0.0 0.18648 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0853203333333 0.0 0.0 0.0 0.129464 0.0 0.0 0.387833 0.0 0.0 0.0 0.395668 0.472222 0.0 0.0 0.079365 0.0 0.191894 0.228592 0.0 0.0 0.604167 0.0 0.0 0.0 0.488372 0.3987695 0.358824 0.178043 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.294118 0.0 0.0 0.0 11 | LRP1B.missense 0.0 0.0 0.0 0.0 0.0 0.0 0.423458 0.0 0.073482 0.0 0.0 0.0 0.0 0.230526 0.301234071429 0.0 0.0 0.0 0.0 0.0 0.0 0.378947 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.227642 0.37317125 0.0 0.558442 0.0 0.103325 0.595745 0.330882 0.0 0.0 0.43297 0.218984 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.18797 0.0 0.212155666667 0.0 0.0 0.0 0.092689 0.0 0.0 0.0 0.056604 0.0 0.429889 0.0 0.0 0.0 0.090319 0.0 0.0 0.0 0.0 0.0 0.421538 0.0 0.0 0.222642 0.0 0.4461485 0.0 0.0 0.0 0.055 0.0 0.1814125 0.284583 0.389535 0.0 0.184211 0.0 0.0 0.0 0.0 0.404878 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.21978 0.0 0.0 0.0 12 | MUC16.missense 0.432432 0.0 0.336957 0.14359 0.0 0.4075895 0.41376 0.127273 0.115108 0.0 0.090909 0.0 0.214134 0.139391684211 0.25853 0.388548 0.0 0.27027 0.360465 0.415687666667 0.0 0.445102333333 0.414013 0.443293 0.0 0.0 0.361702 0.35319125 0.414984333333 0.0 0.102564 0.309091 0.0 0.234740285714 0.402725727273 0.0 0.5445205 0.397379 0.086361 0.0 0.0 0.22725 0.0 0.0 0.274747777778 0.0 0.0 0.0 0.0 0.0 0.0 0.463486 0.2786982 0.0 0.0 0.17441275 0.0 0.0 0.2501255 0.0708425 0.0 0.0 0.0 0.1719045 0.0 0.460628 0.0 0.0 0.74814 0.076923 0.0 0.0 0.152174 0.092308 0.0 0.4705465 0.4317415 0.0 0.235235 0.4055055 0.504358333333 0.365565 0.0 0.0 0.108149 0.139241 0.222638714286 0.330679923077 0.395604 0.3656845 0.450599666667 0.0 0.342809 0.149538714286 0.0 0.421013428571 0.345 0.2606515 0.0 0.314961 0.0 0.226667 0.448858333333 0.0 0.06324 0.0 0.286992285714 0.415789 0.0 0.0 13 | PCDHAC2.missense 0.508475 0.0 0.691984 0.0 0.0 0.0 0.552239 0.0 0.0822056666667 0.0 0.0 0.0 0.343284 0.12290225 0.375942388889 0.837719 0.0 0.260957 0.5 0.755319 0.0 0.436935 0.429031666667 0.0 0.534091 0.0 0.0 0.0 0.499516 0.053797 0.0 0.0 0.0 0.162952833333 0.882812 0.0 0.467990666667 0.295437666667 0.113445 0.0 0.0 0.229167 0.803571 0.0 0.327377 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.432704 0.0 0.0 0.1395875 0.0 0.0 0.1468235 0.0857756 0.0 0.0 0.0 0.061538 0.0 0.4253505 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.12037 0.0 0.0 0.357798 0.0 0.252724666667 0.651163 0.4350375 0.0 0.0 0.0 0.201852 0.137931 0.298647666667 0.616204 0.0 0.4167845 0.564885 0.0 0.0 0.0847773333333 0.0 0.372905 0.3924145 0.296089 0.0 0.3136665 0.104396 0.225641 0.0 0.0 0.080645 0.0 0.332137333333 0.0 0.0 0.0 14 | PCDHGC5.missense 0.2 0.0913405 0.647343 0.0 0.0 0.0 0.0 0.0 0.063361 0.0 0.0 0.0 0.0 0.1169535 0.435067 0.844868 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.442748 0.0 0.0 0.0 0.0 0.433962 0.0 0.0 0.282051 0.0 0.199377866667 0.0 0.0 0.625 0.3669982 0.0 0.0 0.0 0.260976 0.0 0.0 0.197437333333 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.298851 0.0 0.232877 0.0 0.0 0.3309486 0.0789193333333 0.0 0.0 0.0 0.0 0.0 0.492754 0.0 0.0 0.0 0.142873 0.0 0.0 0.0 0.0 0.0 0.917127 0.0 0.660377 0.261411 0.641509 0.4539762 0.360081 0.0 0.41453 0.0926608 0.0 0.129032 0.3522895 0.315789 0.379705 0.584906 0.0 0.0 0.0 0.0 0.0 0.0 0.375 0.0 0.371728 0.069767 0.0 0.0 0.0 0.0 0.0 0.276119 0.0 0.0 0.0 15 | PCLO.missense 0.0 0.0 0.0 0.0 0.131343 0.0 0.3262995 0.0 0.0 0.0 0.0 0.0 0.297872 0.148447 0.224039666667 0.0 0.0 0.240876 0.0 0.0 0.0 0.442857 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.660714 0.3665745 0.503142 0.0 0.371569 0.400961666667 0.095969 0.0 0.0 0.0 0.0 0.0 0.202908 0.0 0.0 0.0 0.0 0.0 0.064286 0.0 0.226562 0.322581 0.0 0.270396333333 0.0 0.0 0.227848 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.07299875 0.0 0.0 0.0 0.130531 0.0 0.481203 0.0 0.0 0.2096005 0.584416 0.3970572 0.0 0.0 0.318367 0.0 0.212766 0.319452 0.271019 0.0 0.4495685 0.0 0.0 0.0 0.054217 0.0 0.0 0.0 0.378151 0.0 0.341014 0.0 0.0 0.0 0.0 0.09375 0.0 0.0 0.0 0.0 0.0 16 | TTN.missense 0.0 0.063492 0.278491333333 0.210129333333 0.0 0.7757068 0.119048 0.0 0.0598734 0.686933 0.0 0.0 0.3469385 0.316639 0.306439714286 0.3555555 0.0 0.247631666667 0.0 0.34486825 0.0 0.399009833333 0.287794375 0.4150565 0.875 0.772021 0.353846 0.286902 0.852881 0.0 0.13884725 0.2 0.386364 0.19708375 0.416373333333 0.0 0.630435 0.476346333333 0.106573666667 0.0 0.304965 0.07534 0.053571 0.500386 0.21163565 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.248645 0.0 0.154405 0.1489355 0.0 0.0 0.110916454545 0.0 0.0 0.0 0.0 0.0 0.3801935 0.0 0.0 0.0 0.102649833333 0.0 0.0 0.349624 0.134048 0.0 0.458186181818 0.444444 0.364706 0.285587428571 0.3608895 0.434665833333 0.558824 0.0 0.0 0.067689 0.2277215 0.263513 0.385216083333 0.0 0.412289 0.39847975 0.0 0.0 0.061505 0.271629666667 0.403517 0.0 0.313743166667 0.0 0.361135 0.0 0.0 0.433355 0.0 0.0 0.0 0.3316706 0.796226 0.0 0.0 17 | USH2A.missense 0.203046 0.0 0.0 0.116129 0.0 0.0 0.587838 0.0 0.056399 0.0 0.0 0.0 0.0 0.14038025 0.3615466 0.26087 0.0 0.370809 0.0 0.569565 0.0 0.0 0.0 0.0 0.0 0.0 0.286041 0.0 0.0 0.0 0.0 0.0 0.0 0.152868 0.490566 0.0 0.0 0.497604 0.118227 0.621622 0.0 0.141791 0.0 0.354839 0.388889 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.180255 0.0 0.0 0.208729 0.0 0.0 0.0 0.0 0.0 0.0 0.47 0.0 0.0 0.0 0.107143 0.0 0.0 0.0 0.0 0.0 0.461078 0.0 0.0 0.0 0.0 0.598015 0.0 0.0 0.0 0.059406 0.0 0.264957 0.346501 0.0 0.238671 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.386364 0.0 0.4586205 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18 | XIRP2.missense 0.0 0.0 0.0 0.0 0.226277 0.0 0.2774225 0.0 0.0 0.0 0.097087 0.0 0.0 0.0 0.334063470588 0.409836 0.0 0.226653666667 0.564972 0.450292 0.0 0.455159 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.187579666667 0.361688 0.0 0.0 0.0 0.0 0.0 0.330579 0.0 0.345679 0.0 0.533981 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.076087 0.0 0.0 0.0 0.079585 0.0 0.0 0.0 0.0 0.0 0.45 0.0 0.0 0.0 0.05098 0.0 0.0 0.0 0.0 0.0 0.4579185 0.0 0.0 0.0 0.4 0.4544155 0.0 0.0 0.0 0.0 0.222222 0.395062 0.0 0.271851 0.0 0.0 0.0 0.0 0.0 0.553571 0.0 0.555556 0.0 0.0 0.302158 0.0 0.0 0.0 0.0 0.0 0.0 0.494253 0.0 0.0 0.0 19 | -------------------------------------------------------------------------------- /example/VanAllen.OS: -------------------------------------------------------------------------------- 1 | OS OS.Event Age Gender Stage Pretreatment 2 | Pat02 1632 0 42 1 3 1 3 | Pat03 100 1 61 1 3 3 4 | Pat04 987 0 71 0 2 7 5 | Pat06 161 1 33 0 3 4 6 | Pat07 1050 0 36 0 0 2 7 | Pat08 140 1 73 0 3 2 8 | Pat100 360 1 70 0 3 1 9 | Pat101 288 1 75 0 3 1 10 | Pat103 1048 1 70 0 3 2 11 | Pat104 237 1 45 1 3 1 12 | Pat105 1047 0 41 0 0 0 13 | Pat106 250 1 43 1 2 1 14 | Pat109 83 1 69 0 2 1 15 | Pat11 790 0 67 0 3 1 16 | Pat110 320 1 76 0 2 0 17 | Pat113 301 1 68 0 3 3 18 | Pat115 145 1 45 0 3 1 19 | Pat117 914 0 73 0 3 1 20 | Pat118 313 1 43 1 3 2 21 | Pat119 808 0 61 0 0 1 22 | Pat121 122 1 46 0 3 1 23 | Pat123 853 1 50 1 3 5 24 | Pat124 146 1 78 0 2 1 25 | Pat126 641 0 77 0 2 1 26 | Pat127 332 1 25 1 3 3 27 | Pat128 113 1 29 0 3 1 28 | Pat129 539 0 18 0 2 0 29 | Pat13 732 1 78 0 0 1 30 | Pat130 45 1 76 0 3 1 31 | Pat131 257 1 32 0 3 0 32 | Pat132 676 0 81 0 3 1 33 | Pat133 542 1 76 0 2 1 34 | Pat135 81 1 29 1 3 1 35 | Pat138 1478 1 39 1 3 1 36 | Pat139 99 1 58 0 3 1 37 | Pat14 163 1 48 1 3 3 38 | Pat140 492 1 62 0 3 1 39 | Pat143 153 1 71 0 3 3 40 | Pat147 224 1 63 0 1 1 41 | Pat148 84 1 35 1 3 1 42 | Pat15 50 1 32 0 3 4 43 | Pat151 204 1 68 0 3 1 44 | Pat157 86 1 69 1 3 1 45 | Pat159 842 0 51 0 2 1 46 | Pat16 811 1 68 1 2 1 47 | Pat160 152 1 79 0 3 1 48 | Pat162 211 1 55 1 3 1 49 | Pat163 749 0 54 0 3 1 50 | Pat165 115 1 50 1 3 1 51 | Pat166 77 1 31 0 3 1 52 | Pat167 408 1 50 0 3 1 53 | Pat168 67 1 68 0 3 2 54 | Pat17 205 1 44 0 3 1 55 | Pat170 108 1 48 0 3 1 56 | Pat171 466 1 66 0 1 1 57 | Pat174 688 0 57 1 1 1 58 | Pat175 90 1 67 1 1 1 59 | Pat18 798 0 55 1 0 1 60 | Pat19 175 1 59 0 3 0 61 | Pat21 676 1 81 0 3 1 62 | Pat24 971 0 74 1 2 0 63 | Pat25 325 1 69 0 3 1 64 | Pat27 1379 0 61 0 3 1 65 | Pat28 1184 1 77 0 3 2 66 | Pat29 1326 0 82 0 3 1 67 | Pat32 147 1 72 0 3 3 68 | Pat33 211 1 65 0 3 3 69 | Pat36 54 1 52 1 3 3 70 | Pat37 70 1 47 1 3 1 71 | Pat38 1539 0 45 0 3 2 72 | Pat39 1487 0 67 0 2 1 73 | Pat40 34 1 74 0 3 3 74 | Pat41 128 1 64 0 3 1 75 | Pat43 37 1 75 1 2 2 76 | Pat44 271 1 57 1 3 1 77 | Pat45 89 1 68 0 3 1 78 | Pat46 160 1 36 1 2 1 79 | Pat47 1106 0 78 0 3 1 80 | Pat49 1034 0 36 0 3 0 81 | Pat50 65 1 77 0 3 0 82 | Pat54 208 1 73 0 3 0 83 | Pat55 193 1 71 1 3 1 84 | Pat56 235 1 68 0 3 1 85 | Pat57 250 1 69 0 0 0 86 | Pat58 652 1 59 1 0 3 87 | Pat59 224 1 36 0 2 0 88 | Pat60 272 1 86 0 3 1 89 | Pat62 602 1 76 0 3 1 90 | Pat63 1039 0 65 0 0 0 91 | Pat64 106 1 83 0 3 0 92 | Pat66 653 0 44 1 0 1 93 | Pat67 79 1 39 0 3 1 94 | Pat70 532 1 38 0 3 3 95 | Pat71 137 1 63 0 3 3 96 | Pat73 442 1 71 0 3 1 97 | Pat74 193 1 73 0 3 2 98 | Pat76 139 1 74 0 3 2 99 | Pat77 1029 0 21 0 0 0 100 | Pat78 38 1 71 1 3 1 101 | Pat79 801 1 69 0 2 1 102 | Pat80 724 1 48 0 3 1 103 | Pat81 628 1 54 1 1 0 104 | Pat82 104 1 54 1 3 2 105 | Pat83 1027 0 22 0 3 0 106 | Pat85 458 1 83 0 3 1 107 | Pat86 293 1 55 0 1 0 108 | Pat88 989 0 60 1 3 0 109 | Pat90 1005 0 59 0 3 1 110 | Pat92 123 1 49 0 3 1 111 | Pat98 140 1 57 1 3 0 112 | Pat20 116 1 78 0 3 1 113 | Pat91 680 1 81 0 1 0 114 | -------------------------------------------------------------------------------- /example/VanAllen.PFS: -------------------------------------------------------------------------------- 1 | PFS PFS.Event Age Gender Stage Pretreatment 2 | Pat02 538 1 42 1 3 1 3 | Pat03 76 1 61 1 3 3 4 | Pat04 646 0 71 0 2 7 5 | Pat06 77 1 33 0 3 4 6 | Pat07 721 1 36 0 0 2 7 | Pat08 73 1 73 0 3 2 8 | Pat100 111 1 70 0 3 1 9 | Pat101 77 1 75 0 3 1 10 | Pat103 969 0 70 0 3 2 11 | Pat104 237 0 45 1 3 1 12 | Pat105 690 0 41 0 0 0 13 | Pat106 137 1 43 1 2 1 14 | Pat109 19 1 69 0 2 1 15 | Pat11 126 1 67 0 3 1 16 | Pat110 73 1 76 0 2 0 17 | Pat113 52 1 68 0 3 3 18 | Pat115 74 1 45 0 3 1 19 | Pat117 182 1 73 0 3 1 20 | Pat118 120 1 43 1 3 2 21 | Pat119 108 1 61 0 0 1 22 | Pat121 84 1 46 0 3 1 23 | Pat123 544 1 50 1 3 5 24 | Pat124 67 1 78 0 2 1 25 | Pat126 187 1 77 0 2 1 26 | Pat127 84 1 25 1 3 3 27 | Pat128 81 1 29 0 3 1 28 | Pat129 68 1 18 0 2 0 29 | Pat13 104 1 78 0 0 1 30 | Pat130 17 1 76 0 3 1 31 | Pat131 195 1 32 0 3 0 32 | Pat132 187 1 81 0 3 1 33 | Pat133 134 1 76 0 2 1 34 | Pat135 73 1 29 1 3 1 35 | Pat138 581 1 39 1 3 1 36 | Pat139 46 1 58 0 3 1 37 | Pat14 84 1 48 1 3 3 38 | Pat140 114 1 62 0 3 1 39 | Pat143 90 1 71 0 3 3 40 | Pat147 120 1 63 0 1 1 41 | Pat148 48 1 35 1 3 1 42 | Pat15 31 1 32 0 3 4 43 | Pat151 106 1 68 0 3 1 44 | Pat157 53 1 69 1 3 1 45 | Pat159 100 1 51 0 2 1 46 | Pat16 84 1 68 1 2 1 47 | Pat160 81 1 79 0 3 1 48 | Pat162 78 1 55 1 3 1 49 | Pat163 76 1 54 0 3 1 50 | Pat165 95 1 50 1 3 1 51 | Pat166 76 1 31 0 3 1 52 | Pat167 84 1 50 0 3 1 53 | Pat168 67 1 68 0 3 2 54 | Pat17 85 1 44 0 3 1 55 | Pat170 97 1 48 0 3 1 56 | Pat171 85 1 66 0 1 1 57 | Pat174 134 1 57 1 1 1 58 | Pat175 90 1 67 1 1 1 59 | Pat18 112 1 55 1 0 1 60 | Pat19 21 1 59 0 3 0 61 | Pat21 558 1 81 0 3 1 62 | Pat24 658 0 74 1 2 0 63 | Pat25 67 1 69 0 3 1 64 | Pat27 139 1 61 0 3 1 65 | Pat28 77 1 77 0 3 2 66 | Pat29 341 1 82 0 3 1 67 | Pat32 70 1 72 0 3 3 68 | Pat33 211 1 65 0 3 3 69 | Pat36 41 1 52 1 3 3 70 | Pat37 23 1 47 1 3 1 71 | Pat38 302 1 45 0 3 2 72 | Pat39 1487 0 67 0 2 1 73 | Pat40 34 1 74 0 3 3 74 | Pat41 54 1 64 0 3 1 75 | Pat43 37 1 75 1 2 2 76 | Pat44 62 1 57 1 3 1 77 | Pat45 61 1 68 0 3 1 78 | Pat46 36 1 36 1 2 1 79 | Pat47 1106 0 78 0 3 1 80 | Pat49 163 1 36 0 3 0 81 | Pat50 65 1 77 0 3 0 82 | Pat54 81 1 73 0 3 0 83 | Pat55 78 1 71 1 3 1 84 | Pat56 96 1 68 0 3 1 85 | Pat57 68 1 69 0 0 0 86 | Pat58 99 1 59 1 0 3 87 | Pat59 76 1 36 0 2 0 88 | Pat60 89 1 86 0 3 1 89 | Pat62 77 1 76 0 3 1 90 | Pat63 718 0 65 0 0 0 91 | Pat64 69 1 83 0 3 0 92 | Pat66 598 1 44 1 0 1 93 | Pat67 79 1 39 0 3 1 94 | Pat70 15 1 38 0 3 3 95 | Pat71 98 1 63 0 3 3 96 | Pat73 408 1 71 0 3 1 97 | Pat74 80 1 73 0 3 2 98 | Pat76 70 1 74 0 3 2 99 | Pat77 241 0 21 0 0 0 100 | Pat78 38 1 71 1 3 1 101 | Pat79 405 1 69 0 2 1 102 | Pat80 182 1 48 0 3 1 103 | Pat81 76 1 54 1 1 0 104 | Pat82 75 1 54 1 3 2 105 | Pat83 107 1 22 0 3 0 106 | Pat85 83 1 83 0 3 1 107 | Pat86 153 1 55 0 1 0 108 | Pat88 665 0 60 1 3 0 109 | Pat90 669 0 59 0 3 1 110 | Pat92 84 1 49 0 3 1 111 | Pat98 77 1 57 1 3 0 112 | Pat20 71 1 78 0 3 1 113 | Pat91 680 0 81 0 1 0 114 | -------------------------------------------------------------------------------- /src/survival_interaction.R: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env Rscript 2 | suppressPackageStartupMessages(library(survival)) 3 | 4 | CTL_genes = c('CD8A', 'CD8B', 'GZMA', 'GZMB', 'PRF1') 5 | 6 | readmat = function(mat) as.matrix(read.table(mat, sep='\t', header=T, check.names=F, quote=NULL)) 7 | 8 | writemat = function(result, output) 9 | { 10 | result = result[!is.na(result[,"p"]),,drop=F] 11 | FDR = p.adjust(result[,"p"], method="fdr") 12 | result = cbind(result, FDR) 13 | write.table(result, file=output, sep='\t', quote=F) 14 | } 15 | 16 | commands = commandArgs(trailingOnly=T) 17 | 18 | # three inputs here 19 | mat = t(readmat(commands[1])) # expression, mutation, or RPPA matrix 20 | pivot = t(readmat(commands[2])) # CD8A, CD8B, GZMA, GZMB, PRF1 expression 21 | survival = readmat(commands[3]) # clinical information 22 | 23 | # remove negative survival values 24 | survival = survival[survival[,1] > 0,] 25 | 26 | output = commands[4] 27 | 28 | common = Reduce(intersect, list(rownames(mat),rownames(survival),rownames(pivot))) 29 | print(paste(length(common), "samples")) 30 | 31 | # stop at low sample numbers 32 | if(length(common) < 20) stop("two few samples") 33 | 34 | not_included = setdiff(CTL_genes, colnames(pivot)) 35 | 36 | if(length(not_included) > 0) stop(paste(c("pivot genes", not_included, "are not included"), ' ')) 37 | 38 | pivot = rowMeans(pivot[common,CTL_genes]) 39 | mat = mat[common,,drop=F] 40 | survival = survival[common,,drop=F] 41 | 42 | # stop at low death rate 43 | death_rate = sum(survival[,2])/dim(survival)[1] 44 | if(death_rate < 0.1) stop(paste("death rate", death_rate, "is too low")) 45 | 46 | # split up survival and background 47 | surv = Surv(survival[,1], survival[,2]) 48 | 49 | if(dim(survival)[2] > 2){ 50 | B = survival[,3:dim(survival)[2], drop=F] 51 | }else{ 52 | B = survival[,c(), drop=F] 53 | } 54 | 55 | # build up regression data space 56 | B = cbind(B, pivot, pivot, pivot) 57 | B = as.data.frame(B) 58 | N_B = dim(B)[2] 59 | 60 | # test pivot effect first 61 | coxph.pivot = summary(coxph(surv~., data=B[,c(-N_B, -(N_B-1)), drop=F]))$coef 62 | write.table(coxph.pivot, file=paste0(output, ".pivot"), sep='\t', quote=F) 63 | 64 | colnames(B)[N_B-1] = "partner" 65 | colnames(B)[N_B] = "Interaction" 66 | 67 | # iterate over features 68 | features = colnames(mat) 69 | N = length(features) 70 | 71 | result_interaction = matrix(nrow=N, ncol=2, dimnames=list(features, c('z','p'))) 72 | result_main = matrix(nrow=N, ncol=2, dimnames=list(features, c('z','p'))) 73 | result_partial = matrix(nrow=N, ncol=2, dimnames=list(features, c('z','p'))) 74 | result_base = matrix(nrow=N, ncol=2, dimnames=list(features, c('z','p'))) 75 | 76 | for (i in 1:N) 77 | { 78 | title = features[i] 79 | partner = mat[,i] 80 | 81 | B[,N_B-1] = partner 82 | B[,N_B] = partner * pivot 83 | 84 | # region 1: model with interaction 85 | errflag = F 86 | coxph.fit = tryCatch(coxph(surv~., data=B), 87 | error = function(e) errflag <<- T, 88 | warning = function(w) errflag <<- T) 89 | 90 | if(!errflag) 91 | { 92 | reg.summary = summary(coxph.fit)$coef 93 | result_interaction[i,] = reg.summary["Interaction", c("z", "Pr(>|z|)")] 94 | result_main[i,] = reg.summary["partner", c("z", "Pr(>|z|)")] 95 | } 96 | 97 | # region 2: model without interaction 98 | errflag = F 99 | coxph.fit = tryCatch(coxph(surv~., data=B[,-N_B]), 100 | error = function(e) errflag <<- T, 101 | warning = function(w) errflag <<- T) 102 | 103 | if(!errflag) 104 | { 105 | reg.summary = summary(coxph.fit)$coef 106 | result_partial[i,] = reg.summary["partner", c("z", "Pr(>|z|)")] 107 | } 108 | 109 | # region 3: model with only base effect 110 | errflag = F 111 | coxph.fit = tryCatch(coxph(surv~., data=B[,c(-N_B, -(N_B-2)), drop=F]), 112 | error = function(e) errflag <<- T, 113 | warning = function(w) errflag <<- T) 114 | 115 | if(!errflag) 116 | { 117 | reg.summary = summary(coxph.fit)$coef 118 | result_base[i,] = reg.summary["partner", c("z", "Pr(>|z|)")] 119 | } 120 | } 121 | 122 | writemat(result_interaction, paste0(output, ".interaction")) 123 | writemat(result_main, paste0(output, ".main")) 124 | writemat(result_partial, paste0(output, ".partial")) 125 | writemat(result_base, paste0(output, ".base")) 126 | --------------------------------------------------------------------------------