├── .gitignore ├── DESCRIPTION ├── LICENSE ├── NAMESPACE ├── NEWS.md ├── R ├── data.r ├── progeny-package.r ├── progeny.r ├── progenyPermutations.r └── progenySuppFunc.r ├── README.md ├── data ├── model_human_full.rda ├── model_mouse_full.rda └── vignette_data.RData ├── docs ├── 404.html ├── LICENSE-text.html ├── articles │ ├── ProgenySingleCell.html │ ├── ProgenySingleCell_files │ │ ├── accessible-code-block-0.0.1 │ │ │ └── empty-anchor.js │ │ └── figure-html │ │ │ ├── unnamed-chunk-12-1.png │ │ │ ├── unnamed-chunk-7-1.png │ │ │ └── unnamed-chunk-9-1.png │ ├── index.html │ ├── progeny.html │ ├── progenyBulk.html │ ├── progenyBulk_files │ │ ├── accessible-code-block-0.0.1 │ │ │ └── empty-anchor.js │ │ └── figure-html │ │ │ └── unnamed-chunk-7-1.png │ └── progeny_files │ │ └── figure-html │ │ ├── n_genes-1.png │ │ ├── unnamed-chunk-7-1.png │ │ └── w_dist-1.png ├── authors.html ├── deps │ ├── bootstrap-5.1.3 │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.min.css │ │ ├── font.css │ │ └── fonts │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff │ │ │ ├── 4iCs6KVjbNBYlgo6ew.woff │ │ │ ├── 4iCs6KVjbNBYlgoKfw7w.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvTtA.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyL.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_TOQ.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff │ │ │ ├── JTURjIg1_i6t8kCHKm45_ZpC7g0.woff │ │ │ ├── JTURjIg1_i6t8kCHKm45_dJE7g0.woff │ │ │ ├── JTUSjIg1_i6t8kCHKm45xW0.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlvAA.woff │ │ │ ├── KFOmCnqEu92Fr1Me5g.woff │ │ │ ├── KFOmCnqEu92Fr1Mu4mxM.woff │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff │ │ │ ├── S6u8w4BMUTPHjxsAXC-s.woff │ │ │ ├── S6u8w4BMUTPHjxswWA.woff │ │ │ ├── S6u9w4BMUTPHh6UVSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh6UVeww.woff │ │ │ ├── S6u9w4BMUTPHh7USSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh7USeww.woff │ │ │ ├── S6uyw4BMUTPHjx4wWA.woff │ │ │ ├── S6uyw4BMUTPHvxo.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff │ │ │ ├── XRXV3I6Li01BKof4MQ.woff │ │ │ ├── XRXW3I6Li01BKofA6sKkZQ.woff │ │ │ ├── XRXW3I6Li01BKofAjsOkZQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff │ │ │ ├── pe03MImSLYBIv1o4X1M8cc9iB_5p.woff │ │ │ ├── pe0qMImSLYBIv1o4X1M8cfe5.woff │ │ │ └── q5uGsou0JOdh94bfvQlr.woff │ └── jquery-3.6.0 │ │ └── jquery-3.6.0.min.js ├── extra.css ├── index.html ├── news │ └── index.html ├── pkgdown.js ├── pkgdown.yml ├── reference │ ├── Rplot001.png │ ├── figures │ │ └── tool_logo.png │ ├── getModel.html │ ├── index.html │ ├── model_human_full.html │ ├── model_mouse_full.html │ ├── progeny.html │ ├── progenyPerm.html │ ├── progenyScatter.html │ ├── saveProgenyPlots.html │ └── vignette_data.html ├── search.json └── sitemap.xml ├── inst ├── CITATION └── extdata │ ├── human_def_expected.csv │ ├── human_input.csv │ ├── human_perm_expected.csv │ ├── mouse_def_expected.csv │ ├── mouse_input.csv │ └── mouse_perm_expected.csv ├── man ├── figures │ └── tool_logo.png ├── getModel.Rd ├── model_human_full.Rd ├── model_mouse_full.Rd ├── progeny.Rd ├── progenyPerm.Rd ├── progenyScatter.Rd ├── saveProgenyPlots.Rd └── vignette_data.Rd ├── pkgdown ├── _pkgdown.yml └── extra.css ├── tests ├── testthat.R └── testthat │ └── test-progeny_pipeline.R └── vignettes └── progeny.Rmd /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | progeny.Rproj 3 | .Rproj.user 4 | .Rbuildignore 5 | .Rhistory 6 | vignettes/.Rhistory 7 | vignettes/.Rhistory 8 | vignettes/17ea135933f4_TableS4A.xlsx 9 | vignettes/17ea37d9483_Cell_line_RMA_proc_basalExp.txt.zip 10 | vignettes/BiocFileCache.sqlite 11 | README.html 12 | vignettes/2fe218797e34_Cell_line_RMA_proc_basalExp.txt.zip 13 | vignettes/2fe2590a3b08_TableS4A.xlsx 14 | vignettes/4a2c2af92581_Cell_line_RMA_proc_basalExp.txt.zip 15 | vignettes/4a2c5bb15e4_TableS4A.xlsx 16 | 17 | vignettes/2db419d4ad0_TableS4A.xlsx 18 | vignettes/2db4fd222cb_Cell_line_RMA_proc_basalExp.txt.zip 19 | 20 | .DS_Store 21 | vignettes/.DS_Store 22 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: progeny 2 | Title: Pathway RespOnsive GENes for activity inference from gene expression 3 | Version: 1.17.3 4 | Authors@R: c( 5 | person(given = "Michael", 6 | family = "Schubert", 7 | role = "aut"), 8 | person(given = "Alberto", 9 | family = "Valdeolivas", 10 | role = "ctb", 11 | email = "alvaldeolivas@gmail.com", 12 | comment = c(ORCID = "0000-0001-5482-9023")), 13 | person(given = "Christian H.", 14 | family = "Holland", 15 | role = "ctb", 16 | email = "cholland2408@gmail.com", 17 | comment = c(ORCID = "0000-0002-3060-5786")), 18 | person(given = "Igor", 19 | family = "Bulanov", 20 | role = "ctb"), 21 | person(given = "Aurélien", 22 | family = "Dugourd", 23 | role = c("cre","ctb"), 24 | email = "aurelien.dugourd@bioquant.uni-heidelberg.de") 25 | ) 26 | Description: PROGENy is resource that leverages a large compendium of publicly available signaling perturbation experiments to yield a common core of pathway responsive genes for human and mouse. These, coupled with any statistical method, can be used to infer pathway activities from bulk or single-cell transcriptomics. 27 | URL: https://github.com/saezlab/progeny 28 | BugReports: https://github.com/saezlab/progeny/issues 29 | Depends: 30 | R (>= 3.6.0) 31 | Imports: 32 | Biobase, 33 | stats, 34 | dplyr, 35 | tidyr, 36 | ggplot2, 37 | ggrepel, 38 | gridExtra, 39 | decoupleR, 40 | reshape2 41 | biocViews: SystemsBiology, GeneExpression, FunctionalPrediction, GeneRegulation 42 | License: Apache License (== 2.0) | file LICENSE 43 | LazyData: true 44 | LazyDataCompression: bzip2 45 | Encoding: UTF-8 46 | Suggests: 47 | airway, 48 | biomaRt, 49 | BiocFileCache, 50 | broom, 51 | Seurat, 52 | SingleCellExperiment, 53 | DESeq2, 54 | BiocStyle, 55 | knitr, 56 | readr, 57 | readxl, 58 | pheatmap, 59 | tibble, 60 | rmarkdown, 61 | testthat (>= 2.1.0) 62 | VignetteBuilder: knitr 63 | RoxygenNote: 7.2.2 64 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | S3method(progeny,ExpressionSet) 4 | S3method(progeny,Seurat) 5 | S3method(progeny,SingleCellExperiment) 6 | S3method(progeny,default) 7 | S3method(progeny,matrix) 8 | export(getModel) 9 | export(progeny) 10 | export(progenyPerm) 11 | export(progenyScatter) 12 | export(saveProgenyPlots) 13 | import(ggplot2) 14 | import(ggrepel) 15 | import(gridExtra) 16 | importFrom(dplyr,group_by) 17 | importFrom(dplyr,select) 18 | importFrom(dplyr,top_n) 19 | importFrom(dplyr,ungroup) 20 | importFrom(reshape2,melt) 21 | importFrom(stats,complete.cases) 22 | importFrom(stats,ecdf) 23 | importFrom(stats,sd) 24 | importFrom(tidyr,"%>%") 25 | importFrom(tidyr,spread) 26 | -------------------------------------------------------------------------------- /NEWS.md: -------------------------------------------------------------------------------- 1 | # Progeny v1.11.3 (Release date: 2020-10-14) 2 | 3 | * Model matrices are not accessed in the local and not in the global enviroment 4 | 5 | # Progeny v1.11.2 (Release date: 2020-09-01) 6 | 7 | * Fixed issue with rownames when using Progeny with Permutations function 8 | 9 | # Progeny v1.11.1 (Release date: 2020-06-09) 10 | 11 | * Website: Google Analytics 12 | 13 | # Progeny v1.9.7 (Release date: 2020-04-27) 14 | 15 | * PROGENy website development 16 | 17 | # Progeny v1.9.6 (Release date: 2020-04-27) 18 | 19 | Major update with the following main points: 20 | 21 | * Added the mouse model matrix containing 14 pathways 22 | 23 | * The human model matrix extended to 14 pathways 24 | 25 | * Added the following functions: progenyPerm, progenyScatter, progenySavePlots, 26 | getModel 27 | 28 | * Added tests and test data 29 | 30 | * Added the vignette for usage the PROGENy on single-cell RNA-seq data 31 | 32 | * Added functionality to work with Seurat objects 33 | -------------------------------------------------------------------------------- /R/data.r: -------------------------------------------------------------------------------- 1 | #' The full human linear model underlying PROGENy 2 | #' 3 | #' HGNC gene symbols in rows, pathways in columns. Pathway activity inference 4 | #' works by matrix multiplication of gene expression with the model. 5 | #' 6 | #' @format The full human model contains 22479 genes, associated pathways, 7 | #' weight and the p-value. 8 | #' \describe{ 9 | #' \item{gene}{gene names in HGNC symbols} 10 | #' \item{pathway}{names of PROGENy pathways} 11 | #' \item{weight}{z-scores for a given gene} 12 | #' \item{p.value}{significance of gene in pathway} 13 | #' } 14 | #' @keywords datasets 15 | #' @name model_human_full 16 | #' @examples get("model_human_full", envir = .GlobalEnv) 17 | #' @source \url{https://www.nature.com/articles/s41467-017-02391-6} 18 | NULL 19 | 20 | #' The full mouse linear model underlying PROGENy 21 | #' 22 | #' MGI gene symbols in rows, pathways in columns. Pathway activity inference 23 | #' works by matrix multiplication of gene expression with the model. 24 | #' 25 | #' @format The full mouse model contains 17426 genes, associated pathways, 26 | #' weight and the p-value. 27 | #' \describe{ 28 | #' \item{gene}{gene names in HGNC symbols} 29 | #' \item{pathway}{names of PROGENy pathways} 30 | #' \item{weight}{z-scores for a given gene} 31 | #' \item{p.value}{significance of gene in a pathway} 32 | #' } 33 | #' @keywords datasets 34 | #' @name model_mouse_full 35 | #' @examples get("model_mouse_full", envir = .GlobalEnv) 36 | #' @source \url{https://www.ncbi.nlm.nih.gov/pubmed/31525460} 37 | NULL 38 | 39 | #' The RNA data used in the progeny vignette 40 | #' 41 | #' List with three elements: the gene counts, the experimental design and 42 | #' the result of limma differential analysis 43 | #' 44 | #' @format List with three elements: the gene counts, the experimental design and 45 | #' the result of limma differential analysis 46 | #' \describe{ 47 | #' \item{counts}{gene counts} 48 | #' \item{design}{experiemental design} 49 | #' \item{limma_ttop}{differential analysis result using limma} 50 | #' } 51 | #' @keywords datasets 52 | #' @name vignette_data 53 | #' @examples data("vignette_data") 54 | #' @source \url{https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE119931} 55 | NULL 56 | -------------------------------------------------------------------------------- /R/progeny-package.r: -------------------------------------------------------------------------------- 1 | #' Calculate PROGENy pathway scores from gene expression 2 | #' 3 | #' @name progeny 4 | #' @docType package 5 | NULL 6 | -------------------------------------------------------------------------------- /R/progeny.r: -------------------------------------------------------------------------------- 1 | #' Calculate PROGENy pathway scores from gene expression 2 | #' 3 | #' This function uses the linear model of pathway-responsive genes underlying 4 | #' the PROGENy method. It transforms a gene expression matrix with HGNC/MGI gene 5 | #' symbols in rows and sample names in columns into a pathway score matrix with 6 | #' samples in rows and pathways in columns. 7 | #' 8 | #' The publication of the method is available at: 9 | #' https://www.nature.com/articles/s41467-017-02391-6 10 | #' 11 | #' The supplied expression object has to contain HGNC/MGI symbols in rows. This 12 | #' will, in most cases (and how we originally used it), be either normalized 13 | #' gene expression of a microarray experiment or log-transformed (and 14 | #' possible variance-stabilized) counts from an RNA-seq experiment. 15 | #' 16 | #' The human and mouse model matrices consists of 14 pathways and large set of 17 | #' genes with an associated p-value (p-value per gene and pathway) that accounts 18 | #' for the importance of each gene on each pathway upon perturbation. 19 | #' Its coefficients are non-zero if the gene-pathway pair corresponds 20 | #' to the top N genes (100 by default) that were up-regulated upon stimulation 21 | #' of the pathway in a wide range of experiments. The value corresponds to the 22 | #' fitted z-score across experiments in our model fit. 23 | #' Only rows with at least one non-zero coefficient were included, as the rest 24 | #' is not used to infer pathway activity. 25 | #' 26 | #' @param expr A gene expression object with HGNC/MGI symbols in rows and 27 | #' samples in columns. In order to run PROGENy in single-cell 28 | #' RNAseq data, it also accepts Seurat and SingleCellExperiment 29 | #' object, taking the normalized counts for the computation. 30 | #' @param scale A logical value indicating whether to scale the scores of each 31 | #' pathway to have a mean of zero and a standard deviation of one. 32 | #' It does not apply if we use permutations. 33 | #' @param organism The model organism - "Human" or "Mouse" 34 | 35 | #' @param top The top n genes for generating the model matrix according to 36 | #' significance (p-value) 37 | #' @param perm An interger detailing the number of permutations. No 38 | #' permutations by default (1). When Permutations larger than 1, 39 | #' we compute progeny pathway scores and assesses their 40 | #' significance using a gene sampling-based permutation strategy, 41 | #' for a series of experimental samples/contrasts. 42 | #' @param verbose A logical value indicating whether to display a message 43 | #' about the number of genes used per pathway to compute 44 | #' progeny scores (i.e. number of genes present in the 45 | #' progeny model and in the expression dataset) 46 | #' @param z_scores Only applies if the number of permutations is greater than 1. 47 | #' A logical value. TRUE: the z-scores will be returned for 48 | #' the pathway activity estimations. FALSE: the function returns 49 | #' a normalized z-score value between -1 and 1. 50 | #' @param get_nulldist Only applies if the number of permutations is greater 51 | #' than 1. A logical value. TRUE: the null distributions 52 | #' generated to assess the signifance of the pathways scores 53 | #' is also returned. 54 | #' @param assay_name Only applies if the input is a Seurat object. It selects the 55 | #' name of the assay on which Progeny will be run. Default to: 56 | #' RNA, i.e. normalized expression values. 57 | #' @param return_assay Only applies if the input is a Seurat object. A logical 58 | #' value indicating whether to return progeny results as a new 59 | #' assay called Progeny in the Seurat object used as input. 60 | #' Default to FALSE. 61 | #' @param ... Additional arguments to be passed to the functions. 62 | #' 63 | #' @return A matrix with samples in rows and pathways in columns. In case 64 | #' we run the method with permutations and the option get_nulldist 65 | #' to TRUE, we will get a list with two elements. The first 66 | #' element is the matrix with the pathway activity as before. 67 | #' The second elements is the null distributions that we generate 68 | #' to assess the signifance of the pathways scores. 69 | #' @export 70 | #' @seealso \code{\link{progenyPerm}} 71 | #' @examples 72 | #' # use example gene expression matrix here, this is just for illustration 73 | #' gene_expression <- as.matrix(read.csv(system.file("extdata", 74 | #' "human_input.csv", package = "progeny"), row.names = 1)) 75 | #' 76 | #' # calculate pathway activities 77 | #' pathways <- progeny(gene_expression, scale=TRUE, 78 | #' organism="Human", top = 100, perm = 1) 79 | progeny = function(expr, scale=TRUE, organism="Human", top = 100, perm = 1, 80 | verbose = FALSE, z_scores = FALSE, get_nulldist = FALSE, assay_name = "RNA", 81 | return_assay = FALSE, ...) { 82 | UseMethod("progeny") 83 | } 84 | 85 | #' @export 86 | progeny.ExpressionSet = function(expr, scale=TRUE, organism="Human", top = 100, 87 | perm = 1, verbose = FALSE, z_scores = FALSE, get_nulldist = FALSE, ...) { 88 | 89 | progeny(Biobase::exprs(expr), scale=scale, organism=organism, top=top, 90 | perm = perm, verbose = verbose, z_scores = z_scores, 91 | get_nulldist = get_nulldist) 92 | } 93 | 94 | #' @export 95 | progeny.Seurat = function(expr, scale=TRUE, organism="Human", top = 100, 96 | perm = 1, verbose = FALSE, z_scores = FALSE, get_nulldist = FALSE, 97 | assay_name = "RNA", return_assay = FALSE,...) { 98 | 99 | requireNamespace("Seurat") 100 | 101 | if (!is.logical(return_assay)){ 102 | stop("return_assay should be a logical value") 103 | } 104 | 105 | if (scale & return_assay){ 106 | warning("Scale and return_assay should not be both true. 107 | Please use the function Seurat::ScaleData(object, assay = \"progeny\") 108 | to scale PROGENy scores. Scale is set to FALSE") 109 | scale = FALSE 110 | } 111 | 112 | results <- progeny(as.matrix(Seurat::GetAssayData(expr, slot = "data", 113 | assay = assay_name)), scale=scale, organism=organism, top=top, 114 | perm = perm, verbose = verbose, z_scores = z_scores, 115 | get_nulldist = get_nulldist, assay_name = assay_name, 116 | return_assay = return_assay) 117 | 118 | if (return_assay){ 119 | expr[['progeny']] = Seurat::CreateAssayObject(data = t(results)) 120 | Seurat::Key(object = expr[['progeny']]) <- 'progeny_' 121 | return(expr) 122 | } else { 123 | return(results) 124 | } 125 | 126 | } 127 | 128 | #' @export 129 | progeny.SingleCellExperiment = function(expr, scale=FALSE, organism="Human", 130 | top = 100, perm = 1, verbose = FALSE, z_scores = FALSE, 131 | get_nulldist = FALSE, ...) { 132 | 133 | requireNamespace("SingleCellExperiment") 134 | 135 | progeny(as.matrix(SingleCellExperiment::normcounts(expr)), scale=scale, 136 | organism=organism, top=top, perm = perm, verbose = verbose, 137 | z_scores = z_scores, get_nulldist = get_nulldist) 138 | } 139 | 140 | #' @export 141 | progeny.matrix = function(expr, scale=TRUE, organism="Human", top = 100, 142 | perm = 1, verbose = FALSE, z_scores = FALSE, get_nulldist = FALSE,...) { 143 | 144 | if (!is.logical(scale)){ 145 | stop("scale should be a logical value") 146 | } 147 | 148 | if (!(is.numeric(perm)) || perm < 1){ 149 | stop("perm should be an integer value") 150 | } 151 | 152 | if (!is.logical(verbose)){ 153 | stop("verbose should be a logical value") 154 | } 155 | 156 | if (!is.logical(z_scores)){ 157 | stop("z_scores should be a logical value") 158 | } 159 | 160 | if (!is.logical(get_nulldist)){ 161 | stop("get_nulldist should be a logical value") 162 | } 163 | 164 | if (perm == 1 && (z_scores || get_nulldist)){ 165 | if (verbose){ 166 | message("z_scores and get_nulldist are only applicable when the 167 | number of permutations is larger than 1.") 168 | } 169 | } 170 | 171 | model <- getModel(organism, top=top) 172 | common_genes <- intersect(rownames(expr), rownames(model)) 173 | 174 | if (verbose){ 175 | number_genes <- apply(model, 2, function (x) { 176 | sum(rownames(model)[which (x != 0)] %in% unique(rownames(expr))) 177 | }) 178 | message("Number of genes used per pathway to compute progeny scores:") 179 | message(paste(names(number_genes),": ", number_genes, " (", 180 | (number_genes/top)*100,"%)",sep = "","\n")) 181 | } 182 | 183 | if (perm==1) { 184 | result <- t(expr[common_genes,,drop=FALSE]) %*% 185 | as.matrix(model[common_genes,,drop=FALSE]) 186 | 187 | if (scale && nrow(result) > 1) { 188 | rn <- rownames(result) 189 | result <- apply(result, 2, scale) 190 | rownames(result) <- rn 191 | } 192 | 193 | } else if (perm > 1) { 194 | expr <- data.frame(names = row.names(expr), row.names = NULL, expr) 195 | model <- data.frame(names = row.names(model), row.names = NULL, model) 196 | result <- progenyPerm(expr, model, k = perm, z_scores = z_scores, 197 | get_nulldist = get_nulldist) 198 | } 199 | 200 | return(result) 201 | } 202 | 203 | #' @export 204 | progeny.default = function(expr, scale=TRUE, organism="Human", top = 100, 205 | perm = 1, verbose = FALSE, z_scores = FALSE, get_nulldist = FALSE, ...) { 206 | stop("Do not know how to access the data matrix from class ", class(expr)) 207 | } 208 | -------------------------------------------------------------------------------- /R/progenyPermutations.r: -------------------------------------------------------------------------------- 1 | #'Compute progeny pathway scores and assesses significance based on permutations 2 | #' 3 | #'@param df A data.frame of n*m+1 dimension, where n is the number of omic 4 | #'features to be considered and m is the number of samples/contrasts. 5 | #'The first column should be the identifiers of the omic features. 6 | #'These identifiers must be coherent with the identifiers of the weight matrix. 7 | #'@param weight_matrix A progeny coefficient matrix. the first column should be 8 | #'the identifiers of the omic features and should be coherent with 9 | #'the identifiers provided in df. 10 | #'@param k The number of permutations to be performed to generate 11 | #'the null-distribution used to estimate the significance of progeny scores. 12 | #'The default value is 10000. 13 | #'@param z_scores if true, the z-scores will be returned for 14 | #'the pathway activity estimations. Else, the function returns 15 | #'a normalized z-score value between -1 and 1. 16 | #'@param get_nulldist if true, the null score distribution used for 17 | #'normalization will be returned along with the actual normalized score data 18 | #'frame. 19 | #'@importFrom stats complete.cases sd ecdf 20 | #'@export 21 | #'@return This function returns a list of two elements. The first element is 22 | #'a data frame of p*m+1 dimensions, where p is the number of progeny pathways, 23 | #'and m is the number of samples/contrasts. Each cell represents the 24 | #'significance of a progeny pathway score for one sample/contrast. The 25 | #'significance ranges between -1 and 1. The significance is equal to x*2-1, x 26 | #'being the quantile of the progeny pathway score with respect to the null 27 | #'distribution. Thus, this significance can be interpreted as the equivalent of 28 | #'1-p.value two-sided test over an empirical distribution) with the sign 29 | #'indicating the direction of the regulation. The second element is the null 30 | #'distribution list (a null distribution is generated for each sample/contrast). 31 | #'@examples 32 | #' # use example gene expression matrix 33 | #' gene_expression <- as.matrix(read.csv(system.file("extdata", 34 | #' "human_input.csv", package = "progeny"), row.names = 1)) 35 | #' 36 | #' # calculate pathway activities 37 | #' progeny(gene_expression, scale=TRUE, organism="Human", top=100, perm=10000) 38 | #'@export 39 | progenyPerm <- 40 | function(df,weight_matrix,k = 10000, z_scores = TRUE, get_nulldist = FALSE) 41 | { 42 | resList <- list() 43 | if(get_nulldist) { 44 | nullDist_list <- list() 45 | } 46 | 47 | for(i in 2:length(df[1,])) { 48 | current_df <- df[,c(1,i)] 49 | current_df <- current_df[complete.cases(current_df),] 50 | t_values <- current_df[,2] 51 | current_weights <- weight_matrix 52 | names(current_df)[1] <- "ID" 53 | names(current_weights)[1] <- "ID" 54 | 55 | common_ids <- merge(current_df, current_weights, by = "ID") 56 | common_ids <- as.character(common_ids$ID) 57 | 58 | row.names(current_df) <- current_df$ID 59 | current_df <- as.data.frame(current_df[common_ids,-1]) 60 | row.names(current_weights) <- current_weights$ID 61 | current_weights <- as.data.frame(current_weights[common_ids,-1]) 62 | current_mat <- as.matrix(current_df) 63 | current_weights <- t(current_weights) 64 | 65 | scores <- as.data.frame(current_weights %*% current_mat) 66 | null_dist_t <- replicate(k, sample(t_values,length(current_mat[,1]), 67 | replace = FALSE)) 68 | null_dist_scores <- current_weights %*% null_dist_t 69 | 70 | if(get_nulldist) { 71 | nullDist_list[[i-1]] <- null_dist_scores 72 | } 73 | 74 | if(z_scores) { 75 | scores$mean <- apply(null_dist_scores,1,mean) 76 | scores$sd <- apply(null_dist_scores,1,sd) 77 | resListCurrent <- (scores[,1]-scores[,2])/scores[,3] 78 | names(resListCurrent) <- names(weight_matrix[,-1]) 79 | resList[[i-1]] <- resListCurrent 80 | } else { 81 | for(j in seq(1, length(weight_matrix[,-1]))) { 82 | ecdf_function <- ecdf(null_dist_scores[j,]) 83 | scores[j,1] <- ecdf_function(scores[j,1]) 84 | } 85 | score_probas <- scores*2-1 86 | resListCurrent <- score_probas[,1] 87 | names(resListCurrent) <- names(weight_matrix[,-1]) 88 | resList[[i-1]] <- resListCurrent 89 | } 90 | } 91 | names(resList) <- colnames(df)[-1] 92 | resDf <- as.data.frame(resList) 93 | if(get_nulldist) { 94 | names(nullDist_list) <- names(df[,-1]) 95 | return(list(resDf, nullDist_list)) 96 | } else { 97 | return(t(resDf)) 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /R/progenySuppFunc.r: -------------------------------------------------------------------------------- 1 | #' Calculate Progeny Scores with Permutations 2 | #' 3 | #'This function generate a series of scatter plot with marginal distribution 4 | #'(in the form of an arrangeGrob object), for each progeny pathway and 5 | #'sample/contrast. Each scatter plot has progeny weights as x-axis and the gene 6 | #'level stat used to compute progeny score as the y-axis. The marginal 7 | #'distribution of the gene level stats is displayed on the right of the plot 8 | #'to give visual support of the significance of each gene contributing to 9 | #'the progeny pathway score. The green and red colors represent the positive 10 | #'and negative contribution of genes to the progeny pathway, respectively. 11 | #'For each gene contribution, 4 cases are possible, as the combinations of 12 | #'the sign of the gene level stat and the sign of the gene level weight. 13 | #'Positive weight will lead to a positive(green)/negative(red) gene contribution 14 | #'if the gene level stat is positive/negative. Negative weight will lead to 15 | #'a negative(red)/positive(green) gene contribution if the gene level stat 16 | #'is positive/negative. 17 | #' 18 | #'@param df an n*m data frame, where n is the number of omic features (genes). 19 | #'m isn't really important, as long as at least one column corresponds to a 20 | #'sample or contrast statistic. One of the columns should correspond to the gene 21 | #'symbols. 22 | #'@param weight_matrix A progeny coefficient matrix. the first column should be 23 | #'the identifiers of the omic features, and should be coherent with 24 | #'the identifiers provided in df. 25 | #'@param dfID an integer corresponding to the column number of 26 | #'the gene identifiers of df. 27 | #'@param weightID an integer corresponding to the column number of the gene 28 | #'identifiers of the weight matrix. 29 | #'@param statName The name of the stat used, to be displayed on the plot 30 | #'@param verbose Logical indicating whether we want to have the messages 31 | #'indicating the different computed weights. 32 | #'@importFrom stats ecdf 33 | #'@import ggplot2 34 | #'@import ggrepel 35 | #'@import gridExtra 36 | #'@importFrom reshape2 melt 37 | #'@return The function returns a list of list of arrangeGrob objects. 38 | #'The first level list elements correspond to samples/contrasts. 39 | #'The second level correspond to pathways. 40 | #'The plots can be saved in a pdf format using the saveProgenyPlots function. 41 | #'@examples 42 | #' # use example gene expression matrix 43 | #' 44 | #' gene_expression <- read.csv(system.file("extdata", 45 | #' "human_input.csv", package = "progeny")) 46 | #' 47 | #' # getting a model matrix with 100 top significant genes and converting to df 48 | #' weight_matrix <- getModel("Human", top=100) 49 | #' weight_matrix <- data.frame(names = row.names(weight_matrix), 50 | #' row.names = NULL, weight_matrix) 51 | #' 52 | #' #use progenyScatter function 53 | #' plots <- progenyScatter(gene_expression, weight_matrix) 54 | #'@export 55 | progenyScatter <- function(df,weight_matrix,dfID = 1, weightID = 1, 56 | statName = "gene stats", verbose = FALSE) { 57 | 58 | weight <- color <- ID <- NULL 59 | plot_list_contrasts <- list(0) 60 | for (i in 2:length(df[1,])) { 61 | plot_list_pathways <- list(0) 62 | for (j in 2:length(weight_matrix[1,])) { 63 | sub_df <- df[,c(dfID,i)] 64 | pathway_weights <- weight_matrix[,c(weightID,j)] 65 | names(sub_df) <- c("ID","stat") 66 | minstat <- min(sub_df$stat) 67 | maxstat <- max(sub_df$stat) 68 | 69 | histo <- ggplot(sub_df, aes(x = stat, fill = "blue")) + 70 | geom_density() + coord_flip() + 71 | scale_fill_manual(values = c("#00c5ff")) + 72 | xlim(minstat, maxstat) + theme_minimal() + 73 | theme(legend.position = "none", axis.text.x = element_blank(), 74 | axis.ticks.x = element_blank(), axis.title.y = element_blank(), 75 | axis.text.y = element_blank(), axis.ticks.y = element_blank(), 76 | panel.grid.major = element_blank(), 77 | panel.grid.minor = element_blank()) 78 | 79 | names(pathway_weights) <- c("ID","weight") 80 | pathway_weights <- pathway_weights[pathway_weights$weight != 0,] 81 | percentile <- ecdf(sub_df$stat) 82 | sub_df <- merge(sub_df,pathway_weights,by = "ID") 83 | sub_df$color <- "3" 84 | sub_df[(sub_df$weight > 0 & sub_df$stat > 0),"color"] <- "1" 85 | sub_df[(sub_df$weight > 0 & sub_df$stat < 0),"color"] <- "2" 86 | sub_df[(sub_df$weight < 0 & sub_df$stat > 0),"color"] <- "2" 87 | sub_df[(sub_df$weight < 0 & sub_df$stat < 0),"color"] <- "1" 88 | sub_df[(percentile(sub_df$stat) < .95 & 89 | percentile(sub_df$stat) > .05),1] <- NA 90 | 91 | if (verbose){ 92 | message(paste("weights of ",names(weight_matrix)[j], sep = "")) 93 | } 94 | 95 | title <- paste("weights of ",names(weight_matrix)[j], sep = "") 96 | 97 | scatterplot <- ggplot(sub_df, aes(x = weight, y = stat, 98 | color = color)) + geom_point() + 99 | scale_colour_manual(values = c("red","royalblue3","grey")) + 100 | geom_label_repel(aes(label = ID)) + 101 | ylim(minstat, maxstat) + theme_minimal() + 102 | theme(legend.position = "none") + 103 | geom_vline(xintercept = 0, linetype = 'dotted') + 104 | geom_hline(yintercept = 0, linetype = 'dotted') + 105 | labs(x = title, y = statName) 106 | 107 | lay <- t(as.matrix(c(1,1,1,1,2))) 108 | gg <- arrangeGrob(scatterplot, histo, nrow = 1, ncol = 2, 109 | layout_matrix = lay) 110 | plot_list_pathways[[j-1]] <- gg 111 | } 112 | names(plot_list_pathways) <- names(weight_matrix[,-weightID]) 113 | plot_list_contrasts[[i-1]] <- plot_list_pathways 114 | } 115 | return(plot_list_contrasts) 116 | } 117 | 118 | #'Function to save Progeny plots 119 | #' 120 | #'This function is designed to save the plots (in pdf format) of a nested 121 | #'(2 level) list of arrangeGrob objects, such as the one returned by 122 | #'the progenyScatter function. 123 | #' 124 | #'@param plots a list of list of arrangeGrob object (such as the one returned 125 | #'by the progenyScatter function.).The first level list elements correspond 126 | #'to samples/contrasts. The second level corresponds to pathways. 127 | #'The plots can be saved in a pdf format using the saveProgenyPlots function. 128 | #'@param contrast_names a vector of the same length as the first level of 129 | #'the plot list corresponding to the names of each sample/contrast 130 | #'@param dirpath the path to the directory where the plots should be saved 131 | #'@import ggplot2 132 | #'@examples 133 | #' #create plots using progneyScatter function 134 | #' gene_expression <- read.csv(system.file("extdata", 135 | #' "human_input.csv", package = "progeny")) 136 | #' 137 | #' # getting a weight_matrix 138 | #' weight_matrix <- getModel("Human", top=100) 139 | #' weight_matrix <- data.frame(names = row.names(weight_matrix), 140 | #' row.names = NULL, weight_matrix) 141 | #' plots <- progenyScatter(gene_expression, weight_matrix) 142 | #' 143 | #' #create a list with contrast names 144 | #' contrast_names <- names(gene_expression[2:ncol(gene_expression)]) 145 | #' 146 | #' #assign a path to store your plots 147 | #' dirpath <- "./progeny_plots/" 148 | #' 149 | #' # save it 150 | #' # saveProgenyPlots(plots, contrast_names, dirpath) 151 | #' @return This function produces the pdf files of plots taken from the 152 | #' progenyScatter function 153 | #'@export 154 | saveProgenyPlots <- function(plots, contrast_names, dirpath) { 155 | 156 | i <- 1 157 | for (condition in plots) { 158 | dirname <- paste(dirpath,contrast_names[i], sep = "") 159 | dir.create(dirname, recursive = TRUE, showWarnings = FALSE) 160 | j <- 1 161 | for (pathway in condition) { 162 | filename <- paste(dirname,names(condition)[j],sep = "/") 163 | filename <- paste(filename,".pdf",sep = "") 164 | ggsave(filename, pathway,device = "pdf", dpi = 300) 165 | j <- j+1 166 | } 167 | i <- i+1 168 | } 169 | } 170 | 171 | #'Returns the Progeny Model 172 | #' 173 | #'This function is designed for getting a model matrix with top significant 174 | #'genes for each pathway 175 | #' 176 | #'@param organism "Human" or "Mouse" taken from the main function's argument. 177 | #'Default to "Human" 178 | #'@param top Desired top number of genes for each pathway according to their 179 | #'significance(p.value). Default to 100 180 | #'@param decoupleR if TRUE, the model matrix is goign to be generated with a format 181 | #'makes it directlz compatible with the decoupleR package 182 | #'@examples #getting a model matrix according to the desired top n significant 183 | #'model <- getModel("Human", top=100) 184 | #'@return This function returns model matrix according to the top n significant 185 | #'@importFrom dplyr group_by top_n ungroup select 186 | #'@importFrom tidyr spread %>% 187 | #'@export 188 | getModel <- function(organism = "Human", top= 100, decoupleR = F) { 189 | 190 | pathway <- p.value <- weight <- NULL 191 | 192 | if (organism == "Human") { 193 | full_model <- progeny::model_human_full 194 | } else if (organism == "Mouse") { 195 | full_model <- progeny::model_mouse_full 196 | } else { 197 | stop("Wrong organism name. Please specify 'Human' or 'Mouse'.") 198 | } 199 | 200 | if (!(is.numeric(top)) || top < 1){ 201 | stop("perm should be an integer value") 202 | } 203 | 204 | model <- full_model %>% 205 | dplyr::group_by(pathway) %>% 206 | dplyr::top_n(top, wt = -p.value) %>% 207 | dplyr::ungroup(pathway) %>% 208 | dplyr::select(-p.value) %>% 209 | tidyr::spread(pathway, weight, fill=0) %>% 210 | data.frame(row.names = 1, check.names = FALSE, stringsAsFactors = FALSE) 211 | 212 | if(decoupleR) 213 | { 214 | model$gene <- row.names(model) 215 | model <- melt(model) 216 | model <- model[model$value != 0,] 217 | model$mor <- sign(model$value) 218 | model$value <- abs(model$value) 219 | names(model) <- gsub("value","likelihood",names(model)) 220 | } 221 | 222 | return(model) 223 | } 224 | 225 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PROGENy: Pathway RespOnsive GENes for activity inference 2 | 3 | 4 | ![GitHub](https://img.shields.io/github/license/saezlab/progeny) 5 | 6 | 7 | 8 | ## Overview 9 | 10 | PROGENy is resource that leverages a large compendium of publicly available 11 | signaling perturbation experiments to yield a common core of pathway responsive 12 | genes for human and mouse. These, coupled with any statistical method, can be 13 | used to infer pathway activities from bulk or single-cell transcriptomics. 14 | 15 | This is an R package for storing the pathway signatures. To infer pathway 16 | activities, please check out 17 | [decoupleR](https://doi.org/10.1093/bioadv/vbac016), available in 18 | [R](https://saezlab.github.io/decoupleR/) or 19 | [python](https://github.com/saezlab/decoupler-py). 20 | 21 | ## Installation 22 | 23 | Progeny is available in 24 | [Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/progeny.html). 25 | In addition, one can install the development version from the Github repository: 26 | 27 | ```r 28 | ## To install the package from Bioconductor 29 | if (!requireNamespace("BiocManager", quietly = TRUE)) 30 | install.packages("BiocManager") 31 | 32 | BiocManager::install("progeny") 33 | 34 | ## To install the development version from the Github repo: 35 | devtools::install_github("saezlab/progeny") 36 | ``` 37 | 38 | ## Updates 39 | 40 | Since the original release, we have implemented some extensions in PROGENy: 41 | 42 | 1. **Extension to mouse**: 43 | Originally PROGENy was developed for the application to human data. 44 | In a benchmark study we showed that PROGENy is also applicable to mouse data, 45 | as described in 46 | [Holland et al., 2019](https://doi.org/10.1016/j.bbagrm.2019.194431). 47 | Accordingly, we included new parameters to run mouse version of PROGENy by 48 | transforming the human genes to their mouse orthologs. 49 | 2. **Expanding Pathway Collection**: 50 | We expanded human and mouse PROGENy with the pathways Androgen, Estrogen and 51 | WNT. 52 | 3. **Extension to single-cell RNA-seq data**: 53 | We showed that PROGENy can be applied to scRNA-seq data, as described in 54 | [Holland et al., 2020](https://doi.org/10.1186/s13059-020-1949-z) 55 | 56 | ## Citation 57 | 58 | > Schubert M, Klinger B, Klünemann M, Sieber A, Uhlitz F, Sauer S, Garnett MJ, 59 | Blüthgen N, Saez-Rodriguez J. 2018. Perturbation-response genes reveal signaling 60 | footprints in cancer gene expression. _Nature Communications_: 61 | [10.1038/s41467-017-02391-6](https://doi.org/10.1038/s41467-017-02391-6) 62 | -------------------------------------------------------------------------------- /data/model_human_full.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/data/model_human_full.rda -------------------------------------------------------------------------------- /data/model_mouse_full.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/data/model_mouse_full.rda -------------------------------------------------------------------------------- /data/vignette_data.RData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/data/vignette_data.RData -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Page not found (404) • progeny 9 | 10 | 11 | 12 | 13 | 14 | 15 | 25 | 26 | 27 | Skip to contents 28 | 29 | 30 |
82 |
83 |
87 | 88 | Content not found. Please use links in the navbar. 89 | 90 |
91 |
92 | 93 | 94 | 105 |
106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /docs/articles/ProgenySingleCell_files/accessible-code-block-0.0.1/empty-anchor.js: -------------------------------------------------------------------------------- 1 | // Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> 2 | // v0.0.1 3 | // Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. 4 | 5 | document.addEventListener('DOMContentLoaded', function() { 6 | const codeList = document.getElementsByClassName("sourceCode"); 7 | for (var i = 0; i < codeList.length; i++) { 8 | var linkList = codeList[i].getElementsByTagName('a'); 9 | for (var j = 0; j < linkList.length; j++) { 10 | if (linkList[j].innerHTML === "") { 11 | linkList[j].setAttribute('aria-hidden', 'true'); 12 | } 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /docs/articles/ProgenySingleCell_files/figure-html/unnamed-chunk-12-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/ProgenySingleCell_files/figure-html/unnamed-chunk-12-1.png -------------------------------------------------------------------------------- /docs/articles/ProgenySingleCell_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/ProgenySingleCell_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/articles/ProgenySingleCell_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/ProgenySingleCell_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /docs/articles/index.html: -------------------------------------------------------------------------------- 1 | 2 | Articles • progeny 12 | Skip to contents 13 | 14 | 15 |
62 |
63 |
66 | 67 |
68 |

All vignettes

69 |

70 | 71 |
PROGENy pathway signatures
72 |
73 |
74 |
75 | 76 | 77 |
86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/articles/progenyBulk_files/accessible-code-block-0.0.1/empty-anchor.js: -------------------------------------------------------------------------------- 1 | // Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> 2 | // v0.0.1 3 | // Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. 4 | 5 | document.addEventListener('DOMContentLoaded', function() { 6 | const codeList = document.getElementsByClassName("sourceCode"); 7 | for (var i = 0; i < codeList.length; i++) { 8 | var linkList = codeList[i].getElementsByTagName('a'); 9 | for (var j = 0; j < linkList.length; j++) { 10 | if (linkList[j].innerHTML === "") { 11 | linkList[j].setAttribute('aria-hidden', 'true'); 12 | } 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /docs/articles/progenyBulk_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/progenyBulk_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/articles/progeny_files/figure-html/n_genes-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/progeny_files/figure-html/n_genes-1.png -------------------------------------------------------------------------------- /docs/articles/progeny_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/progeny_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/articles/progeny_files/figure-html/w_dist-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/articles/progeny_files/figure-html/w_dist-1.png -------------------------------------------------------------------------------- /docs/authors.html: -------------------------------------------------------------------------------- 1 | 2 | Authors and Citation • progeny 12 | Skip to contents 13 | 14 | 15 |
62 |
63 |
66 | 67 |
68 |

Authors

69 | 70 |
  • 71 |

    Michael Schubert. Author. 72 |

    73 |
  • 74 |
  • 75 |

    Alberto Valdeolivas. Contributor. 76 |

    77 |
  • 78 |
  • 79 |

    Christian H. Holland. Contributor. 80 |

    81 |
  • 82 |
  • 83 |

    Igor Bulanov. Contributor. 84 |

    85 |
  • 86 |
  • 87 |

    Aurélien Dugourd. Maintainer, contributor. 88 |

    89 |
  • 90 |
91 | 92 |
93 |

Citation

94 |

Source: inst/CITATION

95 | 96 |

M Schubert, B Klinger, M Klünemann, A Sieber, F Uhlitz, S Sauer, MJ Garnett, N Blüthgen, and J Saez-Rodriguez. 2018. “Perturbation-Response Genes Reveal Signaling Footprints in Cancer Gene Expression.” Nature Communications 9 (1)

97 |
@Article{,
 98 |   author = {Michael Schubert and Bertram Klinger and Martina Klünemann and Anja Sieber and Florian Uhlitz and Sascha Sauer and Mathew J Garnett and Nils Blüthgen and Julio Saez-Rodriguez},
 99 |   title = {Perturbation-response genes reveal signaling footprints in cancer gene expression},
100 |   journal = {Nature communications},
101 |   year = {2018},
102 |   volume = {9},
103 |   number = {20},
104 | }
105 |
106 |
108 | 109 | 110 |
119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | font-style: normal; 4 | font-weight: 300; 5 | font-display: swap; 6 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff'); 7 | } 8 | @font-face { 9 | font-family: 'Source Sans Pro'; 10 | font-style: normal; 11 | font-weight: 400; 12 | font-display: swap; 13 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff'); 14 | } 15 | @font-face { 16 | font-family: 'Source Sans Pro'; 17 | font-style: normal; 18 | font-weight: 700; 19 | font-display: swap; 20 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff'); 21 | } 22 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgo6ew.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgo6ew.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgoKfw7w.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgoKfw7w.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_ZpC7g0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_ZpC7g0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_dJE7g0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_dJE7g0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/JTUSjIg1_i6t8kCHKm45xW0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/JTUSjIg1_i6t8kCHKm45xW0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Me5g.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Me5g.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Mu4mxM.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Mu4mxM.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxsAXC-s.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxsAXC-s.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxswWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxswWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHjx4wWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHjx4wWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHvxo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHvxo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/XRXV3I6Li01BKof4MQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/XRXV3I6Li01BKof4MQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofA6sKkZQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofA6sKkZQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofAjsOkZQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofAjsOkZQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/q5uGsou0JOdh94bfvQlr.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/deps/bootstrap-5.1.3/fonts/q5uGsou0JOdh94bfvQlr.woff -------------------------------------------------------------------------------- /docs/extra.css: -------------------------------------------------------------------------------- 1 | .contents p:first-of-type img { 2 | background-color: white; 3 | padding: 10px; 4 | margin-top: 15px; 5 | scale: 1.1; 6 | position: relative; 7 | left: 10%; 8 | } 9 | 10 | body { 11 | font-size: 117%!important; 12 | } 13 | 14 | .bg-primary { 15 | background-color: #34628F!important; 16 | } 17 | 18 | .navbar-brand { 19 | font-size: 166%!important; 20 | } 21 | 22 | nav[data-toggle="toc"] .nav > li > a { 23 | border-radius: 0px!important; 24 | padding-left: 1rem!important; 25 | } 26 | 27 | pre { 28 | border-radius: 0px!important; 29 | background-color: white!important; 30 | } 31 | 32 | code span, code a:any-link { 33 | color: #1f1c1b!important; 34 | }/* Normal */ 35 | code span.al, code span.al a:any-link { 36 | color: #bf0303!important; 37 | background-color: #f7e6e6!important; 38 | font-weight: bold; 39 | } /* Alert */ 40 | code span.an, code span.an a:any-link { 41 | color: #ca60ca!important; 42 | } /* Annotation */ 43 | code span.at, code span.at a:any-link { 44 | color: #0057ae!important; 45 | } /* Attribute */ 46 | code span.bn, code span.bn a:any-link { 47 | color: #b08000!important; 48 | } /* BaseN */ 49 | code span.bu, code span.bu a:any-link { 50 | color: #644a9b!important; 51 | font-weight: bold; 52 | } /* BuiltIn */ 53 | code span.cf, code span.cf a:any-link { 54 | color: #1f1c1b!important; 55 | font-weight: bold; 56 | } /* ControlFlow */ 57 | code span.ch, code span.ch a:any-link { 58 | color: #924c9d!important; 59 | } /* Char */ 60 | code span.cn, code span.cn a:any-link { 61 | color: #aa5500!important; 62 | }/* Constant */ 63 | code span.co, code span.co a:any-link { 64 | color: #898887!important; 65 | }/* Comment */ 66 | code span.cv, code span.cv a:any-link { 67 | color: #0095ff!important; 68 | }/* CommentVar */ 69 | code span.do, code span.do a:any-link { 70 | color: #607880!important; 71 | }/* Documentation */ 72 | code span.dt, code span.dt a:any-link { 73 | color: #0057ae!important; 74 | }/* DataType */ 75 | code span.dv, code span.dv a:any-link { 76 | color: #b08000!important; 77 | }/* DecVal */ 78 | code span.er, code span.er a:any-link { 79 | color: #bf0303!important; 80 | text-decoration: underline; 81 | } /* Error */ 82 | code span.ex, code span.ex a:any-link { 83 | color: #0095ff!important; 84 | font-weight: bold; 85 | } /* Extension */ 86 | code span.fl, code span.fl a:any-link { 87 | color: #b08000!important; 88 | }/* Float */ 89 | code span.fu, 90 | code span.fu a:any-link { 91 | color: #644a9b!important; 92 | } /* Function */ 93 | code span.im, code span.im a:any-link { 94 | color: #ff5500!important; 95 | }/* Import */ 96 | code span.in, code span.in a:any-link { 97 | color: #b08000!important; 98 | }/* Information */ 99 | code span.kw, code span.kw a:any-link { 100 | /*color: #1f1c1b!important;*/ 101 | color: #007BA5!important; 102 | font-weight: bold; 103 | } /* Keyword */ 104 | code span.op, code span.op a:any-link { 105 | /* color: #1f1c1b!important; */ 106 | color: #5E5E5E!important; 107 | }/* Operator */ 108 | code span.ot, code span.ot a:any-link { 109 | color: #006e28!important; 110 | }/* Other */ 111 | code span.pp, code span.pp a:any-link { 112 | color: #006e28!important; 113 | }/* Preprocessor */ 114 | code span.re, code span.re a:any-link { 115 | color: #0057ae!important; 116 | background-color: #e0e9f8!important; 117 | } /* RegionMarker */ 118 | code span.sc, code span.sc a:any-link { 119 | color: #3daee9!important; 120 | }/* SpecialChar */ 121 | code span.ss, code span.ss a:any-link { 122 | color: #ff5500!important; 123 | }/* SpecialString */ 124 | /* code span.st, code span.st a:any-link { 125 | * color: #bf0303!important; 126 | * }/* String */ 127 | code span.st, code span.st a:any-link { 128 | color: #20794d!important; 129 | }/* String */ 130 | code span.va, code span.va a:any-link { 131 | color: #0057ae!important; 132 | }/* Variable */ 133 | code span.vs, code span.vs a:any-link { 134 | color: #bf0303!important; 135 | }/* VerbatimString */ 136 | code span.wa, code span.wa a:any-link { 137 | color: #bf0303!important; 138 | }/* Warning */ 139 | 140 | .nav-text.text-muted { 141 | color: #ffffff!important; 142 | } 143 | 144 | .nav-item.active > .nav-link { 145 | background-color: #e9ecef!important; 146 | color: #133676!important; 147 | } 148 | 149 | .navbar-dark input[type="search"] { 150 | background-color: #e9ecef!important; 151 | color: #212529!important; 152 | } 153 | 154 | .template-home > .row > #main > p > img { 155 | background-color: #ffffff!important; 156 | padding-top: 20px; 157 | } 158 | 159 | .template-home > .row > #main > .section > .page-header > img { 160 | display: none!important; 161 | } 162 | 163 | .template-home h1, .template-home h2, .template-home h3, .template-home h4, 164 | .template-home h5, .template-home h6, .template-article .page-header h1 { 165 | font-weight: 700!important; 166 | } 167 | 168 | h1 { 169 | font-size: 4.125rem!important; 170 | } 171 | 172 | img.logo { 173 | background-color: #ffffff!important; 174 | } 175 | 176 | p.abstract { 177 | font-size: calc(1.375rem + 1.5vw)!important; 178 | } 179 | 180 | h4.author { 181 | font-size: 1.25rem!important; 182 | margin-top: 1rem!important; 183 | } 184 | 185 | @media (min-width: 1200px){ 186 | p.abstract { 187 | font-size: 2.5rem!important; 188 | } 189 | } 190 | 191 | .author_afil { 192 | font-size: small!important; 193 | } 194 | 195 | .nav-item { 196 | margin-left: 10px!important; 197 | } 198 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Pathway RespOnsive GENes for activity inference from gene expression • progeny 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 27 | 28 | 29 | Skip to contents 30 | 31 | 32 |
84 |
85 |
86 | 88 | 89 |

GitHub

90 |
91 |

Overview 92 |

93 |

PROGENy is resource that leverages a large compendium of publicly available signaling perturbation experiments to yield a common core of pathway responsive genes for human and mouse. These, coupled with any statistical method, can be used to infer pathway activities from bulk or single-cell transcriptomics.

94 |

This is an R package for storing the pathway signatures. To infer pathway activities, please check out decoupleR, available in R or python.

95 |
96 |
97 |

Installation 98 |

99 |

Progeny is available in Bioconductor. In addition, one can install the development version from the Github repository:

100 |
101 | ## To install the package from Bioconductor
102 | if (!requireNamespace("BiocManager", quietly = TRUE))
103 |     install.packages("BiocManager")
104 | 
105 | BiocManager::install("progeny")
106 | 
107 | ## To install the development version from the Github repo:
108 | devtools::install_github("saezlab/progeny")
109 |
110 |
111 |

Updates 112 |

113 |

Since the original release, we have implemented some extensions in PROGENy:

114 |
    115 |
  1. 116 | Extension to mouse: Originally PROGENy was developed for the application to human data. In a benchmark study we showed that PROGENy is also applicable to mouse data, as described in Holland et al., 2019. Accordingly, we included new parameters to run mouse version of PROGENy by transforming the human genes to their mouse orthologs.
  2. 117 |
  3. 118 | Expanding Pathway Collection: We expanded human and mouse PROGENy with the pathways Androgen, Estrogen and WNT.
  4. 119 |
  5. 120 | Extension to single-cell RNA-seq data: We showed that PROGENy can be applied to scRNA-seq data, as described in Holland et al., 2020 121 |
  6. 122 |
123 |
124 |
125 |

Citation 126 |

127 |
128 |

Schubert M, Klinger B, Klünemann M, Sieber A, Uhlitz F, Sauer S, Garnett MJ, Blüthgen N, Saez-Rodriguez J. 2018. Perturbation-response genes reveal signaling footprints in cancer gene expression. Nature Communications: 10.1038/s41467-017-02391-6

129 |
130 |
131 |
132 |
169 |
170 | 171 | 172 | 183 |
184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | -------------------------------------------------------------------------------- /docs/news/index.html: -------------------------------------------------------------------------------- 1 | 2 | Changelog • progeny 12 | Skip to contents 13 | 14 | 15 |
62 |
63 |
67 | 68 |
69 |

Progeny v1.11.3 (Release date: 2020-10-14)

70 |
  • Model matrices are not accessed in the local and not in the global enviroment
  • 71 |
72 |
73 |

Progeny v1.11.2 (Release date: 2020-09-01)

74 |
  • Fixed issue with rownames when using Progeny with Permutations function
  • 75 |
76 |
77 |

Progeny v1.11.1 (Release date: 2020-06-09)

78 |
  • Website: Google Analytics
  • 79 |
80 |
81 |

Progeny v1.9.7 (Release date: 2020-04-27)

82 |
  • PROGENy website development
  • 83 |
84 |
85 |

Progeny v1.9.6 (Release date: 2020-04-27)

86 |

Major update with the following main points:

87 |
  • Added the mouse model matrix containing 14 pathways

  • 88 |
  • The human model matrix extended to 14 pathways

  • 89 |
  • Added the following functions: progenyPerm, progenyScatter, progenySavePlots, getModel

  • 90 |
  • Added tests and test data

  • 91 |
  • Added the vignette for usage the PROGENy on single-cell RNA-seq data

  • 92 |
  • Added functionality to work with Seurat objects

  • 93 |
94 |
96 | 97 | 98 |
107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /docs/pkgdown.js: -------------------------------------------------------------------------------- 1 | /* http://gregfranko.com/blog/jquery-best-practices/ */ 2 | (function($) { 3 | $(function() { 4 | 5 | $('nav.navbar').headroom(); 6 | 7 | Toc.init({ 8 | $nav: $("#toc"), 9 | $scope: $("main h2, main h3, main h4, main h5, main h6") 10 | }); 11 | 12 | if ($('#toc').length) { 13 | $('body').scrollspy({ 14 | target: '#toc', 15 | offset: $("nav.navbar").outerHeight() + 1 16 | }); 17 | } 18 | 19 | // Activate popovers 20 | $('[data-bs-toggle="popover"]').popover({ 21 | container: 'body', 22 | html: true, 23 | trigger: 'focus', 24 | placement: "top", 25 | sanitize: false, 26 | }); 27 | 28 | $('[data-bs-toggle="tooltip"]').tooltip(); 29 | 30 | /* Clipboard --------------------------*/ 31 | 32 | function changeTooltipMessage(element, msg) { 33 | var tooltipOriginalTitle=element.getAttribute('data-original-title'); 34 | element.setAttribute('data-original-title', msg); 35 | $(element).tooltip('show'); 36 | element.setAttribute('data-original-title', tooltipOriginalTitle); 37 | } 38 | 39 | if(ClipboardJS.isSupported()) { 40 | $(document).ready(function() { 41 | var copyButton = ""; 42 | 43 | $("div.sourceCode").addClass("hasCopyButton"); 44 | 45 | // Insert copy buttons: 46 | $(copyButton).prependTo(".hasCopyButton"); 47 | 48 | // Initialize tooltips: 49 | $('.btn-copy-ex').tooltip({container: 'body'}); 50 | 51 | // Initialize clipboard: 52 | var clipboard = new ClipboardJS('[data-clipboard-copy]', { 53 | text: function(trigger) { 54 | return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); 55 | } 56 | }); 57 | 58 | clipboard.on('success', function(e) { 59 | changeTooltipMessage(e.trigger, 'Copied!'); 60 | e.clearSelection(); 61 | }); 62 | 63 | clipboard.on('error', function() { 64 | changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); 65 | }); 66 | 67 | }); 68 | } 69 | 70 | /* Search marking --------------------------*/ 71 | var url = new URL(window.location.href); 72 | var toMark = url.searchParams.get("q"); 73 | var mark = new Mark("main#main"); 74 | if (toMark) { 75 | mark.mark(toMark, { 76 | accuracy: { 77 | value: "complementary", 78 | limiters: [",", ".", ":", "/"], 79 | } 80 | }); 81 | } 82 | 83 | /* Search --------------------------*/ 84 | /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ 85 | // Initialise search index on focus 86 | var fuse; 87 | $("#search-input").focus(async function(e) { 88 | if (fuse) { 89 | return; 90 | } 91 | 92 | $(e.target).addClass("loading"); 93 | var response = await fetch($("#search-input").data("search-index")); 94 | var data = await response.json(); 95 | 96 | var options = { 97 | keys: ["what", "text", "code"], 98 | ignoreLocation: true, 99 | threshold: 0.1, 100 | includeMatches: true, 101 | includeScore: true, 102 | }; 103 | fuse = new Fuse(data, options); 104 | 105 | $(e.target).removeClass("loading"); 106 | }); 107 | 108 | // Use algolia autocomplete 109 | var options = { 110 | autoselect: true, 111 | debug: true, 112 | hint: false, 113 | minLength: 2, 114 | }; 115 | var q; 116 | async function searchFuse(query, callback) { 117 | await fuse; 118 | 119 | var items; 120 | if (!fuse) { 121 | items = []; 122 | } else { 123 | q = query; 124 | var results = fuse.search(query, { limit: 20 }); 125 | items = results 126 | .filter((x) => x.score <= 0.75) 127 | .map((x) => x.item); 128 | if (items.length === 0) { 129 | items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}]; 130 | } 131 | } 132 | callback(items); 133 | } 134 | $("#search-input").autocomplete(options, [ 135 | { 136 | name: "content", 137 | source: searchFuse, 138 | templates: { 139 | suggestion: (s) => { 140 | if (s.title == s.what) { 141 | return `${s.dir} >
${s.title}
`; 142 | } else if (s.previous_headings == "") { 143 | return `${s.dir} >
${s.title}
> ${s.what}`; 144 | } else { 145 | return `${s.dir} >
${s.title}
> ${s.previous_headings} > ${s.what}`; 146 | } 147 | }, 148 | }, 149 | }, 150 | ]).on('autocomplete:selected', function(event, s) { 151 | window.location.href = s.path + "?q=" + q + "#" + s.id; 152 | }); 153 | }); 154 | })(window.jQuery || window.$) 155 | 156 | 157 | -------------------------------------------------------------------------------- /docs/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: 2.19.2 2 | pkgdown: 2.0.6 3 | pkgdown_sha: ~ 4 | articles: 5 | progeny: progeny.html 6 | last_built: 2022-11-27T16:26Z 7 | urls: 8 | reference: https://saezlab.github.io/progeny/reference 9 | article: https://saezlab.github.io/progeny/articles 10 | 11 | -------------------------------------------------------------------------------- /docs/reference/Rplot001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/reference/Rplot001.png -------------------------------------------------------------------------------- /docs/reference/figures/tool_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/docs/reference/figures/tool_logo.png -------------------------------------------------------------------------------- /docs/reference/getModel.html: -------------------------------------------------------------------------------- 1 | 2 | Returns the Progeny Model — getModel • progeny 14 | Skip to contents 15 | 16 | 17 |
64 |
65 |
70 | 71 |
72 |

This function is designed for getting a model matrix with top significant 73 | genes for each pathway

74 |
75 | 76 |
77 |

Usage

78 |
getModel(organism = "Human", top = 100, decoupleR = F)
79 |
80 | 81 |
82 |

Arguments

83 |
organism
84 |

"Human" or "Mouse" taken from the main function's argument. 85 | Default to "Human"

86 | 87 | 88 |
top
89 |

Desired top number of genes for each pathway according to their 90 | significance(p.value). Default to 100

91 | 92 | 93 |
decoupleR
94 |

if TRUE, the model matrix is goign to be generated with a format 95 | makes it directlz compatible with the decoupleR package

96 | 97 |
98 |
99 |

Value

100 | 101 | 102 |

This function returns model matrix according to the top n significant

103 |
104 | 105 |
106 |

Examples

107 |
#getting a model matrix according to the desired top n significant 
108 | model <- getModel("Human", top=100)
109 | 
110 |
111 |
113 | 114 | 115 |
124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /docs/reference/index.html: -------------------------------------------------------------------------------- 1 | 2 | Function reference • progeny 12 | Skip to contents 13 | 14 | 15 |
62 |
63 |
66 | 67 |
68 |

All functions

69 | 70 | 71 | 72 | 73 |
74 | 75 | 76 | 77 | 78 |
79 | 80 | getModel() 81 |
82 |
Returns the Progeny Model
83 |
84 | 85 | model_human_full 86 |
87 |
The full human linear model underlying PROGENy
88 |
89 | 90 | model_mouse_full 91 |
92 |
The full mouse linear model underlying PROGENy
93 |
94 | 95 | progeny() 96 |
97 |
Calculate PROGENy pathway scores from gene expression
98 |
99 | 100 | progenyPerm() 101 |
102 |
Compute progeny pathway scores and assesses significance based on permutations
103 |
104 | 105 | progenyScatter() 106 |
107 |
Calculate Progeny Scores with Permutations
108 |
109 | 110 | saveProgenyPlots() 111 |
112 |
Function to save Progeny plots
113 |
114 | 115 | vignette_data 116 |
117 |
The RNA data used in the progeny vignette
118 |
119 |
120 | 121 | 122 |
131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | -------------------------------------------------------------------------------- /docs/reference/progenyPerm.html: -------------------------------------------------------------------------------- 1 | 2 | Compute progeny pathway scores and assesses significance based on permutations — progenyPerm • progeny 12 | Skip to contents 13 | 14 | 15 |
62 |
63 |
68 | 69 |
70 |

Compute progeny pathway scores and assesses significance based on permutations

71 |
72 | 73 |
74 |

Usage

75 |
progenyPerm(
 76 |   df,
 77 |   weight_matrix,
 78 |   k = 10000,
 79 |   z_scores = TRUE,
 80 |   get_nulldist = FALSE
 81 | )
82 |
83 | 84 |
85 |

Arguments

86 |
df
87 |

A data.frame of n*m+1 dimension, where n is the number of omic 88 | features to be considered and m is the number of samples/contrasts. 89 | The first column should be the identifiers of the omic features. 90 | These identifiers must be coherent with the identifiers of the weight matrix.

91 | 92 | 93 |
weight_matrix
94 |

A progeny coefficient matrix. the first column should be 95 | the identifiers of the omic features and should be coherent with 96 | the identifiers provided in df.

97 | 98 | 99 |
k
100 |

The number of permutations to be performed to generate 101 | the null-distribution used to estimate the significance of progeny scores. 102 | The default value is 10000.

103 | 104 | 105 |
z_scores
106 |

if true, the z-scores will be returned for 107 | the pathway activity estimations. Else, the function returns 108 | a normalized z-score value between -1 and 1.

109 | 110 | 111 |
get_nulldist
112 |

if true, the null score distribution used for 113 | normalization will be returned along with the actual normalized score data 114 | frame.

115 | 116 |
117 |
118 |

Value

119 | 120 | 121 |

This function returns a list of two elements. The first element is 122 | a data frame of p*m+1 dimensions, where p is the number of progeny pathways, 123 | and m is the number of samples/contrasts. Each cell represents the 124 | significance of a progeny pathway score for one sample/contrast. The 125 | significance ranges between -1 and 1. The significance is equal to x*2-1, x 126 | being the quantile of the progeny pathway score with respect to the null 127 | distribution. Thus, this significance can be interpreted as the equivalent of 128 | 1-p.value two-sided test over an empirical distribution) with the sign 129 | indicating the direction of the regulation. The second element is the null 130 | distribution list (a null distribution is generated for each sample/contrast).

131 |
132 | 133 |
134 |

Examples

135 |
# use example gene expression matrix
136 | gene_expression <- as.matrix(read.csv(system.file("extdata", 
137 | "human_input.csv", package = "progeny"), row.names = 1))
138 | 
139 | # calculate pathway activities
140 | progeny(gene_expression, scale=TRUE, organism="Human", top=100, perm=10000)
141 | #>            Androgen   EGFR Estrogen Hypoxia JAK.STAT   MAPK    NFkB    p53
142 | #> SRR1039508  -0.8380 0.1996  -0.3470  0.9996   0.7718 0.4066 -0.5552 0.9240
143 | #> SRR1039509  -0.4918 0.0608  -0.6360  0.9998   0.4858 0.3284 -0.4426 0.8778
144 | #> SRR1039512  -0.7836 0.2158  -0.4054  0.9996   0.6992 0.4132 -0.4322 0.9230
145 | #> SRR1039513  -0.4372 0.0790  -0.6722  1.0000   0.6724 0.4352 -0.4490 0.7916
146 | #> SRR1039516  -0.7578 0.2614  -0.2944  0.9992   0.6132 0.4200 -0.3042 0.9276
147 | #> SRR1039517  -0.5104 0.5540  -0.6566  1.0000   0.4672 0.7292 -0.3776 0.8090
148 | #> SRR1039520  -0.8056 0.3332  -0.3886  0.9994   0.6094 0.5606 -0.6314 0.9022
149 | #> SRR1039521  -0.3562 0.1490  -0.6650  0.9994   0.4996 0.5776 -0.6296 0.7778
150 | #>               PI3K   TGFb    TNFa   Trail    VEGF     WNT
151 | #> SRR1039508  0.1660 0.5416 -0.5988 -0.3570  0.0432 -0.1070
152 | #> SRR1039509  0.0984 0.7620 -0.4628 -0.3012  0.0508 -0.1712
153 | #> SRR1039512  0.1418 0.6930 -0.4706 -0.3462  0.0842 -0.1586
154 | #> SRR1039513 -0.0706 0.8240 -0.4828 -0.2668  0.0958 -0.3054
155 | #> SRR1039516  0.1706 0.6926 -0.3564 -0.3356  0.2734 -0.3268
156 | #> SRR1039517  0.3604 0.8662 -0.4248 -0.3586  0.2530 -0.4108
157 | #> SRR1039520  0.1788 0.6872 -0.6702 -0.2790 -0.0824 -0.1208
158 | #> SRR1039521  0.0350 0.8092 -0.6476 -0.2630 -0.0724 -0.3158
159 | 
160 |
161 |
163 | 164 | 165 |
174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /docs/reference/vignette_data.html: -------------------------------------------------------------------------------- 1 | 2 | The RNA data used in the progeny vignette — vignette_data • progeny 14 | Skip to contents 15 | 16 | 17 |
64 |
65 |
70 | 71 |
72 |

List with three elements: the gene counts, the experimental design and 73 | the result of limma differential analysis

74 |
75 | 76 | 77 |
78 |

Format

79 |

List with three elements: the gene counts, the experimental design and 80 | the result of limma differential analysis

counts
81 |

gene counts

82 | 83 |
design
84 |

experiemental design

85 | 86 |
limma_ttop
87 |

differential analysis result using limma

88 | 89 | 90 |
91 | 95 | 96 |
97 |

Examples

98 |
data("vignette_data")
 99 | 
100 |
101 |
103 | 104 | 105 |
114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /docs/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://saezlab.github.io/progeny/404.html 5 | 6 | 7 | https://saezlab.github.io/progeny/LICENSE-text.html 8 | 9 | 10 | https://saezlab.github.io/progeny/articles/ProgenySingleCell.html 11 | 12 | 13 | https://saezlab.github.io/progeny/articles/index.html 14 | 15 | 16 | https://saezlab.github.io/progeny/articles/progeny.html 17 | 18 | 19 | https://saezlab.github.io/progeny/articles/progenyBulk.html 20 | 21 | 22 | https://saezlab.github.io/progeny/authors.html 23 | 24 | 25 | https://saezlab.github.io/progeny/index.html 26 | 27 | 28 | https://saezlab.github.io/progeny/news/index.html 29 | 30 | 31 | https://saezlab.github.io/progeny/reference/getModel.html 32 | 33 | 34 | https://saezlab.github.io/progeny/reference/index.html 35 | 36 | 37 | https://saezlab.github.io/progeny/reference/model_human_full.html 38 | 39 | 40 | https://saezlab.github.io/progeny/reference/model_mouse_full.html 41 | 42 | 43 | https://saezlab.github.io/progeny/reference/progeny.html 44 | 45 | 46 | https://saezlab.github.io/progeny/reference/progenyPerm.html 47 | 48 | 49 | https://saezlab.github.io/progeny/reference/progenyScatter.html 50 | 51 | 52 | https://saezlab.github.io/progeny/reference/saveProgenyPlots.html 53 | 54 | 55 | https://saezlab.github.io/progeny/reference/vignette_data.html 56 | 57 | 58 | -------------------------------------------------------------------------------- /inst/CITATION: -------------------------------------------------------------------------------- 1 | citEntry(entry="article", 2 | author = c(person("Michael", "Schubert"), 3 | person("Bertram", "Klinger"), 4 | person("Martina", "Klünemann"), 5 | person("Anja", "Sieber"), 6 | person("Florian", "Uhlitz"), 7 | person("Sascha", "Sauer"), 8 | person(c("Mathew", "J"), "Garnett"), 9 | person("Nils", "Blüthgen"), 10 | person("Julio", "Saez-Rodriguez")), 11 | title = "Perturbation-response genes reveal signaling footprints in cancer gene expression", 12 | journal = "Nature communications", 13 | year = 2018, 14 | volume = 9, 15 | number = 20, 16 | 17 | textVersion = "M Schubert, B Klinger, M Klünemann, A Sieber, F Uhlitz, S Sauer, MJ Garnett, N Blüthgen, and J Saez-Rodriguez. 2018. “Perturbation-Response Genes Reveal Signaling Footprints in Cancer Gene Expression.” Nature Communications 9 (1)" 18 | ) 19 | -------------------------------------------------------------------------------- /inst/extdata/human_def_expected.csv: -------------------------------------------------------------------------------- 1 | "","Androgen","EGFR","Estrogen","Hypoxia","JAK-STAT","MAPK","NFkB","p53","PI3K","TGFb","TNFa","Trail","VEGF","WNT" 2 | "SRR1039508",-1.21118698407309,-0.356514098441603,0.949241252147211,0.497153246717079,1.7099979800067,-0.522981382729966,-0.782787339472581,1.19599080401037,0.360835427598166,-1.53250846888485,-1.23685971402327,-1.10373673393343,-0.147419226371865,1.1237369237932 3 | "SRR1039509",0.519312796955825,-1.10028684449322,-1.07504172533585,-0.0351343017350992,-1.37369840630794,-1.16944698284194,-0.183413317039622,-0.334843063421951,-0.0162998317360919,-0.112179195473259,0.0283052722531447,-0.0290976051945691,-0.0601013091076227,0.466984787516938 4 | "SRR1039512",-0.756244327279028,-0.25124733250103,0.790503638577274,-0.759259261341828,0.782428675552775,-0.510242161575591,0.6421444236316,0.828304076995112,-0.031776763690239,-0.508779270652543,0.731570689504356,-0.29953591508547,-0.125109125747264,0.78946022670871 5 | "SRR1039513",0.928178255094422,-0.440393709473928,-1.0702726146354,-0.909129595496389,0.548206020752735,-0.370629574707583,0.492449607526483,-1.36456671360718,-1.66399257915561,0.535605805257372,1.25953339886837,1.1826038257963,0.0980966992846447,-0.570031495954871 6 | "SRR1039516",-0.765379503422578,0.00475239910191869,1.17082030928919,-0.631584647159868,-0.0228268743369299,-0.611674276802535,1.00243705019278,0.967130215525293,0.493204525861388,-0.525108744294347,0.307705347826529,-0.889026745793592,1.57717561230069,-1.05158488129008 7 | "SRR1039517",0.796421932715624,2.30162367104798,-0.678495481087118,2.17537321318702,-0.710191249057805,1.94149590793296,1.28481674780612,-0.497739405678384,1.60326472093168,1.7291908565902,0.865917636902839,-1.02238266419755,1.15643267275409,-1.30715226341503 8 | "SRR1039520",-0.871417503859068,0.139240450317891,0.77451817778724,-0.452028515906629,-0.0576032379333164,0.472575319581276,-1.34617016683564,0.442753011120074,0.337401474721545,-0.402067364347893,-1.52120471252601,0.833940793459851,-1.28013157140018,1.17039761169705 9 | "SRR1039521",1.36031533386791,-0.297174535557989,-0.861273556742551,0.114609861735742,-0.876312908676203,0.770903151143387,-1.10947700580915,-1.23702892494333,-1.08263697453085,0.815846381805332,-0.434967918805945,1.32723504494845,-1.2189437517125,-0.621810909055954 10 | -------------------------------------------------------------------------------- /inst/extdata/human_perm_expected.csv: -------------------------------------------------------------------------------- 1 | "","Androgen","EGFR","Estrogen","Hypoxia","JAK.STAT","MAPK","NFkB","p53","PI3K","TGFb","TNFa","Trail","VEGF","WNT" 2 | "SRR1039508",-1.24808344598128,-0.295822382748448,0.869668066126928,0.98815304806096,1.3381684126895,-0.348114330743996,-0.816789918483169,1.27440594272093,0.327255070036872,-1.65587825636028,-1.11473731290233,-1.19616580035614,-0.211619073759714,1.14911593380223 3 | "SRR1039509",0.805810938485268,-1.01886081988871,-0.834193449735798,0.632474036947362,-0.972795880925267,-1.08068845511411,0.0558331164406852,0.0499930523433128,-0.463263661681119,-0.0329793745246265,0.341539869564068,0.985591607696703,-0.180160999460263,0.691100166119218 4 | "SRR1039512",-0.720406304525161,-0.402612721160757,0.634936223978795,-0.343465309766739,0.937817751632202,-0.756646087586224,0.774203731819613,0.584825281212151,-0.246558013134671,-0.68423163444856,0.919352555517884,-0.632289397937267,0.0253967863756778,0.691808891125063 5 | "SRR1039513",0.871882660397203,-0.381951495842146,-1.1110706436189,-0.976851213963722,0.521092052616904,-0.317279009982538,0.531756111435138,-0.880596733710775,-1.47890617019856,0.641305663947186,1.09100890746233,1.27815615051231,0.128295991617903,-0.508113546063443 6 | "SRR1039516",-0.825246669877692,-0.0323542955965098,1.22989154603966,-1.07073194610266,0.290502273065317,-0.773846676012308,1.13384184245546,1.04711514193796,0.475859766343534,-0.514215158998789,0.660940842461238,-1.11142412483123,1.58622269732622,-0.70151401147287 7 | "SRR1039517",0.765533230275912,2.29710858827194,-0.783046307843774,1.39972810697425,-1.38261291598764,1.82527184695599,0.905817399250987,-1.05228917717182,1.8960550967159,1.49551988582308,0.41847191096725,-0.490230230193282,1.11335204133859,-1.71155925308539 8 | "SRR1039520",-0.870041848075551,0.288040893183438,0.941460852869285,-1.10446482080105,0.285023464770211,0.561100712391847,-1.31721958155573,0.362466530798284,0.233958664838621,-0.170162913080628,-1.55197364975659,0.131221634643063,-1.47624228902966,0.890229444435814 9 | "SRR1039521",1.2205514393013,-0.4535477662188,-0.947646287816197,0.475158098651597,-1.01719515786123,0.890202000091339,-1.26744270136299,-1.38592003813004,-0.744400752920575,0.920641787642617,-0.764603123313847,1.03514016046584,-0.985245154408754,-0.501067624860624 10 | -------------------------------------------------------------------------------- /inst/extdata/mouse_def_expected.csv: -------------------------------------------------------------------------------- 1 | "","Androgen","EGFR","Estrogen","Hypoxia","JAK-STAT","MAPK","NFkB","p53","PI3K","TGFb","TNFa","Trail","VEGF","WNT" 2 | "s1",0.170914018149472,-0.276074298255066,1.87973656564092,0.514511483763223,-1.03095771715213,-0.472927359786748,0.391925042939005,-1.35818419074558,-0.281810355298239,-0.470160263732235,0.477756606568957,0.350493026344365,-0.403951962359968,1.60781918990032 3 | "s2",-0.496207610652794,0.558341212964585,0.215546122066556,-0.797079417529055,-0.222104847535035,0.707831903015348,0.171308517678588,0.829107374101255,0.627465649824309,0.20489335572263,-0.487624838719225,0.349589961703895,0.695822915777476,-0.515572384740168 4 | "s3",-0.547874222384872,0.580259204211914,-1.44380326919223,0.757142368172327,0.593376376322974,0.226869811173522,1.08073267288612,1.20459821730486,1.67614798673553,-2.08553505423372,0.333368283122052,0.769719089763778,-0.262316594275514,0.0622260128686502 5 | "s4",0.249202583074227,1.2658972703349,-0.776450202499493,0.919533075262946,-0.94678011449547,1.37181097896678,-1.22449106233399,-0.104522144306827,0.0900675888131213,0.606956367687325,-0.328795845592506,-1.36294063529815,-0.973744088748485,-0.329419585855739 6 | "wt1",2.2467736580788,0.671494007903785,0.442092918110936,1.0308189271612,-1.22177978541856,0.621857867101921,-1.53120581919176,-0.111612293255537,-1.44917947770973,1.35494620111881,-1.30072126321473,0.045835200383777,1.87506434810395,-1.34664306014757 7 | "wt2",-0.0289857654430306,-0.629197057043842,-0.0676112528151668,-0.829711169384674,0.411374994960904,-0.0313422504738937,-0.235770351173521,-1.39238500025141,-1.20742069268576,0.224971782999546,-0.799761599925676,0.72332814900234,0.566238801161098,-0.854401831179761 8 | "wt3",-0.649719394055777,-0.228028585461585,0.376015088761289,0.112824278366348,1.37680915143495,-0.499254506724955,0.025048607403492,1.02305043616461,0.234059005078726,-0.162154918632882,0.11318639118235,0.865032624362234,-1.18358472665569,1.21077048698735 9 | "wt4",-0.944103266766012,-1.94269175465468,-0.625525970072886,-1.70803954581235,1.04006194188237,-1.92484644327193,1.32245239179207,-0.0900523990112328,0.310670295242074,0.326082529070478,1.9925922665788,-1.74105741626224,-0.313528693002866,0.165221172166907 10 | -------------------------------------------------------------------------------- /inst/extdata/mouse_input.csv: -------------------------------------------------------------------------------- 1 | "","s1","s2","s3","s4","wt1","wt2","wt3","wt4" 2 | "6030468B19Rik",5.89610679115891,6.15577055029055,5.89610679115891,5.89610679115891,5.89610679115891,6.08172843590002,5.89610679115891,5.89610679115891 3 | "AA986860",7.7563233039373,7.5485209857921,7.36720281385103,7.86822548651308,7.93482785618048,7.69058106999499,7.28778003205257,7.66904030919269 4 | "Abca12",5.89610679115891,6.21391509916433,5.89610679115891,6.07467894218709,6.26907179084342,5.89610679115891,5.89610679115891,5.89610679115891 5 | "Ankrd37",6.81738367952463,6.88373960996995,7.62392968620418,7.05034538266367,6.7211187400778,6.80952253378531,6.95994190274604,6.72824591583731 6 | "Ankzf1",9.98773779323234,9.80841169731452,10.008175732644,9.80922454620446,9.95132302705727,9.9238794181604,9.95883625556897,10.3060425969118 7 | "Atp6v1g2",8.2094571915975,8.33019999868925,8.01047975373454,8.06367030484894,8.4388879675886,8.16186856789453,7.83894148548593,7.81759306343871 8 | "Bmp7",7.03496313966581,6.68756279932853,6.83074800793064,6.85695414831814,6.67981819428775,6.50758163728137,6.70457981512505,6.5500619239233 9 | "Bmpr2",14.090547415808,14.2866601617457,13.7426613165203,14.5397991696004,14.6705942490672,14.2181590276986,13.8699157460681,13.7917782005704 10 | "Bnip3l",12.5180951804575,12.59588140079,12.3395149759487,12.6760796103261,12.7653954013978,12.6432352049955,12.6850862683235,12.4814568019027 11 | "Ccl20",6.29803078855098,6.34465610587994,6.3346768117053,5.89610679115891,5.89610679115891,6.08172843590002,5.89610679115891,5.89610679115891 12 | "Col4a1",15.1387959659449,15.2885486489506,15.0545066853834,15.6018815879739,15.5132594599508,15.2178090243511,14.7128546961861,14.7046542380281 13 | "Comp",6.81738367952463,6.85144119148489,6.70896452025168,6.79273105011188,7.06155596827352,7.04063999748949,7.45703591202097,7.50978589336761 14 | "Cript",10.6925756408746,10.7389861142334,10.751146254673,10.6672259671194,10.8369581832449,10.8069080328158,10.8945526308214,10.5611514920048 15 | "Csf2",6.37106134488973,6.15577055029055,6.46086791217885,6.29439516944984,5.89610679115891,6.15843500541619,6.380443117141,6.38094539732932 16 | "Csf3r",10.0864108669178,10.3008916990151,11.3306414827634,9.94965853312909,9.98316053194339,10.7876783426006,11.1382680423865,10.7879561570957 17 | "Cxcl12",12.5086810887187,12.6339225839586,11.9174370587119,12.1826100326634,13.105695453021,12.1218977175661,12.5344973651507,11.5232873140425 18 | "Dusp4",10.6038055816101,11.1653378264741,10.2731498597486,11.3633803553612,11.081247954956,11.0326016216995,10.1650492795034,10.0004185968452 19 | "Dusp5",10.0347172109775,9.90948396901303,10.3752845984317,10.0750945554567,10.0044692525109,9.59245368750143,9.99773182677719,9.38674784931582 20 | "Dusp6",12.9014996859827,13.1030327151243,13.249300658483,13.3307972624796,13.1347165357611,13.0330239436423,13.1680965687097,12.7089286313446 21 | "Efna1",12.5283574811462,12.1498353893671,12.1188908645183,12.4137326933667,12.469812467222,12.1145280744923,11.9561326577742,12.2043667349449 22 | "Eno2",6.56482869845283,6.21391509916433,6.87778423255409,6.53513221001713,6.51164362039391,6.08172843590002,6.6052233614111,6.09481697102669 23 | "Epha2",10.7262876343069,10.8857435930604,10.6926499593265,11.0578874098507,10.9078644647534,10.498285171385,10.3276387084682,10.3252986930677 24 | "Etv5",9.86451766907505,10.2740350154064,10.5404642400675,10.0578333207151,10.3499131312189,10.4913641897343,10.640377511711,10.6205129321699 25 | "Fgf20",5.89610679115891,5.89610679115891,6.14996379420766,5.89610679115891,5.89610679115891,6.15843500541619,5.89610679115891,5.89610679115891 26 | "Fgf3",5.89610679115891,5.89610679115891,5.89610679115891,6.07467894218709,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891 27 | "Frmpd1",5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,6.45508542646812 28 | "Gls2",7.70137499071969,7.65929711949089,7.89631602388359,7.53048396904716,6.94696690078239,7.29179257508883,7.43589157171675,7.40486656627875 29 | "Gnl3l",10.4508268430526,10.6513556151449,10.5538537911033,10.7546056736369,10.4525638310139,10.4953231148426,10.2194913763992,10.21122060794 30 | "Gnptg",10.5855497901626,10.5496721024039,10.6189932858764,10.525768489334,10.4962681258698,10.5918360135893,10.7014107721156,10.4833289577806 31 | "Greb1",6.07631732975033,5.89610679115891,5.89610679115891,6.07467894218709,5.89610679115891,6.15843500541619,5.89610679115891,5.89610679115891 32 | "Has3",6.7302512701309,6.66694792249285,6.74575655207287,6.77584404381679,7.02021375903045,6.50758163728137,6.51946249514938,6.29259245738118 33 | "Herc6",10.0372825693358,10.3413362505775,10.2425829109896,10.2316788346558,10.1769721293128,10.1915936420938,10.3861417506151,10.1361170223188 34 | "Hey2",6.48998424143636,6.55331854298694,6.29671962740455,6.20500989797615,6.45363765800286,6.08172843590002,6.33858625096439,6.70540460727028 35 | "Icam1",13.1664889627638,12.9353711746413,12.9720069711888,12.9664356101031,12.8229113516444,12.9188455136195,12.9262428952482,13.1837650123155 36 | "Ifnar2",12.5464232158489,12.5838842530736,12.5012263188814,12.5122372743581,12.5087298749987,12.7620044406432,13.1130753385073,13.182360687413 37 | "Il6",7.24342209975075,7.35976235424011,7.6961141495697,7.09893879170441,7.08816178162899,7.48614768565502,7.52812532811833,7.11708736796011 38 | "Inpp5k",12.5461987849965,12.3365322035179,11.8740322872878,12.4844442384077,12.5870732419943,12.4581865150501,12.4243967674415,12.4673988471071 39 | "Insig2",11.3577264265658,11.2312902881772,11.0451075429937,11.2601689381412,11.2323888277191,11.1501524200333,11.0942049622291,11.0477515628491 40 | "Jchain",9.177730394725,8.5945242865389,9.1127074774312,9.27923586070497,8.2307963818484,8.42946538958488,9.22028469218188,8.82706955087439 41 | "Kcnk10",6.2558296647289,6.15577055029055,6.25465468093995,6.07467894218709,6.35226432199736,5.89610679115891,5.89610679115891,5.89610679115891 42 | "Kdm3a",11.7016511685203,11.7455351433025,11.5453853199053,11.860858950209,11.9036232339243,11.6924865548233,11.5624879694246,11.474188107189 43 | "Klhl14",6.89605794605188,6.47365236283663,6.68985978483499,6.80926744954706,6.08297835438511,6.38520867613217,6.7710672967036,6.48853739743851 44 | "Krt23",7.04777161303728,6.74612846644202,6.87778423255409,6.916608231412,6.97697038085116,6.80952253378531,7.00948239698932,6.72824591583731 45 | "Lmcd1",9.88461740557279,9.75587559001659,8.9664559098088,9.80182760616779,9.87930039850465,9.2849668245806,9.25570178537449,9.77204339467133 46 | "Ltb",9.86740640165795,8.82866151926221,9.78356695545148,9.43901712028129,8.24571778488219,8.66010134526679,9.39645692452946,9.21722556054548 47 | "Lztfl1",9.93090765706501,9.96518991386199,9.77441782914062,9.79885808292269,9.93809184606528,9.94143250756743,9.54221300598962,9.74362494257474 48 | "Mboat2",6.43396956770328,6.38027388117573,6.14996379420766,6.14848526038729,6.51164362039391,6.31003454269232,6.57792011366423,5.89610679115891 49 | "Mccc1",10.050040946122,10.1465459818618,10.0791473519218,10.1595714835993,10.1606259781387,10.1569899464002,9.78618950494663,10.1959529909078 50 | "Mdm2",11.5036143083481,11.5903163790701,11.684818563971,11.5937122981906,11.3746200023824,11.3352783222241,11.5538406195925,11.4251402414189 51 | "Msx1",6.51600071587629,6.41336066127678,6.3346768117053,6.42912849664854,6.61296587092696,6.58456746289527,6.90753054043775,6.79292191600189 52 | "Nfkb1",12.9949045991935,13.0452705663831,13.0470368750024,13.1313665198841,13.0800849849395,13.05277032683,12.9138405265348,12.9804159066767 53 | "Nfkbia",13.9590834255691,13.9493372074138,13.9165013302167,13.7306694129717,14.4224253155162,14.3535189874027,14.2239097651706,14.2821175952066 54 | "Nox4",6.2558296647289,6.44437535977537,6.20681726859709,6.36677586322957,6.16019899625585,6.58456746289527,7.02542523171908,6.68182925695513 55 | "Npy",6.07631732975033,6.07984053694236,5.89610679115891,5.89610679115891,5.89610679115891,6.26658738970275,6.23938448354124,5.89610679115891 56 | "Npy1r",6.07631732975033,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,6.15843500541619,6.33858625096439,5.89610679115891 57 | "Oas1a",10.8508465163989,11.0363094945667,11.5529531719392,10.954660934729,10.9101188510379,11.3642162306604,11.5710837569639,11.7025370168078 58 | "Oas1b",8.77340370691034,8.87774958179624,8.98258751961966,8.90094315934084,8.615542224277,8.60877608848858,9.02850679143811,9.02456993524358 59 | "Oas1c",8.69628958004994,8.52630139087859,8.54681670542623,8.5776744155428,8.50579348622455,8.70958778529979,8.88555634369367,8.98918999122742 60 | "Oas1d",5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,6.08172843590002,5.89610679115891,5.89610679115891 61 | "Oas1g",9.21015211715505,9.51054545344916,9.84165056147235,8.99830177728119,9.12936131948013,9.86069128535961,10.1377588186637,10.2812749837928 62 | "Oas3",10.2763558049439,10.6400168137669,11.2441751206437,10.2050612830971,10.0638548715737,11.1657458750916,11.6694233743898,11.5227323517766 63 | "Pdk1",11.4055412338433,11.1930367089169,11.2981593004689,11.3916309386829,11.5040669890738,11.3808767121686,11.2898494429962,11.2206349092727 64 | "Pgr",6.07631732975033,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,6.29259245738118 65 | "Phlda1",7.92572530198056,8.21788416315512,8.40020095140702,8.10950476207233,8.14292575220666,7.52132499863829,8.27512854484277,7.85589656077912 66 | "Phlda2",5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,6.08172843590002,5.89610679115891,5.89610679115891 67 | "Pidd1",7.86560254943115,7.95986262724392,8.01047975373454,7.88023382524857,7.94108333885205,8.11424007226057,8.12500632320184,7.77808321469735 68 | "Pmel",6.46270472136045,6.38027388117573,6.48806137898629,6.36677586322957,6.42211067877788,6.67469315187778,6.79201315689304,6.52010503393345 69 | "Rapgefl1",6.7302512701309,6.52794758424598,6.58563830023267,6.6037366352087,6.21932774115948,6.87737503455885,6.51946249514938,6.85273172047054 70 | "Rasl11b",8.15149622655893,8.28454003280747,8.19842691700343,8.45573321379926,9.56374717781129,8.91574826273876,8.47285938483361,8.51684668820054 71 | "Relb",11.1896509017631,11.0704780414145,11.0545503779521,10.9278246519242,11.1679316401941,11.2312352154879,11.155522721102,11.4770556549896 72 | "Ret",6.2558296647289,6.15577055029055,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,6.17690417974734 73 | "Rnf43",7.28452508568442,6.89944202183736,6.60781081079663,6.94497143677624,6.21932774115948,6.47951560409418,6.33858625096439,6.60595104010473 74 | "Sesn1",12.1860352667653,12.1390460093935,12.062944095411,12.2297535354053,12.4947902406224,12.3844435529945,12.4673229317464,12.5918915771988 75 | "Skil",11.9235317000059,12.1599348306273,12.3224303368628,11.9521872501847,11.9572581520041,12.1798442055251,12.5868133649637,12.605054352145 76 | "Slco4a1",7.9374172080315,7.57314058919501,7.80984694822394,7.66565353990557,7.03419504635362,6.80952253378531,7.33550365277588,6.94386162284078 77 | "Smad7",12.1477896850123,12.1455293186481,11.7739822532809,12.2395998934039,12.2811140716784,12.1320888878296,11.698153714209,11.9790198529374 78 | "Spata18",5.89610679115891,5.89610679115891,6.14996379420766,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891,5.89610679115891 79 | "Spred2",10.9273552123249,11.1127103351038,10.8036279264675,11.1964085510873,11.3903081955239,10.8993824785551,10.649546859337,10.1361170223188 80 | "Spsb3",10.4689669819745,10.2975619505522,10.3873062570872,10.4361737895507,10.5230465335055,10.4943344050547,10.4198951029159,10.6705178545527 81 | "Tec",8.52407233125883,8.07904096149174,8.80010885794981,8.04277223979453,7.81663173338412,7.9660338614202,8.31281833378067,7.64243318401507 82 | "Tlr2",11.8735969319424,11.9058020845137,12.1200898299976,11.7825655655659,11.6943019575914,11.8524485647193,12.1261494820976,12.5633130726645 83 | "Tnfaip2",12.3146732656099,12.5440144669385,12.9414775466895,11.9631245342804,11.6679175298869,12.688172073718,13.4572698310912,13.7733580711676 84 | "Tnfaip3",11.2815432261727,11.06070462984,11.2843167957916,11.1783113313028,10.8534536280981,10.7681882747924,10.9753355096456,11.7648678842323 85 | "Tpd52l1",6.15079783654019,5.89610679115891,6.29671962740455,6.14848526038729,6.16019899625585,6.08172843590002,6.17661147452358,5.89610679115891 86 | "Tspan2",12.1451245150029,12.3806421778911,11.6541043537621,12.4759082621303,12.5600746519291,12.2251765126204,11.8404787718898,11.894906835918 87 | "Tyr",6.15079783654019,6.15577055029055,5.89610679115891,6.42912849664854,6.51164362039391,6.53434528232888,5.89610679115891,6.09481697102669 88 | "Wdr31",6.40353107099668,6.15577055029055,6.29671962740455,6.39895830608323,6.56436282932963,6.44994871067812,6.45450810088731,6.5500619239233 89 | "Zbtb16",7.12125426153899,6.74612846644202,7.11745636290791,7.35928201085415,8.87890688229149,7.11898341255799,6.68102732844237,6.65745116341682 90 | -------------------------------------------------------------------------------- /inst/extdata/mouse_perm_expected.csv: -------------------------------------------------------------------------------- 1 | "","Androgen","EGFR","Estrogen","Hypoxia","JAK.STAT","MAPK","NFkB","p53","PI3K","TGFb","TNFa","Trail","VEGF","WNT" 2 | "s1",0.0917342815664437,-0.169316890988242,-0.90553591152355,-0.135647557779299,-0.95534108999063,-0.416059684752459,0.682394006412291,-1.46870243696192,-0.590445493868866,-0.173846044056659,0.908877485646392,0.475001489790565,-0.414595513960184,1.47788294091344 3 | "s2",-0.0767133602085673,0.541818253734556,0.802420816492854,0.314460584564889,-0.184040574003149,0.683001451103072,0.504714305158662,1.02715205637725,0.162156926223096,0.643840354393592,-0.821756970883612,0.448838624512616,0.70592592097229,0.224501044971439 4 | "s3",-0.704585054141123,0.391614636650917,-1.77334437910697,1.19657258407568,0.581550230801694,0.328708440476674,0.750093512639359,0.886754805640453,1.52276061014396,-2.0327403576552,0.0778426033145382,0.619561002806634,-0.198431977115046,0.218162281327538 5 | "s4",0.0380744647686885,1.21817573152318,-0.665516692694519,1.02759655727315,-0.929183727466488,1.29080140844267,-1.29393984754118,0.110948091062416,-0.0922856129557096,0.430733056703092,0.160997837292042,-1.04957650307144,-0.904353835499589,-0.871033751020087 6 | "wt1",2.25664449895288,0.875428407533726,0.552698267561159,0.69552458040664,-1.26497188662395,0.780256768558694,-1.59773530802455,-1.19995351231811,-1.06611430780864,1.30447720121151,-1.33298813384722,-0.0141560354668049,1.81864850680643,-0.76338960851729 7 | "wt2",0.0543978157072417,-0.774509091647134,1.07800394006069,-1.01751245156889,0.25906494427229,-0.162704625307626,-0.197445078461722,0.49648183778968,-1.42962548953724,0.308666116742056,-0.77855217603081,1.2940304989334,0.460082695145863,-1.07883705246157 8 | "wt3",-0.742171791298592,-0.174331843615977,0.636861711520965,-0.444418720643084,1.44301966035222,-0.613294195607541,-0.0515280851887542,-0.730079845704579,0.778265975699791,-0.643680585847249,0.0297920668920044,0.0722467201191023,-1.39580873550466,1.37060441766169 9 | "wt4",-0.917380855346976,-1.90887920319102,0.274412247689377,-1.63657557632908,1.04990244265802,-1.89070956291349,1.2034464950059,0.877399004114811,0.715287392103608,0.162550258508864,1.75578728761666,-1.84594579762408,-0.0714670608451069,-0.577890272875161 10 | -------------------------------------------------------------------------------- /man/figures/tool_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saezlab/progeny/cad6be0514c3248b9465e48f1cfd2f6a4c3dfb6f/man/figures/tool_logo.png -------------------------------------------------------------------------------- /man/getModel.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/progenySuppFunc.r 3 | \name{getModel} 4 | \alias{getModel} 5 | \title{Returns the Progeny Model} 6 | \usage{ 7 | getModel(organism = "Human", top = 100, decoupleR = F) 8 | } 9 | \arguments{ 10 | \item{organism}{"Human" or "Mouse" taken from the main function's argument. 11 | Default to "Human"} 12 | 13 | \item{top}{Desired top number of genes for each pathway according to their 14 | significance(p.value). Default to 100} 15 | 16 | \item{decoupleR}{if TRUE, the model matrix is goign to be generated with a format 17 | makes it directlz compatible with the decoupleR package} 18 | } 19 | \value{ 20 | This function returns model matrix according to the top n significant 21 | } 22 | \description{ 23 | This function is designed for getting a model matrix with top significant 24 | genes for each pathway 25 | } 26 | \examples{ 27 | #getting a model matrix according to the desired top n significant 28 | model <- getModel("Human", top=100) 29 | } 30 | -------------------------------------------------------------------------------- /man/model_human_full.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.r 3 | \name{model_human_full} 4 | \alias{model_human_full} 5 | \title{The full human linear model underlying PROGENy} 6 | \format{ 7 | The full human model contains 22479 genes, associated pathways, 8 | weight and the p-value. 9 | \describe{ 10 | \item{gene}{gene names in HGNC symbols} 11 | \item{pathway}{names of PROGENy pathways} 12 | \item{weight}{z-scores for a given gene} 13 | \item{p.value}{significance of gene in pathway} 14 | } 15 | } 16 | \source{ 17 | \url{https://www.nature.com/articles/s41467-017-02391-6} 18 | } 19 | \description{ 20 | HGNC gene symbols in rows, pathways in columns. Pathway activity inference 21 | works by matrix multiplication of gene expression with the model. 22 | } 23 | \examples{ 24 | get("model_human_full", envir = .GlobalEnv) 25 | } 26 | \keyword{datasets} 27 | -------------------------------------------------------------------------------- /man/model_mouse_full.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.r 3 | \name{model_mouse_full} 4 | \alias{model_mouse_full} 5 | \title{The full mouse linear model underlying PROGENy} 6 | \format{ 7 | The full mouse model contains 17426 genes, associated pathways, 8 | weight and the p-value. 9 | \describe{ 10 | \item{gene}{gene names in HGNC symbols} 11 | \item{pathway}{names of PROGENy pathways} 12 | \item{weight}{z-scores for a given gene} 13 | \item{p.value}{significance of gene in a pathway} 14 | } 15 | } 16 | \source{ 17 | \url{https://www.ncbi.nlm.nih.gov/pubmed/31525460} 18 | } 19 | \description{ 20 | MGI gene symbols in rows, pathways in columns. Pathway activity inference 21 | works by matrix multiplication of gene expression with the model. 22 | } 23 | \examples{ 24 | get("model_mouse_full", envir = .GlobalEnv) 25 | } 26 | \keyword{datasets} 27 | -------------------------------------------------------------------------------- /man/progeny.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/progeny-package.r, R/progeny.r 3 | \docType{package} 4 | \name{progeny} 5 | \alias{progeny} 6 | \title{Calculate PROGENy pathway scores from gene expression} 7 | \usage{ 8 | progeny( 9 | expr, 10 | scale = TRUE, 11 | organism = "Human", 12 | top = 100, 13 | perm = 1, 14 | verbose = FALSE, 15 | z_scores = FALSE, 16 | get_nulldist = FALSE, 17 | assay_name = "RNA", 18 | return_assay = FALSE, 19 | ... 20 | ) 21 | } 22 | \arguments{ 23 | \item{expr}{A gene expression object with HGNC/MGI symbols in rows and 24 | samples in columns. In order to run PROGENy in single-cell 25 | RNAseq data, it also accepts Seurat and SingleCellExperiment 26 | object, taking the normalized counts for the computation.} 27 | 28 | \item{scale}{A logical value indicating whether to scale the scores of each 29 | pathway to have a mean of zero and a standard deviation of one. 30 | It does not apply if we use permutations.} 31 | 32 | \item{organism}{The model organism - "Human" or "Mouse"} 33 | 34 | \item{top}{The top n genes for generating the model matrix according to 35 | significance (p-value)} 36 | 37 | \item{perm}{An interger detailing the number of permutations. No 38 | permutations by default (1). When Permutations larger than 1, 39 | we compute progeny pathway scores and assesses their 40 | significance using a gene sampling-based permutation strategy, 41 | for a series of experimental samples/contrasts.} 42 | 43 | \item{verbose}{A logical value indicating whether to display a message 44 | about the number of genes used per pathway to compute 45 | progeny scores (i.e. number of genes present in the 46 | progeny model and in the expression dataset)} 47 | 48 | \item{z_scores}{Only applies if the number of permutations is greater than 1. 49 | A logical value. TRUE: the z-scores will be returned for 50 | the pathway activity estimations. FALSE: the function returns 51 | a normalized z-score value between -1 and 1.} 52 | 53 | \item{get_nulldist}{Only applies if the number of permutations is greater 54 | than 1. A logical value. TRUE: the null distributions 55 | generated to assess the signifance of the pathways scores 56 | is also returned.} 57 | 58 | \item{assay_name}{Only applies if the input is a Seurat object. It selects the 59 | name of the assay on which Progeny will be run. Default to: 60 | RNA, i.e. normalized expression values.} 61 | 62 | \item{return_assay}{Only applies if the input is a Seurat object. A logical 63 | value indicating whether to return progeny results as a new 64 | assay called Progeny in the Seurat object used as input. 65 | Default to FALSE.} 66 | 67 | \item{...}{Additional arguments to be passed to the functions.} 68 | } 69 | \value{ 70 | A matrix with samples in rows and pathways in columns. In case 71 | we run the method with permutations and the option get_nulldist 72 | to TRUE, we will get a list with two elements. The first 73 | element is the matrix with the pathway activity as before. 74 | The second elements is the null distributions that we generate 75 | to assess the signifance of the pathways scores. 76 | } 77 | \description{ 78 | This function uses the linear model of pathway-responsive genes underlying 79 | the PROGENy method. It transforms a gene expression matrix with HGNC/MGI gene 80 | symbols in rows and sample names in columns into a pathway score matrix with 81 | samples in rows and pathways in columns. 82 | } 83 | \details{ 84 | The publication of the method is available at: 85 | https://www.nature.com/articles/s41467-017-02391-6 86 | 87 | The supplied expression object has to contain HGNC/MGI symbols in rows. This 88 | will, in most cases (and how we originally used it), be either normalized 89 | gene expression of a microarray experiment or log-transformed (and 90 | possible variance-stabilized) counts from an RNA-seq experiment. 91 | 92 | The human and mouse model matrices consists of 14 pathways and large set of 93 | genes with an associated p-value (p-value per gene and pathway) that accounts 94 | for the importance of each gene on each pathway upon perturbation. 95 | Its coefficients are non-zero if the gene-pathway pair corresponds 96 | to the top N genes (100 by default) that were up-regulated upon stimulation 97 | of the pathway in a wide range of experiments. The value corresponds to the 98 | fitted z-score across experiments in our model fit. 99 | Only rows with at least one non-zero coefficient were included, as the rest 100 | is not used to infer pathway activity. 101 | } 102 | \examples{ 103 | # use example gene expression matrix here, this is just for illustration 104 | gene_expression <- as.matrix(read.csv(system.file("extdata", 105 | "human_input.csv", package = "progeny"), row.names = 1)) 106 | 107 | # calculate pathway activities 108 | pathways <- progeny(gene_expression, scale=TRUE, 109 | organism="Human", top = 100, perm = 1) 110 | } 111 | \seealso{ 112 | \code{\link{progenyPerm}} 113 | } 114 | -------------------------------------------------------------------------------- /man/progenyPerm.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/progenyPermutations.r 3 | \name{progenyPerm} 4 | \alias{progenyPerm} 5 | \title{Compute progeny pathway scores and assesses significance based on permutations} 6 | \usage{ 7 | progenyPerm( 8 | df, 9 | weight_matrix, 10 | k = 10000, 11 | z_scores = TRUE, 12 | get_nulldist = FALSE 13 | ) 14 | } 15 | \arguments{ 16 | \item{df}{A data.frame of n*m+1 dimension, where n is the number of omic 17 | features to be considered and m is the number of samples/contrasts. 18 | The first column should be the identifiers of the omic features. 19 | These identifiers must be coherent with the identifiers of the weight matrix.} 20 | 21 | \item{weight_matrix}{A progeny coefficient matrix. the first column should be 22 | the identifiers of the omic features and should be coherent with 23 | the identifiers provided in df.} 24 | 25 | \item{k}{The number of permutations to be performed to generate 26 | the null-distribution used to estimate the significance of progeny scores. 27 | The default value is 10000.} 28 | 29 | \item{z_scores}{if true, the z-scores will be returned for 30 | the pathway activity estimations. Else, the function returns 31 | a normalized z-score value between -1 and 1.} 32 | 33 | \item{get_nulldist}{if true, the null score distribution used for 34 | normalization will be returned along with the actual normalized score data 35 | frame.} 36 | } 37 | \value{ 38 | This function returns a list of two elements. The first element is 39 | a data frame of p*m+1 dimensions, where p is the number of progeny pathways, 40 | and m is the number of samples/contrasts. Each cell represents the 41 | significance of a progeny pathway score for one sample/contrast. The 42 | significance ranges between -1 and 1. The significance is equal to x*2-1, x 43 | being the quantile of the progeny pathway score with respect to the null 44 | distribution. Thus, this significance can be interpreted as the equivalent of 45 | 1-p.value two-sided test over an empirical distribution) with the sign 46 | indicating the direction of the regulation. The second element is the null 47 | distribution list (a null distribution is generated for each sample/contrast). 48 | } 49 | \description{ 50 | Compute progeny pathway scores and assesses significance based on permutations 51 | } 52 | \examples{ 53 | # use example gene expression matrix 54 | gene_expression <- as.matrix(read.csv(system.file("extdata", 55 | "human_input.csv", package = "progeny"), row.names = 1)) 56 | 57 | # calculate pathway activities 58 | progeny(gene_expression, scale=TRUE, organism="Human", top=100, perm=10000) 59 | } 60 | -------------------------------------------------------------------------------- /man/progenyScatter.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/progenySuppFunc.r 3 | \name{progenyScatter} 4 | \alias{progenyScatter} 5 | \title{Calculate Progeny Scores with Permutations} 6 | \usage{ 7 | progenyScatter( 8 | df, 9 | weight_matrix, 10 | dfID = 1, 11 | weightID = 1, 12 | statName = "gene stats", 13 | verbose = FALSE 14 | ) 15 | } 16 | \arguments{ 17 | \item{df}{an n*m data frame, where n is the number of omic features (genes). 18 | m isn't really important, as long as at least one column corresponds to a 19 | sample or contrast statistic. One of the columns should correspond to the gene 20 | symbols.} 21 | 22 | \item{weight_matrix}{A progeny coefficient matrix. the first column should be 23 | the identifiers of the omic features, and should be coherent with 24 | the identifiers provided in df.} 25 | 26 | \item{dfID}{an integer corresponding to the column number of 27 | the gene identifiers of df.} 28 | 29 | \item{weightID}{an integer corresponding to the column number of the gene 30 | identifiers of the weight matrix.} 31 | 32 | \item{statName}{The name of the stat used, to be displayed on the plot} 33 | 34 | \item{verbose}{Logical indicating whether we want to have the messages 35 | indicating the different computed weights.} 36 | } 37 | \value{ 38 | The function returns a list of list of arrangeGrob objects. 39 | The first level list elements correspond to samples/contrasts. 40 | The second level correspond to pathways. 41 | The plots can be saved in a pdf format using the saveProgenyPlots function. 42 | } 43 | \description{ 44 | This function generate a series of scatter plot with marginal distribution 45 | (in the form of an arrangeGrob object), for each progeny pathway and 46 | sample/contrast. Each scatter plot has progeny weights as x-axis and the gene 47 | level stat used to compute progeny score as the y-axis. The marginal 48 | distribution of the gene level stats is displayed on the right of the plot 49 | to give visual support of the significance of each gene contributing to 50 | the progeny pathway score. The green and red colors represent the positive 51 | and negative contribution of genes to the progeny pathway, respectively. 52 | For each gene contribution, 4 cases are possible, as the combinations of 53 | the sign of the gene level stat and the sign of the gene level weight. 54 | Positive weight will lead to a positive(green)/negative(red) gene contribution 55 | if the gene level stat is positive/negative. Negative weight will lead to 56 | a negative(red)/positive(green) gene contribution if the gene level stat 57 | is positive/negative. 58 | } 59 | \examples{ 60 | # use example gene expression matrix 61 | 62 | gene_expression <- read.csv(system.file("extdata", 63 | "human_input.csv", package = "progeny")) 64 | 65 | # getting a model matrix with 100 top significant genes and converting to df 66 | weight_matrix <- getModel("Human", top=100) 67 | weight_matrix <- data.frame(names = row.names(weight_matrix), 68 | row.names = NULL, weight_matrix) 69 | 70 | #use progenyScatter function 71 | plots <- progenyScatter(gene_expression, weight_matrix) 72 | } 73 | -------------------------------------------------------------------------------- /man/saveProgenyPlots.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/progenySuppFunc.r 3 | \name{saveProgenyPlots} 4 | \alias{saveProgenyPlots} 5 | \title{Function to save Progeny plots} 6 | \usage{ 7 | saveProgenyPlots(plots, contrast_names, dirpath) 8 | } 9 | \arguments{ 10 | \item{plots}{a list of list of arrangeGrob object (such as the one returned 11 | by the progenyScatter function.).The first level list elements correspond 12 | to samples/contrasts. The second level corresponds to pathways. 13 | The plots can be saved in a pdf format using the saveProgenyPlots function.} 14 | 15 | \item{contrast_names}{a vector of the same length as the first level of 16 | the plot list corresponding to the names of each sample/contrast} 17 | 18 | \item{dirpath}{the path to the directory where the plots should be saved} 19 | } 20 | \value{ 21 | This function produces the pdf files of plots taken from the 22 | progenyScatter function 23 | } 24 | \description{ 25 | This function is designed to save the plots (in pdf format) of a nested 26 | (2 level) list of arrangeGrob objects, such as the one returned by 27 | the progenyScatter function. 28 | } 29 | \examples{ 30 | #create plots using progneyScatter function 31 | gene_expression <- read.csv(system.file("extdata", 32 | "human_input.csv", package = "progeny")) 33 | 34 | # getting a weight_matrix 35 | weight_matrix <- getModel("Human", top=100) 36 | weight_matrix <- data.frame(names = row.names(weight_matrix), 37 | row.names = NULL, weight_matrix) 38 | plots <- progenyScatter(gene_expression, weight_matrix) 39 | 40 | #create a list with contrast names 41 | contrast_names <- names(gene_expression[2:ncol(gene_expression)]) 42 | 43 | #assign a path to store your plots 44 | dirpath <- "./progeny_plots/" 45 | 46 | # save it 47 | # saveProgenyPlots(plots, contrast_names, dirpath) 48 | } 49 | -------------------------------------------------------------------------------- /man/vignette_data.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.r 3 | \name{vignette_data} 4 | \alias{vignette_data} 5 | \title{The RNA data used in the progeny vignette} 6 | \format{ 7 | List with three elements: the gene counts, the experimental design and 8 | the result of limma differential analysis 9 | \describe{ 10 | \item{counts}{gene counts} 11 | \item{design}{experiemental design} 12 | \item{limma_ttop}{differential analysis result using limma} 13 | } 14 | } 15 | \source{ 16 | \url{https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE119931} 17 | } 18 | \description{ 19 | List with three elements: the gene counts, the experimental design and 20 | the result of limma differential analysis 21 | } 22 | \examples{ 23 | data("vignette_data") 24 | } 25 | \keyword{datasets} 26 | -------------------------------------------------------------------------------- /pkgdown/_pkgdown.yml: -------------------------------------------------------------------------------- 1 | destination: docs 2 | url: https://saezlab.github.io/progeny 3 | navbar: 4 | structure: 5 | left: [home, intro, reference, articles, tutorials, news] 6 | right: [github, twitter, homepage] 7 | components: 8 | twitter: 9 | icon: "fab fa-twitter fa-lg" 10 | href: https://twitter.com/saezlab 11 | homepage: 12 | icon: "fas fa-university" 13 | href: https://saezlab.org/ 14 | type: dark 15 | bg: primary 16 | 17 | template: 18 | params: 19 | ganalytics: UA-119440867-8 20 | highlightcss: false 21 | bootstrap: 5 22 | bootswatch: cosmo 23 | bslib: 24 | primary: "#34628F" 25 | -------------------------------------------------------------------------------- /pkgdown/extra.css: -------------------------------------------------------------------------------- 1 | .contents p:first-of-type img { 2 | background-color: white; 3 | padding: 10px; 4 | margin-top: 15px; 5 | scale: 1.1; 6 | position: relative; 7 | left: 10%; 8 | } 9 | 10 | body { 11 | font-size: 117%!important; 12 | } 13 | 14 | .bg-primary { 15 | background-color: #34628F!important; 16 | } 17 | 18 | .navbar-brand { 19 | font-size: 166%!important; 20 | } 21 | 22 | nav[data-toggle="toc"] .nav > li > a { 23 | border-radius: 0px!important; 24 | padding-left: 1rem!important; 25 | } 26 | 27 | pre { 28 | border-radius: 0px!important; 29 | background-color: white!important; 30 | } 31 | 32 | code span, code a:any-link { 33 | color: #1f1c1b!important; 34 | }/* Normal */ 35 | code span.al, code span.al a:any-link { 36 | color: #bf0303!important; 37 | background-color: #f7e6e6!important; 38 | font-weight: bold; 39 | } /* Alert */ 40 | code span.an, code span.an a:any-link { 41 | color: #ca60ca!important; 42 | } /* Annotation */ 43 | code span.at, code span.at a:any-link { 44 | color: #0057ae!important; 45 | } /* Attribute */ 46 | code span.bn, code span.bn a:any-link { 47 | color: #b08000!important; 48 | } /* BaseN */ 49 | code span.bu, code span.bu a:any-link { 50 | color: #644a9b!important; 51 | font-weight: bold; 52 | } /* BuiltIn */ 53 | code span.cf, code span.cf a:any-link { 54 | color: #1f1c1b!important; 55 | font-weight: bold; 56 | } /* ControlFlow */ 57 | code span.ch, code span.ch a:any-link { 58 | color: #924c9d!important; 59 | } /* Char */ 60 | code span.cn, code span.cn a:any-link { 61 | color: #aa5500!important; 62 | }/* Constant */ 63 | code span.co, code span.co a:any-link { 64 | color: #898887!important; 65 | }/* Comment */ 66 | code span.cv, code span.cv a:any-link { 67 | color: #0095ff!important; 68 | }/* CommentVar */ 69 | code span.do, code span.do a:any-link { 70 | color: #607880!important; 71 | }/* Documentation */ 72 | code span.dt, code span.dt a:any-link { 73 | color: #0057ae!important; 74 | }/* DataType */ 75 | code span.dv, code span.dv a:any-link { 76 | color: #b08000!important; 77 | }/* DecVal */ 78 | code span.er, code span.er a:any-link { 79 | color: #bf0303!important; 80 | text-decoration: underline; 81 | } /* Error */ 82 | code span.ex, code span.ex a:any-link { 83 | color: #0095ff!important; 84 | font-weight: bold; 85 | } /* Extension */ 86 | code span.fl, code span.fl a:any-link { 87 | color: #b08000!important; 88 | }/* Float */ 89 | code span.fu, 90 | code span.fu a:any-link { 91 | color: #644a9b!important; 92 | } /* Function */ 93 | code span.im, code span.im a:any-link { 94 | color: #ff5500!important; 95 | }/* Import */ 96 | code span.in, code span.in a:any-link { 97 | color: #b08000!important; 98 | }/* Information */ 99 | code span.kw, code span.kw a:any-link { 100 | /*color: #1f1c1b!important;*/ 101 | color: #007BA5!important; 102 | font-weight: bold; 103 | } /* Keyword */ 104 | code span.op, code span.op a:any-link { 105 | /* color: #1f1c1b!important; */ 106 | color: #5E5E5E!important; 107 | }/* Operator */ 108 | code span.ot, code span.ot a:any-link { 109 | color: #006e28!important; 110 | }/* Other */ 111 | code span.pp, code span.pp a:any-link { 112 | color: #006e28!important; 113 | }/* Preprocessor */ 114 | code span.re, code span.re a:any-link { 115 | color: #0057ae!important; 116 | background-color: #e0e9f8!important; 117 | } /* RegionMarker */ 118 | code span.sc, code span.sc a:any-link { 119 | color: #3daee9!important; 120 | }/* SpecialChar */ 121 | code span.ss, code span.ss a:any-link { 122 | color: #ff5500!important; 123 | }/* SpecialString */ 124 | /* code span.st, code span.st a:any-link { 125 | * color: #bf0303!important; 126 | * }/* String */ 127 | code span.st, code span.st a:any-link { 128 | color: #20794d!important; 129 | }/* String */ 130 | code span.va, code span.va a:any-link { 131 | color: #0057ae!important; 132 | }/* Variable */ 133 | code span.vs, code span.vs a:any-link { 134 | color: #bf0303!important; 135 | }/* VerbatimString */ 136 | code span.wa, code span.wa a:any-link { 137 | color: #bf0303!important; 138 | }/* Warning */ 139 | 140 | .nav-text.text-muted { 141 | color: #ffffff!important; 142 | } 143 | 144 | .nav-item.active > .nav-link { 145 | background-color: #e9ecef!important; 146 | color: #133676!important; 147 | } 148 | 149 | .navbar-dark input[type="search"] { 150 | background-color: #e9ecef!important; 151 | color: #212529!important; 152 | } 153 | 154 | .template-home > .row > #main > p > img { 155 | background-color: #ffffff!important; 156 | padding-top: 20px; 157 | } 158 | 159 | .template-home > .row > #main > .section > .page-header > img { 160 | display: none!important; 161 | } 162 | 163 | .template-home h1, .template-home h2, .template-home h3, .template-home h4, 164 | .template-home h5, .template-home h6, .template-article .page-header h1 { 165 | font-weight: 700!important; 166 | } 167 | 168 | h1 { 169 | font-size: 4.125rem!important; 170 | } 171 | 172 | img.logo { 173 | background-color: #ffffff!important; 174 | } 175 | 176 | p.abstract { 177 | font-size: calc(1.375rem + 1.5vw)!important; 178 | } 179 | 180 | h4.author { 181 | font-size: 1.25rem!important; 182 | margin-top: 1rem!important; 183 | } 184 | 185 | @media (min-width: 1200px){ 186 | p.abstract { 187 | font-size: 2.5rem!important; 188 | } 189 | } 190 | 191 | .author_afil { 192 | font-size: small!important; 193 | } 194 | 195 | .nav-item { 196 | margin-left: 10px!important; 197 | } 198 | -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(progeny) 3 | 4 | test_check("progeny") 5 | -------------------------------------------------------------------------------- /tests/testthat/test-progeny_pipeline.R: -------------------------------------------------------------------------------- 1 | library(progeny) 2 | 3 | #get input data 4 | human_input <- as.matrix(read.csv(system.file("extdata", "human_input.csv", 5 | package = "progeny"), 6 | row.names = 1)) 7 | mouse_input <- as.matrix(read.csv(system.file("extdata", "mouse_input.csv", 8 | package = "progeny"), 9 | row.names = 1)) 10 | 11 | #get expected data 12 | human_def_expected <- read.csv(system.file("extdata", "human_def_expected.csv", 13 | package = "progeny"), 14 | row.names = 1, 15 | check.names = FALSE) 16 | mouse_def_expected <- read.csv(system.file("extdata", "mouse_def_expected.csv", 17 | package = "progeny"), 18 | row.names = 1, 19 | check.names = FALSE) 20 | 21 | #obtaining actual result 22 | human_def_act <- as.data.frame(progeny(human_input, scale=TRUE, 23 | organism = "Human", top = 10)) 24 | mouse_def_act <- as.data.frame(progeny(mouse_input, scale=TRUE, 25 | organism = "Mouse", top = 10)) 26 | 27 | #testing 28 | test_that("Comparison of the results", { 29 | expect_equal(human_def_act, human_def_expected) 30 | expect_equal(mouse_def_act, mouse_def_expected) 31 | }) 32 | -------------------------------------------------------------------------------- /vignettes/progeny.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "PROGENy pathway signatures" 3 | author: 4 | - name: Pau Badia-i-Mompel 5 | affiliation: 6 | - Heidelberg Universiy 7 | output: 8 | BiocStyle::html_document: 9 | self_contained: true 10 | toc: true 11 | toc_float: true 12 | toc_depth: 3 13 | code_folding: show 14 | package: "`r pkg_ver('progeny')`" 15 | vignette: > 16 | %\VignetteIndexEntry{PROGENy pathway signatures} 17 | %\VignetteEngine{knitr::rmarkdown} 18 | %\VignetteEncoding{UTF-8} 19 | --- 20 | 21 | ```{r setup, include=FALSE} 22 | knitr::opts_chunk$set( 23 | collapse = TRUE, 24 | comment = "#>" 25 | ) 26 | ``` 27 | 28 | 29 | # Introduction 30 | 31 | PROGENy is resource that leverages a large compendium of publicly available 32 | signaling perturbation experiments to yield a common core of pathway responsive 33 | genes. For each pathway, a collection of genes are available along their 34 | contribution and significance to it. 35 | 36 | Inside PROGENy, one can find gene signatures for 14 different pathways: 37 | 38 | - **Androgen**: involved in the growth and development of the male reproductive organs. 39 | - **EGFR**: regulates growth, survival, migration, apoptosis, proliferation, and differentiation in mammalian cells 40 | - **Estrogen**: promotes the growth and development of the female reproductive organs. 41 | - **Hypoxia**: promotes angiogenesis and metabolic reprogramming when O2 levels are low. 42 | - **JAK-STAT**: involved in immunity, cell division, cell death, and tumor formation. 43 | - **MAPK**: integrates external signals and promotes cell growth and proliferation. 44 | - **NFkB**: regulates immune response, cytokine production and cell survival. 45 | - **p53**: regulates cell cycle, apoptosis, DNA repair and tumor suppression. 46 | - **PI3K**: promotes growth and proliferation. 47 | - **TGFb**: involved in development, homeostasis, and repair of most tissues. 48 | - **TNFa**: mediates haematopoiesis, immune surveillance, tumour regression and protection from infection. 49 | - **Trail**: induces apoptosis. 50 | - **VEGF**: mediates angiogenesis, vascular permeability, and cell migration. 51 | - **WNT**: regulates organ morphogenesis during development and tissue repair. 52 | 53 | # Activity estimation 54 | These signatures, coupled with any statistical method, 55 | can be used to infer pathway activities from bulk or single-cell 56 | transcriptomics. 57 | In this vignette we just show how to access these signatures and some of their 58 | properties. To infer pathway activities, please check out 59 | [decoupleR](https://doi.org/10.1093/bioadv/vbac016), available in 60 | [R](https://saezlab.github.io/decoupleR/) or 61 | [python](https://github.com/saezlab/decoupler-py). 62 | 63 | # Load 64 | First we load the necessary packages: 65 | ```{r load, message=FALSE} 66 | library(progeny) 67 | library(ggplot2) 68 | library(dplyr) 69 | ``` 70 | 71 | Here is how to retrieve all genes from each pathway in human: 72 | ```{r model} 73 | model <- progeny::model_human_full 74 | head(model) 75 | ``` 76 | 77 | Here we can observe how some genes behave for some pathways. For example, 78 | The gene CBX6 has a negative response to EGFR, meaning that when there is EGFR 79 | signaling this gene is down-regulated. On the other hand, the gene RFC2 has a 80 | positive weight for EGFR, meaning that when there is EGFR signaling it becomes 81 | up-regulated. We can also see the significance of each gene to each pathway. To 82 | better estimate pathway activities, we recommend to select the top 100 83 | significant genes for each pathway or filter by significance. 84 | 85 | # Exploration 86 | We can visualize the distribution of weights for the top 100 genes per pathway: 87 | 88 | ```{r w_dist} 89 | # Get top 100 significant genes per pathway 90 | model_100 <- model %>% 91 | group_by(pathway) %>% 92 | slice_min(order_by = p.value, n = 200) 93 | 94 | # Plot 95 | ggplot(data=model_100, aes(x=weight, color=pathway, fill=pathway)) + 96 | geom_density() + 97 | theme(text = element_text(size=12)) + 98 | facet_wrap(~ pathway, scales='free') + 99 | xlab('scores') + 100 | ylab('densities') + 101 | theme_bw() + 102 | theme(legend.position = "none") 103 | 104 | ``` 105 | 106 | Each pathway show a different distribution of weights. Some up-regulate more genes 107 | than down-regulate, like NFkB or TNFa, while others do the opposite, like PI3K 108 | or VEGF. 109 | 110 | 111 | 112 | 113 | --------------------------------------------------------------------------------