analysis-ecoli.Rmd
This document contains reproducing analysis code which generates the tables and figures for the manuscript:
Genomic analysis of extended-spectrum beta-lactamase (ESBL) producing Escherichia coli colonising adults in Blantyre, Malawi reveals previously undescribed diversity
Joseph M Lewis1,2,3,4, , Madalitso Mphasa1, Rachel Banda1, Matthew Beale4, Jane Mallewa5, Catherine Anscombe1,2, Allan Zuza1, Adam P Roberts2, Eva Heinz*2, Nicholas Thomson*4,6, Nicholas A Feasey*1,2
library(tidytree)
#> If you use the ggtree package suite in published research,
#> please cite the appropriate paper(s):
#>
#> LG Wang, TTY Lam, S Xu, Z Dai, L Zhou, T Feng, P Guo, CW Dunn, BR
#> Jones, T Bradley, H Zhu, Y Guan, Y Jiang, G Yu. treeio: an R package
#> for phylogenetic tree input and output with richly annotated and
#> associated data. Molecular Biology and Evolution. 2020, 37(2):599-603.
#> doi: 10.1093/molbev/msz240
#>
#> Guangchuang Yu. Data Integration, Manipulation and Visualization of
#> Phylogenetic Trees (1st edition). Chapman and Hall/CRC. 2022,
#> doi:10.1201/9781003279242
#>
#> Attaching package: 'tidytree'
#> The following object is masked from 'package:stats':
#>
#> filter
library(ggtree)
#> ggtree v3.9.1 For help: https://yulab-smu.top/treedata-book/
#>
#> If you use the ggtree package suite in published research, please cite
#> the appropriate paper(s):
#>
#> Guangchuang Yu, David Smith, Huachen Zhu, Yi Guan, Tommy Tsan-Yuk Lam.
#> ggtree: an R package for visualization and annotation of phylogenetic
#> trees with their covariates and other associated data. Methods in
#> Ecology and Evolution. 2017, 8(1):28-36. doi:10.1111/2041-210X.12628
#>
#> G Yu. Data Integration, Manipulation and Visualization of Phylogenetic
#> Trees (1st ed.). Chapman and Hall/CRC. 2022. ISBN: 9781032233574
#>
#> Guangchuang Yu. Data Integration, Manipulation and Visualization of
#> Phylogenetic Trees (1st edition). Chapman and Hall/CRC. 2022,
#> doi:10.1201/9781003279242
library(ape)
#>
#> Attaching package: 'ape'
#> The following object is masked from 'package:ggtree':
#>
#> rotate
#> The following objects are masked from 'package:tidytree':
#>
#> drop.tip, keep.tip
library(phytools)
#> Loading required package: maps
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following object is masked from 'package:ape':
#>
#> where
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tidyr)
#>
#> Attaching package: 'tidyr'
#> The following object is masked from 'package:ggtree':
#>
#> expand
library(readr)
library(ggplot2)
library(forcats)
library(stringr)
library(blantyreESBL)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
library(ggnewscale)
library(kableExtra)
#>
#> Attaching package: 'kableExtra'
#> The following object is masked from 'package:dplyr':
#>
#> group_rows
library(patchwork)
library(here)
#> here() starts at /Users/joelewis/R/packages/blantyreESBL
library(scales)
#>
#> Attaching package: 'scales'
#> The following object is masked from 'package:readr':
#>
#> col_factor
#> The following object is masked from 'package:phytools':
#>
#> rescale
library(ggstance)
#>
#> Attaching package: 'ggstance'
#> The following objects are masked from 'package:ggplot2':
#>
#> geom_errorbarh, GeomErrorbarh
library(blantyreESBL)
library(countrycode)
library(viridis)
#> Loading required package: viridisLite
#>
#> Attaching package: 'viridis'
#> The following object is masked from 'package:scales':
#>
#> viridis_pal
#> The following object is masked from 'package:maps':
#>
#> unemp
write_figs <- FALSE
if (write_figs) {
if (!dir.exists(here("figures"))) {dir.create(here("figures"))}
if (!dir.exists(here("tables"))) {dir.create(here("tables"))}
if (!dir.exists(here("figures/ecoli-genomics"))) {
dir.create(here("figures/ecoli-genomics"))
}
if (!dir.exists(here("tables/ecoli-genomics"))) {
dir.create(here("tables/ecoli-genomics"))
}
}
btESBL_sequence_sample_metadata %>%
mutate(date_of_collection = data_date) %>%
select(accession,
lane,
supplier_name,
pid,
date_of_collection,
N50) %>%
kbl(caption =
"Accession numbers and assembly statistics for included samples"
) %>%
kable_classic(full_width = FALSE)
accession | lane | supplier_name | pid | date_of_collection | N50 |
---|---|---|---|---|---|
ERR3425924 | 26141_1_134 | CAB153 | DAS10020 | 2017-09-13 | 90677 |
ERR3425925 | 26141_1_135 | CAC127 | DAS10020 | 2017-09-20 | 91797 |
ERR3425926 | 26141_1_136 | CAD13R | DAS10020 | 2017-10-12 | 90587 |
ERR3425927 | 26141_1_137 | CAE12N | DAS10020 | 2017-12-13 | 214462 |
ERR3425928 | 26141_1_138 | CAI10E | DAS1005V | 2017-10-10 | 132088 |
ERR3425929 | 26141_1_139 | CAJ10A | DAS1005V | 2017-12-12 | 207354 |
ERR3425930 | 26141_1_140 | CAD13P | DAS1006T | 2017-10-09 | 106469 |
ERR3425931 | 26141_1_141 | CAI10F | DAS10100 | 2017-10-17 | 147795 |
ERR3425932 | 26141_1_142 | CAB14X | DAS1014T | 2017-09-07 | 179790 |
ERR3425933 | 26141_1_143 | CAC11I | DAS1014T | 2017-09-14 | 190526 |
ERR3425934 | 26141_1_144 | CAD137 | DAS1014T | 2017-10-06 | 186956 |
ERR3425935 | 26141_1_145 | CAE12R | DAS1014T | 2017-12-18 | 91797 |
ERR3425936 | 26141_1_146 | CAL10S | DAS1016P | 2017-09-27 | 132400 |
ERR3425937 | 26141_1_147 | CAM10R | DAS1016P | 2017-11-08 | 126233 |
ERR3425938 | 26141_1_148 | CAM10K | DAS1019J | 2017-10-05 | 96590 |
ERR3425939 | 26141_1_149 | CAC126 | DAS1020X | 2017-09-12 | 71986 |
ERR3425940 | 26141_1_150 | CAB13C | DAS1024P | 2017-09-01 | 212649 |
ERR3425941 | 26141_1_151 | CAC124 | DAS1024P | 2017-09-07 | 222532 |
ERR3425942 | 26141_1_152 | CAD13N | DAS1024P | 2017-09-28 | 241104 |
ERR3425943 | 26141_1_153 | CAE12K | DAS1024P | 2017-12-01 | 207364 |
ERR3425944 | 26141_1_154 | CAC122 | DAS1028H | 2017-09-05 | 183579 |
ERR3425945 | 26141_1_155 | CAE12H | DAS1028H | 2017-11-28 | 95953 |
ERR3425946 | 26141_1_156 | CAB139 | DAS1029F | 2017-08-29 | 227316 |
ERR3425947 | 26141_1_157 | CAC123 | DAS1029F | 2017-09-06 | 191270 |
ERR3425948 | 26141_1_158 | CAD134 | DAS1029F | 2017-09-27 | 173030 |
ERR3425949 | 26141_1_159 | CAE12L | DAS1029F | 2017-12-06 | 97192 |
ERR3425950 | 26141_1_160 | CAD13K | DAS1034L | 2017-09-21 | 233352 |
ERR3425951 | 26141_1_161 | CAE12F | DAS1035J | 2017-11-22 | 97056 |
ERR3425952 | 26141_1_162 | CAC11X | DAS1042L | 2017-08-24 | 126528 |
ERR3425954 | 26141_1_164 | CAB13L | DAS1047B | 2017-08-14 | 91797 |
ERR3425955 | 26141_1_165 | CAC11F | DAS1047B | 2017-08-21 | 91797 |
ERR3425956 | 26141_1_166 | CAD13J | DAS10489 | 2017-09-18 | 165340 |
ERR3425958 | 26141_1_168 | CAM10H | DAS1053F | 2017-09-15 | 233363 |
ERR3425959 | 26141_1_169 | CAB13I | DAS1055B | 2017-08-09 | 97260 |
ERR3425960 | 26141_1_170 | CAD12Z | DAS1055B | 2017-09-01 | 173896 |
ERR3425961 | 26141_1_171 | CAC11W | DAS10593 | 2017-08-10 | 191259 |
ERR3425962 | 26141_1_172 | CAC11C | DAS1060H | 2017-08-08 | 222887 |
ERR3425963 | 26141_1_173 | CAD115 | DAS1060H | 2017-08-30 | 222890 |
ERR3425964 | 26141_1_174 | CAE110 | DAS1060H | 2017-11-01 | 239980 |
ERR3425965 | 26141_1_175 | CAC119 | DAS10649 | 2017-08-07 | 404954 |
ERR3425966 | 26141_1_176 | CAE10Z | DAS10649 | 2017-10-30 | 118863 |
ERR3425967 | 26141_1_177 | CAB12F | DAS10657 | 2017-07-24 | 249398 |
ERR3425968 | 26141_1_178 | CAC11D | DAS10657 | 2017-08-11 | 97316 |
ERR3425969 | 26141_1_179 | CAD113 | DAS10657 | 2017-08-28 | 133224 |
ERR3425970 | 26141_1_180 | CAE116 | DAS10657 | 2017-11-16 | 225549 |
ERR3425971 | 26141_1_181 | CAH108 | DAS10673 | 2017-07-28 | 204492 |
ERR3425972 | 26141_1_182 | CAI107 | DAS10673 | 2017-08-18 | 133224 |
ERR3425973 | 26141_1_183 | CAJ105 | DAS10673 | 2017-10-24 | 126601 |
ERR3425974 | 26141_1_184 | CAG10D | DAS1069X | 2017-07-20 | 154938 |
ERR3425976 | 26141_1_186 | CAB12D | DAS1070D | 2017-07-19 | 192844 |
ERR3425977 | 26141_1_187 | CAC116 | DAS10753 | 2017-07-20 | 132069 |
ERR3425979 | 26141_1_189 | CAC117 | DAS1077X | 2017-07-24 | 210236 |
ERR3425980 | 26141_1_190 | CAD10X | DAS1077X | 2017-08-14 | 201425 |
ERR3425981 | 26141_1_191 | CAJ102 | DAS1079W | 2017-09-26 | 156945 |
ERR3425982 | 26141_1_192 | CAG106 | DAS10841 | 2017-06-28 | 99469 |
ERR3425983 | 26141_1_193 | CAH103 | DAS10841 | 2017-07-05 | 99469 |
ERR3425984 | 26141_1_194 | CAI109 | DAS10841 | 2017-08-28 | 233352 |
ERR3425985 | 26141_1_195 | CAJ109 | DAS10841 | 2017-12-06 | 106468 |
ERR3425986 | 26141_1_196 | CAM107 | DAS1087W | 2017-07-13 | 209178 |
ERR3425987 | 26141_1_197 | CAM10B | DAS1088U | 2017-08-11 | 233352 |
ERR3425988 | 26141_1_198 | CAB11F | DAS10905 | 2017-06-13 | 221680 |
ERR3425989 | 26141_1_199 | CAC10Y | DAS10905 | 2017-06-20 | 211377 |
ERR3425990 | 26141_1_200 | CAE10Q | DAS10905 | 2017-09-26 | 211370 |
ERR3425991 | 26141_1_201 | CAC110 | DAS10913 | 2017-06-28 | 204336 |
ERR3425992 | 26141_1_202 | CAD10T | DAS10913 | 2017-07-18 | 248198 |
ERR3425993 | 26141_1_203 | CAE10N | DAS10913 | 2017-09-20 | 106481 |
ERR3425994 | 26141_1_204 | CAG10A | DAS10921 | 2017-07-06 | 91797 |
ERR3425995 | 26141_1_205 | CAI104 | DAS10921 | 2017-08-04 | 91797 |
ERR3425996 | 26141_1_206 | CAB11K | DAS1093X | 2017-06-29 | 206614 |
ERR3425997 | 26141_1_207 | CAE10T | DAS1093X | 2017-10-06 | 131790 |
ERR3425998 | 26141_1_208 | CAF10N | DAS1093X | 2017-12-22 | 82303 |
ERR3425999 | 26141_1_209 | CAC111 | DAS1096U | 2017-06-29 | 241155 |
ERR3426000 | 26141_1_210 | CAE10P | DAS1096U | 2017-09-22 | 201442 |
ERR3426001 | 26141_1_211 | CAF10J | DAS1096U | 2017-12-04 | 214462 |
ERR3426002 | 26141_1_212 | CAL108 | DAS1098Q | 2017-06-19 | 91797 |
ERR3426003 | 26141_1_213 | CAM108 | DAS1098Q | 2017-07-17 | 147807 |
ERR3426004 | 26141_1_214 | CAE10V | DAS1100X | 2017-10-18 | 99443 |
ERR3426005 | 26141_1_215 | CAC10V | DAS1107J | 2017-06-05 | 407409 |
ERR3426007 | 26141_1_217 | CAF10G | DAS1107J | 2017-11-17 | 209764 |
ERR3426008 | 26141_1_218 | CAC10X | DAS1111R | 2017-06-20 | 129521 |
ERR3426009 | 26141_1_219 | CAD10M | DAS1111R | 2017-07-04 | 210234 |
ERR3426010 | 26141_1_220 | CAF10K | DAS1111R | 2017-12-06 | 73328 |
ERR3426011 | 26141_1_221 | CAG104 | DAS1113N | 2017-06-09 | 97252 |
ERR3426012 | 26141_1_222 | CAH101 | DAS1113N | 2017-06-16 | 101609 |
ERR3426013 | 26141_1_223 | CAI101 | DAS1113N | 2017-07-11 | 101512 |
ERR3426014 | 26141_1_224 | CAC10Z | DAS1116H | 2017-06-27 | 179783 |
ERR3426015 | 26141_1_225 | CAD10Q | DAS1116H | 2017-07-17 | 132553 |
ERR3426016 | 26141_1_226 | CAE10S | DAS1116H | 2017-09-27 | 97068 |
ERR3426017 | 26141_1_227 | CAB11R | DAS1125F | 2017-05-03 | 213110 |
ERR3426018 | 26141_1_228 | CAC10R | DAS1125F | 2017-05-09 | 212649 |
ERR3426019 | 26141_1_229 | CAE10K | DAS1125F | 2017-08-24 | 132500 |
ERR3426020 | 26141_1_230 | CAF10E | DAS1125F | 2017-11-17 | 185271 |
ERR3426022 | 26141_1_232 | CAC10Q | DAS1126D | 2017-05-09 | 210215 |
ERR3426026 | 26141_1_236 | CAC10S | DAS11289 | 2017-05-09 | 126680 |
ERR3426027 | 26141_1_237 | CAL101 | DAS1130L | 2017-04-24 | 209880 |
ERR3426029 | 26141_1_239 | CAM100 | DAS1133F | 2017-05-18 | 170302 |
ERR3426030 | 26141_1_240 | CAD110 | DAS11369 | 2017-08-17 | 148760 |
ERR3426031 | 26141_1_241 | CAE10W | DAS11369 | 2017-10-18 | 473927 |
ERR3426032 | 26141_1_242 | CAI100 | DAS11377 | 2017-07-06 | 92256 |
ERR3426033 | 26141_1_243 | CAB117 | DAS1140H | 2017-04-04 | 262741 |
ERR3426034 | 26141_1_244 | CAC10H | DAS1140H | 2017-04-13 | 147249 |
ERR3426036 | 26141_1_246 | CAE10A | DAS1140H | 2017-07-06 | 262816 |
ERR3426037 | 26141_1_247 | CAF109 | DAS1140H | 2017-10-02 | 131396 |
ERR3426038 | 26141_1_248 | CAE10D | DAS11457 | 2017-07-17 | 90919 |
ERR3426040 | 26141_1_250 | CAB10P | DAS1149X | 2017-03-16 | 133214 |
ERR3426041 | 26141_1_251 | CAC10A | DAS1149X | 2017-03-23 | 133235 |
ERR3426042 | 26141_1_252 | CAD109 | DAS1149X | 2017-04-13 | 127999 |
ERR3426043 | 26141_1_253 | CAF105 | DAS1149X | 2017-09-15 | 382592 |
ERR3426044 | 26141_1_254 | CAC10E | DAS1150D | 2017-04-07 | 106493 |
ERR3426045 | 26141_1_255 | CAC10D | DAS1151B | 2017-04-05 | 191526 |
ERR3426046 | 26141_1_256 | CAD10B | DAS1151B | 2017-04-26 | 90676 |
ERR3426047 | 26141_1_257 | CAF108 | DAS1151B | 2017-09-26 | 213079 |
ERR3426048 | 26141_1_258 | CAC10J | DAS11537 | 2017-04-18 | 191261 |
ERR3426049 | 26141_1_259 | CAD10H | DAS11537 | 2017-05-17 | 109958 |
ERR3426050 | 26141_1_260 | CAE10C | DAS11537 | 2017-07-14 | 129521 |
ERR3426051 | 26141_1_261 | CAF10A | DAS11537 | 2017-10-17 | 473929 |
ERR3426052 | 26141_1_262 | CAB10K | DAS11545 | 2017-03-09 | 105902 |
ERR3426053 | 26141_1_263 | CAC107 | DAS11545 | 2017-03-16 | 205574 |
ERR3426055 | 26141_1_265 | CAE105 | DAS11545 | 2017-06-06 | 198302 |
ERR3426056 | 26141_1_266 | CAF103 | DAS11545 | 2017-09-06 | 433075 |
ERR3426057 | 26141_1_267 | CAC109 | DAS1158Y | 2017-03-22 | 199812 |
ERR3426058 | 26141_1_268 | CAD108 | DAS1158Y | 2017-04-12 | 210226 |
ERR3426060 | 26141_1_270 | CAC103 | DAS11609 | 2017-03-02 | 147250 |
ERR3426061 | 26141_1_271 | CAD104 | DAS11609 | 2017-03-23 | 233529 |
ERR3426062 | 26141_1_272 | CAF102 | DAS11609 | 2017-09-01 | 122942 |
ERR3426063 | 26141_1_273 | CAC102 | DAS11633 | 2017-03-01 | 101368 |
ERR3426064 | 26141_1_274 | CAD105 | DAS11641 | 2017-03-29 | 89604 |
ERR3426065 | 26141_1_275 | CAC104 | DAS1165X | 2017-03-02 | 473927 |
ERR3426066 | 26141_1_276 | CAD103 | DAS1165X | 2017-03-23 | 175481 |
ERR3426067 | 26141_1_277 | CAB10W | DAS1166Y | 2017-02-19 | 220679 |
ERR3426068 | 26141_1_278 | CAC100 | DAS1166Y | 2017-02-28 | 188970 |
ERR3426069 | 26141_1_279 | CAD101 | DAS1166Y | 2017-03-21 | 204840 |
ERR3426070 | 26141_1_280 | CAF107 | DAS1166Y | 2017-09-25 | 204837 |
ERR3426072 | 26141_1_282 | CAE104 | DAS1168U | 2017-06-02 | 473927 |
ERR3426073 | 26141_1_283 | CAE10J | DAS1168U | 2017-08-21 | 175729 |
ERR3168700 | 26141_1_284 | CAC146 | DAS1191W | 2018-03-26 | 168747 |
ERR3426074 | 26141_1_285 | CAC12C | DAS1366I | 2017-10-13 | 191259 |
ERR3426075 | 26141_1_286 | CAE117 | DAS1366I | 2018-01-09 | 156646 |
ERR3426076 | 26141_1_287 | CAL117 | DAS1373K | 2017-11-30 | 209009 |
ERR3426077 | 26141_1_288 | CAL118 | DAS1374I | 2017-11-30 | 132120 |
ERR3426078 | 26141_1_289 | CAL10X | DAS1375G | 2017-12-06 | 157648 |
ERR3426079 | 26141_1_290 | CAL10Y | DAS1376E | 2017-12-07 | 140045 |
ERR3426080 | 26141_1_291 | CAB159 | DAS14009 | 2017-09-26 | 87675 |
ERR3426081 | 26141_1_292 | CAC12A | DAS14009 | 2017-10-11 | 209968 |
ERR3426082 | 26141_1_293 | CAM10P | DAS1416U | 2017-11-07 | 241224 |
ERR3426084 | 26141_1_295 | CAD117 | DAS10905 | 2017-07-11 | 135820 |
ERR3426085 | 26141_1_296 | CAD10R | DAS1096U | 2017-07-17 | 126561 |
ERR3426086 | 26141_1_297 | CAC105 | DAS11641 | 2017-03-09 | 132462 |
ERR3426087 | 26141_1_298 | CAD10A | DAS1150D | 2017-04-18 | 133170 |
ERR3426088 | 26141_1_299 | CAC11J | DAS1006T | 2017-09-18 | 138384 |
ERR3865252 | 28099_1_1 | CAB161 | DAS1333X | 2017-11-06 | 323179 |
ERR3865253 | 28099_1_2 | CAB16W | DAS1229X | 2018-02-08 | 153887 |
ERR3865255 | 28099_1_7 | CEF191 | NA | NA | 241397 |
ERR3865256 | 28099_1_10 | CAB15Z | DAS1336U | 2017-10-31 | 176368 |
ERR3865257 | 28099_1_11 | CAL11J | DAS1466A | 2018-05-10 | 322163 |
ERR3865258 | 28099_1_14 | CAB15Y | DAS1337S | 2017-10-30 | 185777 |
ERR3865259 | 28099_1_18 | CAB15M | DAS1354Q | 2017-10-18 | 175014 |
ERR3865260 | 28099_1_19 | CAL11H | DAS1452M | 2018-05-03 | 224034 |
ERR3865261 | 28099_1_22 | CAB15H | DAS1360U | 2017-10-11 | 222715 |
ERR3865262 | 28099_1_23 | CAF11K | DAS1329S | 2018-05-07 | 184658 |
ERR3865263 | 28099_1_26 | CAC11R | DAS1337S | 2017-11-06 | 273878 |
ERR3865264 | 28099_1_27 | CAF11J | DAS1335W | 2018-05-04 | 266152 |
ERR3865265 | 28099_1_30 | CAC11Q | DAS1351W | 2017-10-26 | 266456 |
ERR3865266 | 28099_1_31 | CAE133 | DAS12265 | 2018-05-10 | 72478 |
ERR3865267 | 28099_1_34 | CAC11P | DAS1354Q | 2017-10-25 | 242407 |
ERR3865268 | 28099_1_35 | CAE131 | DAS1229X | 2018-05-08 | 131797 |
ERR3865269 | 28099_1_38 | CAC11N | DAS1360U | 2017-10-18 | 205700 |
ERR3865270 | 28099_1_39 | CAD11X | DAS1434Q | 2018-05-07 | 122722 |
ERR3865271 | 28099_1_41 | CAC13I | DAS12505 | 2018-02-02 | 106524 |
ERR3865272 | 28099_1_42 | CAC11K | DAS1008P | 2017-09-18 | 119272 |
ERR3865273 | 28099_1_43 | CAC14L | DAS1462I | 2018-05-10 | 279711 |
ERR3865275 | 28099_1_46 | CAC11H | DAS1032P | 2017-09-01 | 126700 |
ERR3865276 | 28099_1_47 | CAB19C | DAS1470I | 2018-05-10 | 129746 |
ERR3865277 | 28099_1_49 | CAD10N | DAS1108H | 2017-07-10 | 191261 |
ERR3865278 | 28099_1_50 | CAC11G | DAS10489 | 2017-08-29 | 160330 |
ERR3865279 | 28099_1_51 | CAB18F | DAS1465C | 2018-05-08 | 216551 |
ERR3865280 | 28099_1_53 | CAD13V | DAS1362Q | 2017-11-07 | 149622 |
ERR3865281 | 28099_1_54 | CAB15B | DAS13886 | 2017-10-02 | 109471 |
ERR3865282 | 28099_1_55 | CAB18D | DAS1462I | 2018-05-03 | 432064 |
ERR3865283 | 28099_1_57 | CAD120 | DAS11705 | 2018-05-17 | 204535 |
ERR3865284 | 28099_1_58 | CAB15A | DAS13990 | 2017-09-26 | 131424 |
ERR3865285 | 28099_1_59 | CAB18C | DAS1461K | 2018-05-02 | 210215 |
ERR3865286 | 28099_1_61 | CAH10J | DAS1393C | 2017-10-10 | 93840 |
ERR3865287 | 28099_1_62 | CAB158 | DAS14017 | 2017-09-26 | 81522 |
ERR3865288 | 28099_1_63 | CAJ10S | DAS1326Y | 2018-04-30 | 208627 |
ERR3865289 | 28099_1_65 | CAI10H | DAS14105 | 2017-11-01 | 227302 |
ERR3865290 | 28099_1_66 | CAB157 | DAS1405X | 2017-09-22 | 99645 |
ERR3865292 | 28099_1_69 | CAJ10D | DAS1393C | 2018-01-12 | 128560 |
ERR3865293 | 28099_1_70 | CAB14Y | DAS1013V | 2017-09-07 | 238350 |
ERR3865294 | 28099_1_71 | CAD11V | DAS11721 | 2018-04-30 | 117595 |
ERR3865295 | 28099_1_73 | CAB15S | DAS13129 | 2017-11-21 | 185538 |
ERR3865296 | 28099_1_74 | CAB138 | DAS1032P | 2017-08-25 | 81545 |
ERR3865297 | 28099_1_75 | CAD11U | DAS11713 | 2018-04-30 | 100475 |
ERR3865298 | 28099_1_77 | CAC13H | DAS1256U | 2018-02-02 | 105952 |
ERR3865299 | 28099_1_78 | CAB12E | DAS10681 | 2017-07-20 | 106537 |
ERR3865300 | 28099_1_79 | CAI113 | DAS1355O | 2018-04-27 | 241155 |
ERR3865301 | 28099_1_81 | CAC132 | DAS13241 | 2017-11-20 | 104030 |
ERR3865302 | 28099_1_82 | CAB11X | DAS1110T | 2017-06-05 | 236044 |
ERR3865303 | 28099_1_83 | CAE12Z | DAS1262Y | 2018-04-25 | 377641 |
ERR3865304 | 28099_1_85 | CAD10H | DAS11537 | 2017-05-17 | 259832 |
ERR3865305 | 28099_1_86 | CAB11P | DAS1078Y | 2017-07-14 | 116506 |
ERR3865306 | 28099_1_87 | CAF11H | DAS1347O | 2018-04-25 | 266925 |
ERR3865307 | 28099_1_89 | CAD141 | DAS13225 | 2017-12-12 | 234679 |
ERR3865308 | 28099_1_90 | CAC10X | DAS1111R | 2017-06-20 | 38078 |
ERR3865309 | 28099_1_91 | CAD12P | DAS1193S | 2018-04-26 | 222803 |
ERR3865310 | 28099_1_93 | CAG11T | DAS1355O | 2017-10-18 | 89389 |
ERR3865311 | 28099_1_94 | CAC11A | DAS10681 | 2017-08-07 | 82742 |
ERR3865312 | 28099_1_95 | CAD12M | DAS1221F | 2018-04-25 | 193006 |
ERR3865313 | 28099_1_98 | CAH10I | DAS14105 | 2017-09-27 | 207181 |
ERR3865314 | 28099_1_99 | CAC114 | DAS10809 | 2017-07-14 | 245970 |
ERR3865315 | 28099_1_100 | CAD12L | DAS12441 | 2018-04-25 | 87426 |
ERR3865316 | 28099_1_102 | CAI10H | DAS14105 | 2017-11-01 | 152155 |
ERR3865317 | 28099_1_103 | CAC10W | DAS1108H | 2017-06-19 | 196861 |
ERR3865318 | 28099_1_104 | CAD12K | DAS1169S | 2018-04-25 | 349120 |
ERR3865319 | 28099_1_106 | CAI10X | DAS1303B | 2018-01-23 | 138859 |
ERR3865320 | 28099_1_107 | CAC10M | DAS11297 | 2017-04-26 | 228542 |
ERR3865322 | 28099_1_110 | CAB15V | DAS1295G | 2017-12-06 | 404628 |
ERR3865323 | 28099_1_111 | CAC10I | DAS1141F | 2017-04-13 | 219805 |
ERR3865324 | 28099_1_112 | CAC14J | DAS1448E | 2018-04-25 | 147856 |
ERR3865325 | 28099_1_114 | CAC13G | DAS1246Y | 2018-02-02 | 119105 |
ERR3865326 | 28099_1_115 | CAC10G | DAS11465 | 2017-04-11 | 131920 |
ERR3865327 | 28099_1_116 | CAB199 | DAS1458A | 2018-04-26 | 89194 |
ERR3865328 | 28099_1_118 | CAC131 | DAS1329S | 2017-11-14 | 42550 |
ERR3865329 | 28099_1_119 | CAC10C | DAS11529 | 2017-03-30 | 192417 |
ERR3865330 | 28099_1_120 | CAB190 | DAS1437K | 2018-04-11 | 229265 |
ERR3865332 | 28099_1_123 | CAC108 | DAS11561 | 2017-03-17 | 125942 |
ERR3865334 | 28099_1_125 | CAB195 | DAS1447G | 2018-04-16 | 136821 |
ERR3865335 | 28099_1_127 | CAD13Y | DAS1337S | 2017-11-28 | 106518 |
ERR3865336 | 28099_1_128 | CAC106 | DAS1157X | 2017-03-14 | 98504 |
ERR3865337 | 28099_1_129 | CAB194 | DAS1446I | 2018-04-16 | 26311 |
ERR3865338 | 28099_1_131 | CAG11H | DAS13233 | 2017-11-14 | 140577 |
ERR3865339 | 28099_1_132 | CAB114 | DAS1157X | 2017-03-07 | 140672 |
ERR3865340 | 28099_1_133 | CAC14R | DAS1434Q | 2018-04-17 | 473906 |
ERR3865341 | 28099_1_135 | CAH10B | DAS1043J | 2017-08-24 | 133101 |
ERR3865342 | 28099_1_136 | CAB116 | DAS11465 | 2017-04-04 | 121117 |
ERR3865343 | 28099_1_137 | CAC14S | DAS1438I | 2018-04-18 | 329244 |
ERR3865344 | 28099_1_139 | CAI10C | DAS1036H | 2017-09-21 | 245592 |
ERR3865346 | 28099_1_141 | CAC14G | DAS1183W | 2018-04-11 | 258902 |
ERR3865347 | 28099_1_143 | CAI10W | DAS13073 | 2018-01-18 | 88940 |
ERR3865348 | 28099_1_144 | CAB111 | DAS11641 | 2017-02-28 | 172319 |
ERR3865349 | 28099_1_145 | CAD12G | DAS11801 | 2018-04-19 | 36913 |
ERR3865351 | 28099_1_148 | CAB10Z | DAS11609 | 2017-02-23 | 178699 |
ERR3865352 | 28099_1_149 | CAD12D | DAS1176U | 2018-04-18 | 253079 |
ERR3865353 | 28099_1_151 | CAC13D | DAS1255W | 2018-01-29 | 219619 |
ERR3865354 | 28099_1_152 | CAB10T | DAS1151B | 2017-03-29 | 140556 |
ERR3865355 | 28099_1_153 | CAD12F | DAS12185 | 2018-04-19 | 209738 |
ERR3865356 | 28099_1_155 | CAC130 | DAS1333X | 2017-11-13 | 276211 |
ERR3865357 | 28099_1_156 | CAB10R | DAS11481 | 2017-03-21 | 257488 |
ERR3865358 | 28099_1_157 | CAD12H | DAS1206D | 2018-04-19 | 105804 |
ERR3865359 | 28099_1_159 | CAD107 | DAS11545 | 2017-04-06 | 202204 |
ERR3865360 | 28099_1_160 | CAB16C | DAS1267O | 2018-01-10 | 122604 |
ERR3865361 | 28099_1_161 | CAD12M | DAS1221F | 2018-04-25 | 77369 |
ERR3865362 | 28099_1_163 | CAD13W | DAS1351W | 2017-11-16 | 241155 |
ERR3865364 | 28099_1_165 | CAD14P | DAS1191W | 2018-04-16 | 213431 |
ERR3865365 | 28099_1_167 | CAG11D | DAS1393C | 2017-09-28 | 171175 |
ERR3865366 | 28099_1_168 | CAB16L | DAS1247W | 2018-01-25 | 242423 |
ERR3865367 | 28099_1_169 | CAC14I | DAS1446I | 2018-04-23 | 106468 |
ERR3865368 | 28099_1_171 | CAH10A | DAS1063B | 2017-08-08 | 234017 |
ERR3865369 | 28099_1_172 | CAB16G | DAS1256U | 2018-01-22 | 107893 |
ERR3865370 | 28099_1_173 | CAN10W | DAS1351W | 2018-04-19 | 179691 |
ERR3865371 | 28099_1_175 | CAI10A | DAS1043J | 2017-09-14 | 245850 |
ERR3865372 | 28099_1_176 | CAB16I | DAS12505 | 2018-01-24 | 128317 |
ERR3865373 | 28099_1_177 | CAF11G | DAS1366I | 2018-04-19 | 168673 |
ERR3865374 | 28099_1_179 | CAI10U | DAS13049 | 2018-01-17 | 189193 |
ERR3865375 | 28099_1_180 | CAB16N | DAS1245X | 2018-01-26 | 135699 |
ERR3865376 | 28099_1_181 | CAM114 | DAS1189K | 2018-03-29 | 126259 |
ERR3865378 | 28099_1_185 | CAK103 | DAS10100 | 2018-03-28 | 185911 |
ERR3865379 | 28099_1_187 | CAC11S | DAS1336U | 2017-11-08 | 241185 |
ERR3865380 | 28099_1_188 | CAD142 | DAS13145 | 2017-12-17 | 208414 |
ERR3865381 | 28099_1_189 | CAM10X | DAS1375G | 2018-01-12 | 350809 |
ERR3865382 | 28099_1_191 | CAD106 | DAS1157X | 2017-04-05 | 316533 |
ERR3865383 | 28099_1_192 | CAD144 | DAS1302D | 2018-01-04 | 91348 |
ERR3865384 | 28099_1_193 | CAN10M | DAS1097S | 2018-01-25 | 189130 |
ERR3865385 | 28099_1_195 | CAD13B | DAS1272U | 2018-01-17 | 123928 |
ERR3865386 | 28099_1_196 | CAE108 | DAS1158Y | 2017-06-16 | 140992 |
ERR3865388 | 28099_1_199 | CAG11C | DAS14105 | 2017-09-20 | 203867 |
ERR3865389 | 28099_1_200 | CAE10M | DAS1113N | 2017-09-13 | 129565 |
ERR3865391 | 28099_1_203 | CAH100 | DAS11377 | 2017-06-01 | 138545 |
ERR3865392 | 28099_1_204 | CAE112 | DAS1021V | 2017-11-06 | 113490 |
ERR3865393 | 28099_1_205 | CAC147 | DAS1185S | 2018-03-28 | 302145 |
ERR3865394 | 28099_1_207 | CAH11I | DAS1280U | 2017-12-19 | 207933 |
ERR3865395 | 28099_1_208 | CAE118 | DAS14121 | 2018-01-18 | 258902 |
ERR3865396 | 28099_1_209 | CAD13E | DAS1267O | 2018-02-14 | 135686 |
ERR3865397 | 28099_1_211 | CAI10T | DAS1284M | 2018-01-17 | 123342 |
ERR3865398 | 28099_1_212 | CAE119 | DAS1337S | 2018-01-31 | 189304 |
ERR3865399 | 28099_1_213 | CAE11A | DAS1335W | 2018-02-01 | 279711 |
ERR3865400 | 28099_1_214 | CAD13F | DAS1255W | 2018-02-19 | 57650 |
ERR3865401 | 28099_1_216 | CAM10W | DAS1373K | 2018-01-10 | 129880 |
ERR3865402 | 28099_1_217 | CAE11B | DAS1362Q | 2018-02-02 | 241791 |
ERR3865403 | 28099_1_218 | CAD13G | DAS1295G | 2018-02-22 | 106698 |
ERR3865404 | 28099_1_220 | CAC13B | DAS1270Y | 2018-01-12 | 272812 |
ERR3865405 | 28099_1_221 | CAE11S | DAS1351W | 2018-01-19 | 84290 |
ERR3865406 | 28099_1_222 | CAD13H | DAS1248U | 2018-02-22 | 315660 |
ERR3865407 | 28099_1_224 | CAC12Z | DAS1335W | 2017-11-08 | 373770 |
ERR3865408 | 28099_1_225 | CAE12S | DAS10657 | 2018-01-26 | 77502 |
ERR3865409 | 28099_1_226 | CAD13I | DAS1247W | 2018-02-23 | 110377 |
ERR3865410 | 28099_1_228 | CAD102 | DAS11633 | 2017-03-22 | 352189 |
ERR3865411 | 28099_1_229 | CAF10P | DAS10905 | 2018-01-10 | 106510 |
ERR3865412 | 28099_1_230 | CAD145 | DAS1249S | 2018-02-21 | 133224 |
ERR3865413 | 28099_1_232 | CAD13A | DAS13129 | 2018-01-12 | 253298 |
ERR3865414 | 28099_1_233 | CAF10Q | DAS10913 | 2018-01-10 | 150193 |
ERR3865415 | 28099_1_234 | CAD146 | DAS1300H | 2018-02-21 | 196536 |
ERR3865416 | 28099_1_236 | CAG127 | DAS1269K | 2018-01-09 | 101424 |
ERR3865417 | 28099_1_237 | CAF10T | DAS1070D | 2018-01-19 | 318942 |
ERR3865418 | 28099_1_238 | CAD147 | DAS1283O | 2018-02-21 | 415667 |
ERR3865419 | 28099_1_240 | CAH11G | DAS1309X | 2017-12-05 | 289248 |
ERR3865420 | 28099_1_241 | CAF10X | DAS1060H | 2018-02-02 | 107893 |
ERR3865421 | 28099_1_242 | CAD148 | DAS1230D | 2018-03-02 | 119814 |
ERR3865422 | 28099_1_244 | CAI10P | DAS1325X | 2017-12-14 | 137967 |
ERR3865423 | 28099_1_245 | CAG101 | DAS11449 | 2017-05-19 | 256893 |
ERR3865424 | 28099_1_246 | CAD149 | DAS1229X | 2018-03-07 | 94290 |
ERR3865425 | 28099_1_248 | CAL111 | DAS13798 | 2018-01-10 | 21381 |
ERR3865426 | 28099_1_249 | CAG109 | DAS10817 | 2017-07-06 | 184663 |
ERR3865427 | 28099_1_250 | CAD14D | DAS12265 | 2018-03-12 | 124931 |
ERR3865428 | 28099_1_252 | CAC139 | DAS1286I | 2017-12-18 | 192394 |
ERR3865429 | 28099_1_253 | CAG10H | DAS1062D | 2017-08-01 | 225270 |
ERR3865430 | 28099_1_254 | CAD14E | DAS12257 | 2018-03-12 | 260089 |
ERR3865431 | 28099_1_256 | CAC12B | DAS1369C | 2017-10-12 | 327400 |
ERR3865432 | 28099_1_257 | CAC13X | DAS12185 | 2018-03-01 | 303473 |
ERR3865433 | 28099_1_258 | CAD14G | DAS1246Y | 2018-03-16 | 142708 |
ERR3865434 | 28099_1_260 | CAD100 | DAS1168U | 2017-03-21 | 210017 |
ERR3865435 | 28099_1_261 | CAC13U | DAS1221F | 2018-02-20 | 106525 |
ERR3865437 | 28099_1_264 | CAD118 | DAS1329S | 2017-12-05 | 114137 |
ERR3865439 | 28099_1_266 | CAD14J | DAS1214D | 2018-03-28 | 127706 |
ERR3865440 | 28099_1_268 | CAD13L | DAS1032P | 2017-09-21 | 251015 |
ERR3865441 | 28099_1_269 | CAC13S | DAS12265 | 2018-02-19 | 269965 |
ERR3865442 | 28099_1_270 | CAD14K | DAS1207B | 2018-03-29 | 349578 |
ERR3865443 | 28099_1_272 | CAG126 | DAS1271W | 2018-01-04 | 269863 |
ERR3865444 | 28099_1_273 | CAC13R | DAS12273 | 2018-02-16 | 119768 |
ERR3865445 | 28099_1_274 | CAE11D | DAS1329S | 2018-02-07 | 358947 |
ERR3865447 | 28099_1_277 | CAC13Q | DAS1229X | 2018-02-15 | 254752 |
ERR3865448 | 28099_1_278 | CAE12U | DAS13145 | 2018-02-20 | 35464 |
ERR3865449 | 28099_1_280 | CAI10N | DAS13233 | 2017-12-12 | 114852 |
ERR3865450 | 28099_1_281 | CAC13P | DAS12353 | 2018-02-07 | 132859 |
ERR3865451 | 28099_1_282 | CAE12W | DAS1302D | 2018-03-02 | 128284 |
ERR3865452 | 28099_1_284 | CAK10P | DAS10665 | 2018-01-23 | 239674 |
ERR3865453 | 28099_1_285 | CAC13N | DAS12441 | 2018-02-07 | 109522 |
ERR3865454 | 28099_1_286 | CAE12X | DAS13225 | 2018-03-02 | 215977 |
ERR3865455 | 28099_1_288 | CAC11Y | DAS1035J | 2017-08-28 | 250545 |
ERR3865456 | 28099_1_289 | CAC13M | DAS1239W | 2018-02-07 | 114741 |
ERR3865459 | 28099_1_293 | CAC13L | DAS12409 | 2018-02-05 | 302110 |
ERR3865460 | 28099_1_294 | CAF10Z | DAS10489 | 2018-02-14 | 252313 |
ERR3865462 | 28099_1_297 | CAB184 | DAS1184U | 2018-03-26 | 114394 |
ERR3865464 | 28099_1_300 | CAD114 | DAS1078Y | 2017-08-28 | 220992 |
ERR3865465 | 28099_1_301 | CAD13Q | DAS1008P | 2017-10-10 | 139034 |
ERR3865466 | 28099_1_302 | CAB18U | DAS11713 | 2018-04-02 | 123488 |
ERR3865467 | 28099_1_303 | CAF113 | DAS11369 | 2018-02-22 | 106771 |
ERR3865468 | 28099_1_305 | CAG125 | DAS1280U | 2017-12-14 | 251920 |
ERR3865469 | 28099_1_306 | CAB18S | DAS1174Y | 2018-03-30 | 182798 |
ERR3865470 | 28099_1_307 | CAF114 | DAS1034L | 2018-02-23 | 340422 |
ERR3865471 | 28099_1_309 | CAH119 | DAS1326Y | 2017-11-14 | 247921 |
ERR3865473 | 28099_1_311 | CAF115 | DAS1036H | 2018-02-23 | 91978 |
ERR3865474 | 28099_1_313 | CAI10M | DAS1328U | 2017-12-05 | 164374 |
ERR3865475 | 28099_1_314 | CAB18A | DAS1178Q | 2018-03-28 | 211833 |
ERR3865476 | 28099_1_315 | CAL11A | DAS1385C | 2018-03-07 | 134843 |
ERR3865477 | 28099_1_317 | CAJ10L | DAS14105 | 2018-01-15 | 133224 |
ERR3865478 | 28099_1_318 | CAB189 | DAS1179O | 2018-03-27 | 241148 |
ERR3865479 | 28099_1_319 | CAF11A | DAS10020 | 2018-03-13 | 146049 |
ERR3865480 | 28099_1_321 | CAB16R | DAS12409 | 2018-01-29 | 256139 |
ERR3865481 | 28099_1_322 | CAB188 | DAS11801 | 2018-03-27 | 259159 |
ERR3865482 | 28099_1_323 | CAF11B | DAS1024P | 2018-03-15 | 223218 |
ERR3865483 | 28099_1_325 | CAC13J | DAS1247W | 2018-02-02 | 216645 |
ERR3865484 | 28099_1_326 | CAB183 | DAS1185S | 2018-03-23 | 241097 |
ERR3865485 | 28099_1_327 | CAF11C | DAS14009 | 2018-03-27 | 242423 |
ERR3865486 | 28099_1_329 | CAC134 | DAS13129 | 2017-11-28 | 37866 |
ERR3865487 | 28099_1_330 | CAB182 | DAS1191W | 2018-03-19 | 145120 |
ERR3865488 | 28099_1_331 | CAG11J | DAS1237X | 2018-01-30 | 143682 |
ERR3865489 | 28099_1_333 | CAD10V | DAS10809 | 2017-08-08 | 222678 |
ERR3865490 | 28099_1_334 | CAB181 | DAS1192U | 2018-03-16 | 241614 |
ERR3865491 | 28099_1_335 | CAG129 | DAS1223B | 2018-02-13 | 337487 |
ERR3865492 | 28099_1_337 | CAD13T | DAS13990 | 2017-10-23 | 289768 |
ERR3865493 | 28099_1_338 | CAB180 | DAS1193S | 2018-03-16 | 258902 |
ERR3865494 | 28099_1_339 | CAG12A | DAS1222D | 2018-02-13 | 141680 |
ERR3865495 | 28099_1_341 | CAG123 | DAS1301F | 2017-12-05 | 106444 |
ERR3865496 | 28099_1_342 | CAB17W | DAS1199G | 2018-03-12 | 216209 |
ERR3865497 | 28099_1_343 | CAI10Y | DAS1271W | 2018-02-02 | 108505 |
ERR3865498 | 28099_1_345 | CAH117 | DAS1356M | 2017-10-30 | 89562 |
ERR3865499 | 28099_1_346 | CAB17U | DAS1204H | 2018-03-08 | 139298 |
ERR3865500 | 28099_1_347 | CAI10Z | DAS1237X | 2018-02-28 | 17737 |
ERR3865501 | 28099_1_349 | CAI10J | DAS1393C | 2017-11-17 | 205506 |
ERR3865502 | 28099_1_350 | CAB17S | DAS1206D | 2018-03-07 | 234794 |
ERR3865503 | 28099_1_351 | CAI111 | DAS1223B | 2018-03-15 | 295634 |
ERR3865504 | 28099_1_353 | CAJ10E | DAS1036H | 2018-01-12 | 151773 |
ERR3865505 | 28099_1_354 | CAB17R | DAS1207B | 2018-03-06 | 348138 |
ERR3865506 | 28099_1_355 | CAJ10G | DAS1334Y | 2018-02-06 | 197855 |
ERR3865507 | 28099_1_357 | CAB15T | DAS1302D | 2017-12-04 | 302820 |
ERR3865508 | 28099_1_358 | CAB17Q | DAS1214D | 2018-02-27 | 93815 |
ERR3865509 | 28099_1_359 | CAJ10H | DAS1328U | 2018-02-06 | 110377 |
ERR3865510 | 28099_1_361 | CAB15R | DAS13145 | 2017-11-20 | 137129 |
ERR3865511 | 28099_1_362 | CAB17M | DAS12185 | 2018-02-22 | 132798 |
ERR3865512 | 28099_1_363 | CAJ10I | DAS13233 | 2018-02-14 | 316535 |
ERR3865513 | 28099_1_365 | CAB15P | DAS1319W | 2017-11-15 | 233352 |
ERR3865514 | 28099_1_366 | CAB171 | DAS12193 | 2018-02-19 | 97252 |
ERR3865515 | 28099_1_367 | CAJ10J | DAS13137 | 2018-03-02 | 258902 |
ERR3865517 | 28099_1_370 | CAB170 | DAS1221F | 2018-02-13 | 276744 |
ERR3865518 | 28099_1_371 | CAJ10K | DAS1325X | 2018-03-02 | 222200 |
ERR3865519 | 28099_1_373 | CAB165 | DAS13241 | 2017-11-13 | 90503 |
ERR3865520 | 28099_1_374 | CAB16Z | DAS12257 | 2018-02-12 | 244663 |
ERR3865521 | 28099_1_375 | CAJ10N | DAS1280U | 2018-03-16 | 267122 |
ERR3865522 | 28099_1_377 | CAB164 | DAS1329S | 2017-11-07 | 131839 |
ERR3865523 | 28099_1_378 | CAB16Y | DAS12265 | 2018-02-12 | 241178 |
ERR3865524 | 28099_1_379 | CAJ10P | DAS1309X | 2018-03-16 | 214745 |
ERR3865525 | 28099_1_381 | CAB163 | DAS13305 | 2017-11-07 | 135498 |
ERR3865526 | 28099_1_382 | CAB16X | DAS12273 | 2018-02-09 | 286569 |
ERR3865527 | 28099_1_383 | CAK10R | DAS10673 | 2018-02-02 | 223705 |
ERR3865528 | 28099_2_3 | CAK10S | DAS1069X | 2018-02-02 | 129880 |
ERR3865529 | 28099_2_8 | CAK10U | DAS1425S | 2018-03-16 | 136558 |
ERR3865530 | 28099_2_12 | CAL115 | DAS1386A | 2018-02-15 | 266557 |
ERR3865531 | 28099_2_16 | CAL116 | DAS1384E | 2018-02-27 | 222834 |
ERR3865533 | 28099_2_24 | CAL11B | DAS1189K | 2018-03-21 | 196861 |
ERR3865535 | 28099_2_32 | CAL11C | DAS1188M | 2018-03-22 | 185159 |
ERR3865536 | 28099_2_36 | CAH11K | DAS1237X | 2018-02-14 | 106430 |
ERR3865537 | 28099_2_40 | CAI10V | DAS1280U | 2018-01-18 | 261251 |
ERR3865538 | 28099_2_44 | CAM110 | DAS13798 | 2018-02-07 | 98492 |
ERR3865539 | 28099_2_48 | CAM112 | DAS1382I | 2018-02-28 | 138859 |
ERR3865541 | 28099_2_56 | CAN107 | DAS1087W | 2018-02-19 | 268503 |
ERR3865542 | 28099_2_60 | CAN108 | DAS1016P | 2018-03-26 | 137198 |
ERR3865543 | 28099_2_64 | CAN10Q | DAS11393 | 2018-02-22 | 122362 |
ERR3865546 | 28099_2_76 | CAC13Z | DAS1214D | 2018-03-06 | 106972 |
ERR3865547 | 28099_2_80 | CAC140 | DAS12177 | 2018-03-09 | 185396 |
ERR3865548 | 28099_2_84 | CAC141 | DAS1206D | 2018-03-14 | 131868 |
ERR3865549 | 28099_2_88 | CAC132 | DAS13241 | 2017-11-20 | 143589 |
ERR3865550 | 28099_2_92 | CAB190 | DAS1437K | 2018-04-11 | 185283 |
ERR3865551 | 28099_2_96 | CAB19F | DAS14766 | 2018-05-15 | 210017 |
ERR3865552 | 28099_2_97 | CAC14N | DAS1464E | 2018-05-16 | 130061 |
ERR3865553 | 28099_2_101 | CAL11K | DAS14678 | 2018-05-15 | 103261 |
ERR3865554 | 28099_2_105 | CAC14P | DAS1463G | 2018-05-16 | 246728 |
ERR3865555 | 28099_2_109 | CAC14T | DAS1460M | 2018-05-17 | 138006 |
ERR3865556 | 28099_2_113 | CAC15X | DAS1470I | 2018-05-17 | 108619 |
ERR3865557 | 28099_2_117 | CAD11Z | DAS1458A | 2018-05-17 | 218210 |
ERR3865558 | 28099_2_121 | CAE14Q | DAS12257 | 2018-05-16 | 150141 |
ERR3865559 | 28099_2_126 | CAK171 | DAS13233 | 2018-05-15 | 222804 |
ERR3865560 | 28099_2_130 | CAC12H | DAS14758 | 2018-05-22 | 128554 |
ERR3865562 | 28099_2_138 | CAE135 | DAS1248U | 2018-05-23 | 302346 |
ERR3865563 | 28099_2_142 | CAF167 | NA | NA | 91203 |
ERR3865564 | 28099_2_146 | CAF16Y | DAS13145 | 2018-05-21 | 137137 |
ERR3865565 | 28099_2_150 | CAE136 | DAS12441 | 2018-05-24 | 131244 |
ERR3865566 | 28099_2_154 | CAB18K | DAS14782 | 2018-05-22 | 299200 |
ERR3865567 | 28099_2_158 | CAB19H | DAS14854 | 2018-06-04 | 158161 |
ERR3865568 | 28099_2_162 | CAB18R | DAS14846 | 2018-06-04 | 210234 |
ERR3865569 | 28099_2_166 | CAJ10T | DAS1223B | 2018-05-29 | 144289 |
ERR3865570 | 28099_2_170 | CAF158 | DAS13321 | 2018-05-29 | 309684 |
ERR3865571 | 28099_2_174 | CAE11Q | DAS1247W | 2018-05-30 | 261235 |
ERR3865572 | 28099_2_178 | CAC14Q | DAS14782 | 2018-05-30 | 36155 |
ERR3865573 | 28099_2_182 | CAD11B | DAS1464E | 2018-06-06 | 268461 |
ERR3865574 | 28099_2_186 | CAD123 | DAS1440U | 2018-06-05 | 287626 |
ERR3865575 | 28099_2_190 | CAE137 | DAS1246Y | 2018-06-05 | 188931 |
ERR3865576 | 28099_2_194 | CAF170 | DAS1295G | 2018-06-06 | 209388 |
ERR3865577 | 28099_2_198 | CAE11Q | DAS1247W | 2018-05-30 | 213668 |
ERR3865579 | 28099_2_206 | CAD12U | DAS1474A | 2018-06-12 | 106504 |
ERR3865580 | 28099_2_210 | CAE11U | DAS1191W | 2018-06-14 | 136422 |
ERR3865581 | 28099_2_215 | CAK10X | DAS1280U | 2018-06-14 | 302246 |
ERR3865582 | 28099_2_219 | CAF15A | DAS13129 | 2018-06-12 | 277254 |
ERR3865583 | 28099_2_223 | CAC14V | DAS14862 | 2018-06-12 | 30203 |
ERR3865584 | 28099_2_227 | CAB1A7 | DAS14918 | 2018-06-14 | 121207 |
ERR3865585 | 28099_2_231 | CAD12W | DAS1239W | 2018-06-13 | 341392 |
ERR3865586 | 28099_2_235 | CAD12V | DAS1446I | 2018-06-12 | 261258 |
ERR3865587 | 28099_2_239 | CAB19J | DAS14870 | 2018-06-13 | 92305 |
ERR3865588 | 28099_2_243 | CAF11D | DAS14121 | 2018-03-29 | 261095 |
ERR3865589 | 28099_2_247 | CAC14C | DAS11713 | 2018-04-09 | 273630 |
ERR3865590 | 28099_2_251 | CAD14L | DAS1199G | 2018-04-09 | 30782 |
ERR3865591 | 28099_2_255 | CAF11E | DAS1014T | 2018-04-09 | 220952 |
ERR3865592 | 28099_2_259 | CAC14A | DAS1177S | 2018-04-04 | 143882 |
ERR3865593 | 28099_2_263 | CAC14B | DAS1178Q | 2018-04-04 | 125913 |
ERR3865598 | 28099_2_283 | CAE11I | DAS1295G | 2018-03-06 | 114137 |
ERR3865599 | 28099_2_287 | CAK101 | DAS1011Z | 2018-03-23 | 302107 |
ERR3865600 | 28099_2_291 | CAB11D | DAS1123J | 2017-04-24 | 135086 |
ERR3865601 | 28099_2_295 | CAE12Q | DAS1008P | 2017-12-14 | 242301 |
ERR3865602 | 28099_2_299 | CAH11E | DAS1325X | 2017-11-21 | 309387 |
ERR3865603 | 28099_2_304 | CAK10Q | DAS10921 | 2018-01-29 | 143821 |
ERR3865604 | 28099_2_308 | CAH10L | DAS1269K | 2018-01-19 | 51331 |
ERR3865606 | 28099_2_316 | CAC14F | DAS11705 | 2018-04-11 | 246312 |
ERR3865607 | 28099_2_320 | CAC148 | DAS1182Y | 2018-04-03 | 181321 |
ERR6057876 | 34154_7_3 | CAC159 | DAS1519G | 2018-07-31 | 398104 |
ERR6057877 | 34154_7_4 | CAE11S | DAS1351W | 2018-01-19 | 815040 |
ERR6057878 | 34154_7_5 | CAD1AI | DAS1510Y | 2018-07-31 | 416814 |
ERR6057879 | 34154_7_6 | CAE12H | DAS1028H | 2017-11-28 | 578196 |
ERR6057880 | 34154_7_8 | CAB11B | DAS1120P | 2017-04-18 | 241627 |
ERR6057881 | 34154_7_10 | CAB139 | DAS1029F | 2017-08-29 | 190680 |
ERR6057882 | 34154_7_11 | CAE15W | DAS12177 | 2018-07-30 | 374232 |
ERR6057883 | 34154_7_12 | CAE12L | DAS1029F | 2017-12-06 | 219836 |
ERR6057884 | 34154_7_13 | CAD1AL | DAS1519G | 2018-08-06 | 508183 |
ERR6057885 | 34154_7_14 | CAE12R | DAS1014T | 2017-12-18 | 482415 |
ERR6057886 | 34154_7_16 | CAB159 | DAS14009 | 2017-09-26 | 661690 |
ERR6057887 | 34154_7_18 | CAB15B | DAS13886 | 2017-10-02 | 326635 |
ERR6057888 | 34154_7_19 | CAH11E | DAS1325X | 2017-11-21 | 532297 |
ERR6057889 | 34154_7_20 | CAE12U | DAS13145 | 2018-02-20 | 203429 |
ERR6057890 | 34154_7_22 | CAB15M | DAS1354Q | 2017-10-18 | 280122 |
ERR6057891 | 34154_7_23 | CAE12V | DAS13321 | 2018-02-21 | 361647 |
ERR6057892 | 34154_7_24 | CAB13W | NA | NA | 811788 |
ERR6057893 | 34154_7_25 | CAB15S | DAS13129 | 2017-11-21 | 441618 |
ERR6057894 | 34154_7_26 | CAF102 | DAS11609 | 2017-09-01 | 292152 |
ERR6057895 | 34154_7_27 | CAB163 | DAS13305 | 2017-11-07 | 372362 |
ERR6057896 | 34154_7_30 | CAB15V | DAS1295G | 2017-12-06 | 377741 |
ERR6057897 | 34154_7_31 | CAF103 | DAS11545 | 2017-09-06 | 1042763 |
ERR6057898 | 34154_7_32 | CAI19F | DAS1526I | 2018-08-21 | 453707 |
ERR6057899 | 34154_7_33 | CAF109 | DAS1140H | 2017-10-02 | 579186 |
ERR6057901 | 34154_7_36 | CAB15W | DAS1296E | 2017-12-06 | 454335 |
ERR6057902 | 34154_7_38 | CAB166 | DAS13225 | 2017-11-14 | 410104 |
ERR6057903 | 34154_7_39 | CAF10C | DAS1120P | 2017-10-18 | 758176 |
ERR6057904 | 34154_7_40 | CAG19R | DAS1576Z | 2018-08-29 | 320677 |
ERR6057905 | 34154_7_41 | CAF10I | DAS1126D | 2017-11-22 | 639936 |
ERR6057906 | 34154_7_42 | CAE1AJ | DAS1464E | 2018-08-28 | 424465 |
ERR6057907 | 34154_7_44 | CAB16A | DAS1272U | 2017-12-20 | 169754 |
ERR6057908 | 34154_7_46 | CAB16G | DAS1256U | 2018-01-22 | 1464071 |
ERR6057909 | 34154_7_47 | CAF10J | DAS1096U | 2017-12-04 | 472256 |
ERR6057910 | 34154_7_48 | CAF19Y | DAS1214D | 2018-08-28 | 203827 |
ERR6057911 | 34154_7_49 | CAE19Z | DAS1434Q | 2018-09-06 | 1042515 |
ERR6057912 | 34154_7_50 | CAF10K | DAS1111R | 2017-12-06 | 471152 |
ERR6057913 | 34154_7_52 | CAB16N | DAS1245X | 2018-01-26 | 407840 |
ERR6057914 | 34154_7_54 | CAB16R | DAS12409 | 2018-01-29 | 358180 |
ERR6057915 | 34154_7_55 | CAL188 | DAS1589P | 2018-09-19 | 317618 |
ERR6057916 | 34154_7_56 | CAF10M | DAS1113N | 2017-12-14 | 193216 |
ERR6057917 | 34154_7_58 | CAC105 | DAS11641 | 2017-03-09 | 373601 |
ERR6057918 | 34154_7_59 | CAE1B6 | DAS1489X | 2018-09-14 | 431290 |
ERR6057919 | 34154_7_60 | CAF10S | DAS1100X | 2018-01-18 | 324706 |
ERR6057921 | 34154_7_62 | CAI1AT | DAS1576Z | 2018-09-18 | 408198 |
ERR6057922 | 34154_7_63 | CAF113 | DAS11369 | 2018-02-22 | 344926 |
ERR6057925 | 34154_7_68 | CAF11A | DAS10020 | 2018-03-13 | 204836 |
ERR6057926 | 34154_7_69 | CAI191 | DAS1568Z | 2018-09-28 | 377614 |
ERR6057927 | 34154_7_70 | CAF11C | DAS14009 | 2018-03-27 | 154943 |
ERR6057929 | 34154_7_74 | CAC10Q | DAS1126D | 2017-05-09 | 209640 |
ERR6057930 | 34154_7_75 | CAH18C | DAS1579T | 2018-09-13 | 358303 |
ERR6057931 | 34154_7_76 | CAG104 | DAS1113N | 2017-06-09 | 602453 |
ERR6057932 | 34154_7_77 | CAG1A1 | DAS1598N | 2018-09-27 | 272185 |
ERR6057933 | 34154_7_78 | CAG106 | DAS10841 | 2017-06-28 | 188445 |
ERR6057934 | 34154_7_80 | CAC10Z | DAS1116H | 2017-06-27 | 472259 |
ERR6057936 | 34154_7_83 | CAI193 | DAS15806 | 2018-10-05 | 718728 |
ERR6057937 | 34154_7_84 | CAG10G | DAS1063B | 2017-07-31 | 169243 |
ERR6057938 | 34154_7_86 | CAC11A | DAS10681 | 2017-08-07 | 381605 |
ERR6057939 | 34154_7_87 | CAF1AS | DAS1169S | 2018-10-05 | 403059 |
ERR6057940 | 34154_7_88 | CAG118 | DAS1011Z | 2017-09-08 | 239958 |
ERR6057941 | 34154_7_89 | CAC11G | DAS10489 | 2017-08-29 | 406592 |
ERR6057942 | 34154_7_90 | CAF1AS | DAS1169S | 2018-10-05 | 427666 |
ERR6057943 | 34154_7_91 | CAG11F | DAS1390I | 2017-10-03 | 474397 |
ERR6057944 | 34154_7_94 | CAC11K | DAS1008P | 2017-09-18 | 362711 |
ERR6057945 | 34154_7_95 | CAM1AC | DAS15590 | 2018-10-09 | 501204 |
ERR6057946 | 34154_7_96 | CAG120 | DAS13073 | 2017-11-29 | 410121 |
ERR6057947 | 34154_7_97 | CAE1BG | DAS14774 | 2018-10-12 | 577547 |
ERR6057948 | 34154_7_98 | CAG12A | DAS1222D | 2018-02-13 | 483580 |
ERR6057949 | 34154_7_100 | CAC11N | DAS1360U | 2017-10-18 | 668442 |
ERR6057950 | 34154_7_102 | CAC11P | DAS1354Q | 2017-10-25 | 190918 |
ERR6057951 | 34154_7_103 | CAE1BH | DAS1460M | 2018-10-12 | 579329 |
ERR6057952 | 34154_7_104 | CAH101 | DAS1113N | 2017-06-16 | 331270 |
ERR6057953 | 34154_7_105 | CAH104 | DAS10825 | 2017-07-07 | 182873 |
ERR6057954 | 34154_7_106 | CAM16Z | DAS1584Z | 2018-11-02 | 442852 |
ERR6057955 | 34154_7_108 | CAC11Q | DAS1351W | 2017-10-26 | 622199 |
ERR6057956 | 34154_7_110 | CAC11S | DAS1336U | 2017-11-08 | 855851 |
ERR6057958 | 34154_7_112 | CAM11R | DAS1503W | 2018-07-26 | 702061 |
ERR6057961 | 34154_7_116 | CAC11W | DAS10593 | 2017-08-10 | 298228 |
ERR6057962 | 34154_7_118 | CAC11Y | DAS1035J | 2017-08-28 | 367382 |
ERR6057963 | 34154_7_119 | CAH10K | DAS1390I | 2017-10-10 | 294596 |
ERR6057965 | 34154_7_122 | CAC127 | DAS10020 | 2017-09-20 | 326754 |
ERR6057966 | 34154_7_123 | CAH11K | DAS1237X | 2018-02-14 | 208170 |
ERR6057968 | 34154_7_125 | CAC12B | DAS1369C | 2017-10-12 | 630789 |
ERR6057971 | 34154_7_130 | CAC12C | DAS1366I | 2017-10-13 | 262748 |
ERR6057972 | 34154_7_131 | CAI101 | DAS1113N | 2017-07-11 | 602457 |
ERR6057975 | 34154_7_134 | CAI105 | DAS1079W | 2017-08-10 | 363110 |
ERR6057976 | 34154_7_136 | CAC133 | DAS13145 | 2017-11-27 | 280266 |
ERR6057977 | 34154_7_138 | CAC134 | DAS13129 | 2017-11-28 | 222947 |
ERR6057979 | 34154_7_140 | CAI10C | DAS1036H | 2017-09-21 | 794807 |
ERR6057981 | 34154_7_142 | CAI10E | DAS1005V | 2017-10-10 | 424807 |
ERR6057982 | 34154_7_144 | CAC137 | DAS1300H | 2017-12-12 | 209137 |
ERR6057983 | 34154_7_146 | CAC13C | DAS1259O | 2018-01-23 | 630958 |
ERR6057985 | 34154_7_148 | CAI10H | DAS14105 | 2017-11-01 | 397227 |
ERR6057986 | 34154_7_150 | CAC13D | DAS1255W | 2018-01-29 | 185957 |
ERR6057988 | 34154_7_152 | CAI10J | DAS1393C | 2017-11-17 | 424465 |
ERR6057989 | 34154_7_153 | CAC13G | DAS1246Y | 2018-02-02 | 103010 |
ERR6057991 | 34154_7_155 | CAI10S | DAS13137 | 2018-01-10 | 720261 |
ERR6057992 | 34154_7_158 | CAC13I | DAS12505 | 2018-02-02 | 266644 |
ERR6057994 | 34154_7_160 | CAI10U | DAS13049 | 2018-01-17 | 358687 |
ERR6057996 | 34154_7_162 | CAI10V | DAS1280U | 2018-01-18 | 584309 |
ERR6057997 | 34154_7_164 | CAD100 | DAS1168U | 2017-03-21 | 326092 |
ERR6057998 | 34154_7_166 | CAD101 | DAS1166Y | 2017-03-21 | 197588 |
ERR6058000 | 34154_7_168 | CAI10W | DAS13073 | 2018-01-18 | 713824 |
ERR6058003 | 34154_7_172 | CAD107 | DAS11545 | 2017-04-06 | 380055 |
ERR6058004 | 34154_7_174 | CAD10C | DAS1140H | 2017-05-02 | 185030 |
ERR6058006 | 34154_7_176 | CAJ10A | DAS1005V | 2017-12-12 | 363131 |
ERR6058008 | 34154_7_178 | CAJ10D | DAS1393C | 2018-01-12 | 396979 |
ERR6058009 | 34154_7_179 | CAD10F | DAS1120P | 2017-05-16 | 274664 |
ERR6058011 | 34154_7_183 | CAK10Q | DAS10921 | 2018-01-29 | 159382 |
ERR6058012 | 34154_7_184 | CAD10N | DAS1108H | 2017-07-10 | 1457444 |
ERR6058013 | 34154_7_185 | CAD10V | DAS10809 | 2017-08-08 | 333184 |
ERR6058016 | 34154_7_189 | CAL108 | DAS1098Q | 2017-06-19 | 715588 |
ERR6058018 | 34154_7_191 | CAB16X | DAS12273 | 2018-02-09 | 188298 |
ERR6058019 | 34154_7_194 | CAL111 | DAS13798 | 2018-01-10 | 204640 |
ERR6058022 | 34154_7_197 | CAL11A | DAS1385C | 2018-03-07 | 428941 |
ERR6058024 | 34154_7_199 | CAB16Z | DAS12257 | 2018-02-12 | 170378 |
ERR6058025 | 34154_7_202 | CAL11C | DAS1188M | 2018-03-22 | 158603 |
ERR6058027 | 34154_7_204 | CAB170 | DAS1221F | 2018-02-13 | 713297 |
ERR6058028 | 34154_7_205 | CAM105 | DAS1103R | 2017-07-10 | 94969 |
ERR6058030 | 34154_7_207 | CAB17M | DAS12185 | 2018-02-22 | 268948 |
ERR6058031 | 34154_7_210 | CAM108 | DAS1098Q | 2017-07-17 | 383706 |
ERR6058033 | 34154_7_212 | CAB17N | DAS12169 | 2018-02-26 | 238327 |
ERR6058034 | 34154_7_213 | CAB17P | DAS12177 | 2018-02-26 | 367714 |
ERR6058036 | 34154_7_216 | CAM109 | DAS1089S | 2017-08-08 | 817205 |
ERR6058038 | 34154_7_218 | CAM10E | DAS1097S | 2017-08-23 | 580601 |
ERR6058039 | 34154_7_219 | CAB17W | DAS1199G | 2018-03-12 | 463964 |
ERR6058040 | 34154_7_221 | CAB180 | DAS1193S | 2018-03-16 | 194692 |
ERR6058042 | 34154_7_224 | CAM10J | DAS1051J | 2017-09-18 | 380637 |
ERR6058044 | 34154_7_226 | CAM10T | DAS1417S | 2017-12-06 | 579329 |
ERR6058045 | 34154_7_227 | CAB183 | DAS1185S | 2018-03-23 | 405607 |
ERR6058047 | 34154_7_231 | CAN100 | DAS1130L | 2017-10-30 | 185528 |
ERR6058048 | 34154_7_232 | CAB188 | DAS11801 | 2018-03-27 | 433954 |
ERR6058050 | 34154_7_234 | CAC147 | DAS1185S | 2018-03-28 | 512304 |
ERR6058051 | 34154_7_235 | CAC13L | DAS12409 | 2018-02-05 | 270793 |
ERR6058053 | 34154_7_239 | CAF16Y | DAS13145 | 2018-05-21 | 222947 |
ERR6058054 | 34154_7_240 | CAC13R | DAS12273 | 2018-02-16 | 209516 |
ERR6058056 | 34154_7_242 | CAF1AJ | DAS1199G | 2018-09-12 | 362712 |
ERR6058059 | 34154_7_247 | CAF11D | DAS14121 | 2018-03-29 | 171469 |
ERR6058060 | 34154_7_248 | CAC13T | DAS12257 | 2018-02-19 | 431267 |
ERR6058061 | 34154_7_249 | CAC13X | DAS12185 | 2018-03-01 | 698084 |
ERR6058063 | 34154_7_252 | CAC14A | DAS1177S | 2018-04-04 | 715600 |
ERR6058065 | 34154_7_254 | CAC14C | DAS11713 | 2018-04-09 | 529663 |
ERR6058066 | 34154_7_255 | CAC13Y | DAS12169 | 2018-03-06 | 405560 |
ERR6058068 | 34154_7_259 | CAF11G | DAS1366I | 2018-04-19 | 333667 |
ERR6058069 | 34154_7_260 | CAC143 | DAS1192U | 2018-03-22 | 630957 |
ERR6058071 | 34154_7_262 | CAD12F | DAS12185 | 2018-04-19 | 326092 |
ERR6058072 | 34154_7_263 | CAD110 | DAS11369 | 2017-08-17 | 437143 |
ERR6058074 | 34154_7_267 | CAD14M | DAS1192U | 2018-04-13 | 643697 |
ERR6058075 | 34154_7_268 | CAD12Z | DAS1055B | 2017-09-01 | 292764 |
ERR6058076 | 34154_7_269 | CAN10W | DAS1351W | 2018-04-19 | 371971 |
ERR6058078 | 34154_7_271 | CAD134 | DAS1029F | 2017-09-27 | 448219 |
ERR6058079 | 34154_7_274 | CAC14I | DAS1446I | 2018-04-23 | 356539 |
ERR6058081 | 34154_7_276 | CAD135 | DAS1021V | 2017-10-03 | 609308 |
ERR6058082 | 34154_7_277 | CAD137 | DAS1014T | 2017-10-06 | 351289 |
ERR6058083 | 34154_7_279 | CAC14G | DAS1183W | 2018-04-11 | 510163 |
ERR6058085 | 34154_7_281 | CAB194 | DAS1446I | 2018-04-16 | 393764 |
ERR6058087 | 34154_7_283 | CAD13B | DAS1272U | 2018-01-17 | 362707 |
ERR6058089 | 34154_7_287 | CAB195 | DAS1447G | 2018-04-16 | 164351 |
ERR6058091 | 34154_7_289 | CAD12I | DAS1177S | 2018-04-25 | 510807 |
ERR6058093 | 34154_7_291 | CAD13G | DAS1295G | 2018-02-22 | 365644 |
ERR6058094 | 34154_7_294 | CAD11T | DAS1182Y | 2018-04-24 | 915814 |
ERR6058096 | 34154_7_296 | CAD13I | DAS1247W | 2018-02-23 | 280593 |
ERR6058098 | 34154_7_298 | CAE12Z | DAS1262Y | 2018-04-25 | 189067 |
ERR6058099 | 34154_7_299 | CAD13J | DAS10489 | 2017-09-18 | 184552 |
ERR6058101 | 34154_7_303 | CAD11U | DAS11713 | 2018-04-30 | 969325 |
ERR6058102 | 34154_7_304 | CAD13L | DAS1032P | 2017-09-21 | 1004795 |
ERR6058103 | 34154_7_306 | CAJ10S | DAS1326Y | 2018-04-30 | 358237 |
ERR6058104 | 34154_7_307 | CAD13Q | DAS1008P | 2017-10-10 | 186567 |
ERR6058106 | 34154_7_312 | CAD13U | DAS1366I | 2017-11-03 | 632067 |
ERR6058107 | 34154_7_313 | CAD13Y | DAS1337S | 2017-11-28 | 180607 |
ERR6058108 | 34154_7_316 | CAD11X | DAS1434Q | 2018-05-07 | 497931 |
ERR6058109 | 34154_7_317 | CAL11H | DAS1452M | 2018-05-03 | 375860 |
ERR6058110 | 34154_7_318 | CAD142 | DAS13145 | 2017-12-17 | 280266 |
ERR6058111 | 34154_7_322 | CAB19D | DAS1474A | 2018-05-14 | 532790 |
ERR6058112 | 34154_7_323 | CAD144 | DAS1302D | 2018-01-04 | 467932 |
ERR6058113 | 34154_7_324 | CAC15X | DAS1470I | 2018-05-17 | 388030 |
ERR6058114 | 34154_7_325 | CAD149 | DAS1229X | 2018-03-07 | 378141 |
ERR6058115 | 34154_7_330 | CAC14N | DAS1464E | 2018-05-16 | 184786 |
ERR6058116 | 34154_7_331 | CAD14D | DAS12265 | 2018-03-12 | 549144 |
ERR6058117 | 34154_7_332 | CAC14U | DAS14766 | 2018-05-22 | 1346685 |
ERR6058118 | 34154_7_333 | CAD14E | DAS12257 | 2018-03-12 | 326092 |
ERR6058119 | 34154_7_338 | CAE135 | DAS1248U | 2018-05-23 | 276747 |
ERR6058120 | 34154_7_339 | CAD14F | DAS12353 | 2018-03-14 | 325458 |
ERR6058121 | 34154_7_340 | CAD14G | DAS1246Y | 2018-03-16 | 472254 |
ERR6058122 | 34154_7_343 | CAF158 | DAS13321 | 2018-05-29 | 339454 |
ERR6058123 | 34154_7_344 | CAE11Q | DAS1247W | 2018-05-30 | 357212 |
ERR6058124 | 34154_7_345 | CAD14H | DAS12505 | 2018-03-16 | 170780 |
ERR6058125 | 34154_7_348 | CAD14I | DAS12177 | 2018-03-23 | 407535 |
ERR6058126 | 34154_7_351 | CAE11N | DAS1230D | 2018-05-29 | 1106021 |
ERR6058127 | 34154_7_352 | CAB1AA | DAS14950 | 2018-06-18 | 576128 |
ERR6058128 | 34154_7_353 | CAE105 | DAS11545 | 2017-06-06 | 355308 |
ERR6058130 | 34154_7_359 | CAE108 | DAS1158Y | 2017-06-16 | 1063606 |
ERR6058131 | 34154_7_360 | CAD124 | DAS14774 | 2018-06-21 | 630096 |
ERR6058132 | 34154_7_361 | CAE10T | DAS1093X | 2017-10-06 | 361623 |
ERR6058133 | 34154_7_366 | CAD125 | DAS1480E | 2018-06-27 | 512621 |
ERR6058134 | 34154_7_367 | CAE10V | DAS1100X | 2017-10-18 | 289129 |
ERR6058135 | 34154_7_368 | CAB1AG | DAS1507O | 2018-07-05 | 290816 |
ERR6058136 | 34154_7_369 | CAE10X | DAS1070D | 2017-10-18 | 328154 |
ERR6058137 | 34154_7_374 | CAC156 | DAS1506Q | 2018-07-12 | 465751 |
ERR6058138 | 34154_7_375 | CAE11A | DAS1335W | 2018-02-01 | 280704 |
ERR6058139 | 34154_7_376 | CAE11I | DAS1295G | 2018-03-06 | 377740 |
ERR6058140 | 34154_7_378 | CAF15D | DAS13225 | 2018-07-18 | 668781 |
ERR6058141 | 34154_7_379 | CAC158 | DAS1511W | 2018-07-18 | 371955 |
ERR6058142 | 34154_7_380 | CAE11K | DAS1286I | 2018-03-14 | 312639 |
if (write_figs) {
write_csv(
btESBL_sequence_sample_metadata %>%
mutate(date_of_collection = data_date) %>%
filter(species == "E. coli") %>%
select(
accession,
lane,
supplier_name,
pid,
date_of_collection,
N50,
Cluster,
ST,
ecoli_phylogroup,
ecoli_pathotype
) %>%
left_join(
btESBL_qrdr_mutations %>%
filter(genus == "E. coli") %>%
select(-genus) %>%
semi_join(
btESBL_CARD_qrdr_mutations,
by = c(
"variant" = "variant",
"gene" = "gene"
)
) %>%
pivot_wider(,
id_cols = lane,
names_from = gene,
values_from = variant,
values_fn = function(x) paste0(x, collapse = ",")
)
) %>%
mutate(ecoli_pathotype = if_else(is.na(ecoli_pathotype),
"none_identfied",
ecoli_pathotype
)) %>%
mutate(across(
matches("gyr|par"),
~ if_else(is.na(.x), "no", .x)
)) %>%
left_join(
btESBL_amrgenes %>%
select(-genus) %>%
arrange(ref_seq) %>%
pivot_wider(
id_cols = lane, names_from = ref_seq,
values_from = ref_seq,
values_fn = length,
values_fill = 0
) %>%
mutate(across(where(is.numeric), ~ if_else(.x == 1, "yes", "no")))
),
here("tables/ecoli-genomics/sample_metadata.csv")
)
}
btESBL_sequence_sample_metadata %>%
filter(species == "E. coli") %>%
mutate(Phylogroup = ecoli_phylogroup,
Pathotype = ecoli_pathotype) ->
dassimEcoli_BTEcoli.accession
pgroup_cols <- c(hue_pal()(9)[c(1:5,7:8)], "gray")
names(pgroup_cols) <-
sort(unique(dassimEcoli_BTEcoli.accession$Phylogroup))
dassimEcoli_BTEcoli.accession %>%
group_by(ST) %>%
mutate(n = n()) %>%
filter(n > 2) %>%
ggplot(aes(fct_rev(fct_infreq(ST)), fill = Phylogroup)) +
geom_bar() +
coord_flip() +
theme_bw() +
theme(legend.position = "none") +
labs(x = "ST", y = "Number of Samples") +
scale_fill_manual(values = pgroup_cols) ->
p1
# scale_fill_viridis_d(option = "cividis") -> p1
dassimEcoli_BTEcoli.accession %>%
ggplot(aes(fct_rev(fct_infreq(Phylogroup)), fill = Phylogroup)) +
geom_bar() +
theme_bw() +
theme(legend.position = "none",
axis.text.x = element_text(angle = 45,
hjust = 1)) +
# scale_fill_viridis_d(option = "cividis") +
scale_fill_manual(values = pgroup_cols) +
coord_flip() +
labs(x = "Phylogroup", y = "Number of samples") -> p2
btESBL_plasmidreplicons %>%
filter(species == "E. coli") %>%
mutate(ref_seq = gsub("_.+$","", ref_seq),
ref_seq = gsub("\\.[0-9]","", ref_seq),
ref_seq = case_when(
grepl("Col", ref_seq) ~ "Col",
grepl("rep", ref_seq) ~ "rep",
grepl("^FIA", ref_seq) ~ "IncFIA",
!grepl("Inc", ref_seq) ~ "Other",
TRUE ~ ref_seq
)) %>%
filter(grepl("Inc", ref_seq)) %>%
ggplot(aes(fct_rev(fct_infreq(ref_seq)))) +
geom_bar() +
coord_flip() +
theme_bw() +
labs(y = "Number of samples",
x = "Plasmid replicon") -> plasm_rep_prev
p2 + p1 + plasm_rep_prev + plot_spacer() +
plot_annotation(tag_levels = "A") +
plot_layout(ncol = 2) -> mlst_plot
if (write_figs) {
ggsave(
here("figures/ecoli-genomics/pgroup_mlst_plasm_plot.pdf"),
mlst_plot,
width = 7,
height = 8)
ggsave(
here("figures/ecoli-genomics/pgroup_mlst_plasm_plot.svg"),
mlst_plot,
width = 7,
height = 8)
}
mlst_plot
btESBL_sequence_sample_metadata %>%
filter(species == "E. coli") %>%
group_by(pid) %>%
summarise(
n_sts_per_participant = length(unique(ST)),
n_samples_per_participant = n()
) %>%
mutate(
n_samples_per_participant = factor(n_samples_per_participant,
levels = 1:5
),
n_sts_per_participant = factor(n_sts_per_participant, levels = 1:5)
) %>%
count(n_sts_per_participant, n_samples_per_participant, .drop = FALSE) %>%
filter(as.numeric(as.character(n_samples_per_participant)) >=
as.numeric(as.character(n_sts_per_participant))) %>%
ggplot(aes(n_samples_per_participant, n_sts_per_participant,
label = n, fill = n, color = -n
)) +
geom_tile(color = NA) +
geom_text() +
scale_fill_viridis_c() +
scale_color_gradient(low = "black", high = "white") +
guides(color = "none") +
labs(
x = "No. of samples per participant",
y = "No. of STs per participant",
fill = "No. of\nParticipants"
) +
theme_bw() -> samples_vs_st_plot
btESBL_snpdists_esco %>%
rename(sample1 = sample) %>%
pivot_longer(-sample1,
names_to = "sample2",
values_to = "snpdist"
) %>%
left_join(
btESBL_sequence_sample_metadata %>%
filter(species == "E. coli") %>%
transmute(
pid1 = pid,
ST1 = ST,
sample1 = lane
)
) %>%
left_join(
btESBL_sequence_sample_metadata %>%
filter(species == "E. coli") %>%
transmute(
pid2 = pid,
ST2 = ST,
sample2 = lane
)
) %>%
rowwise() %>%
mutate(filter_var = paste(sort(c(sample1, sample2)), collapse = ",")) -> df
#> Joining with `by = join_by(sample1)`
#> Joining with `by = join_by(sample2)`
df[!duplicated(df$filter_var), ] -> df
df %>%
filter(sample1 != sample2) %>%
filter(ST1 == ST2) %>%
filter(!is.na(pid1) & !is.na(pid2)) %>%
mutate(btwn_var = if_else(pid1 == pid2, "Within-participant, same ST",
"Between-participant, same ST"
)) %>%
ggplot(aes(snpdist)) +
# geom_density() +
geom_histogram(bins = 50, color = "black", size = 0.4) +
xlim(0, 200) +
facet_wrap(~btwn_var, scales = "free") +
theme_bw() +
guides(fill = "none") +
labs(
x = "Core genome SNP distance",
y = "Number of sample-pairs"
) +
scale_fill_viridis_d(option = "cividis") -> snpdist_plot
#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#> ℹ Please use `linewidth` instead.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
((samples_vs_st_plot + plot_spacer() + plot_layout(widths = c(1.5,1))) /
snpdist_plot) +
plot_annotation(tag_levels = "A") -> within_participant_diversity_plot
within_participant_diversity_plot
#> Warning: Removed 751 rows containing non-finite values (`stat_bin()`).
#> Warning: Removed 4 rows containing missing values (`geom_bar()`).
As per reviewer’s comments - stratify Horesh collection by invasive vs carriage and ESBL vs not ESBL for comparison
# add esbl status to btESBL_ecoli_horesh_metadata
btESBL_ecoli_horesh_metadata %>%
left_join(
btESBL_ecoli_horesh_amr %>%
left_join(
select(
btESBL_NCBI_phenotypic_bl,
allele_name,
class
),
by = c("ref_seq" = "allele_name")
) %>%
group_by(ID) %>%
summarise(res = if_else(
any(grepl("ESBL|AmpC|Carbapenemase", class)),
"ESBL/AmpC/Carbapenemase",
"No ESBL/AmpC/Carbapenemase"
)),
by = c("ID" = "ID")
) -> btESBL_ecoli_horesh_metadata
bind_rows(
btESBL_ecoli_horesh_metadata %>%
transmute(Study = "Global",
Phylogroup = Phylogroup),
btESBL_sequence_sample_metadata %>%
filter(species == "E. coli") %>%
transmute(Study = "This Study",
Phylogroup = ecoli_phylogroup)
) %>%
mutate(Phylogroup =
if_else(Phylogroup == "Not Determined",
"Unknown",
Phylogroup),
Phylogroup = fct_infreq(Phylogroup)
) %>%
count(Study, Phylogroup, .drop = FALSE) %>%
group_by(Study) %>%
mutate(prop = n/sum(n)) %>%
ggplot(aes(fct_reorder(Phylogroup, prop),
prop,
group = Study,
fill = Study)) +
geom_col(position = "dodge") +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(x = "Phylogroup",
y = "Proportion") ->
malawi_vs_global_pgroup
malawi_vs_global_pgroup
if (write_figs) {
ggsave(
here("figures/ecoli-genomics/global_vs_malawi_pgroup.svg"),
malawi_vs_global_pgroup,
width = 5,
height = 4
)
ggsave(
here("figures/ecoli-genomics/global_vs_malawi_pgroup.pdf"),
malawi_vs_global_pgroup,
width = 5,
height = 4
)
}
bind_rows(
btESBL_ecoli_horesh_metadata %>%
transmute(
Study = "Global",
Phylogroup = Phylogroup,
res = res,
source = case_when(
Isolation == "Unknown" ~ "Unknown",
Isolation %in% c("Feces", "Rectal", "Rectal
Swab") ~ "Stool",
TRUE ~ "Invasive"
)
),
btESBL_sequence_sample_metadata %>%
filter(species == "E. coli") %>%
transmute(
Study = "This Study",
Phylogroup = ecoli_phylogroup,
res = "ESBL/AmpC/Carbapenemase",
source = "Stool"
)
) %>%
mutate(
Phylogroup =
case_when(
Phylogroup == "Not Determined" ~ "Unknown",
grepl("clade|Shigella", Phylogroup) ~ "Other",
TRUE ~ Phylogroup
)
) %>%
filter(!is.na(res)) %>%
# mutate(across(everything(), as.factor)) %>% */
count(Study, Phylogroup, res, source, .drop = FALSE) %>%
group_by(Study, res, source) %>%
mutate(prop = n / sum(n),
source = factor(source,
levels = c("Stool","Invasive","Unknown")
)) %>%
ggplot(aes(Phylogroup,
prop,
group = Study,
fill = Study
)) +
geom_col(position = "dodge") +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(
x = "Phylogroup",
y = "Proportion"
) +
facet_grid(source ~ res) -> malawi_vs_global_pgroup_stratified
malawi_vs_global_pgroup_stratified
Only 2 aEPEC/EPEC, 10 EAEC.
dassimEcoli_BTEcoli.accession %>%
as.data.frame() -> dassimEcoli_BTEcoli.accession
rownames(dassimEcoli_BTEcoli.accession ) <-
dassimEcoli_BTEcoli.accession$lane
dassimEcoli_BTEcoli.accession %>%
select(lane, ST) %>%
group_by(ST) %>%
mutate(n = n(),
ST = if_else(n == 1, "Other", ST)) %>%
mutate(ST = if_else(!ST %in% c("Novel", "Other"),
paste0("ST", ST), ST)) %>%
arrange(fct_infreq(ST)) %>%
pivot_wider(id_cols = lane,
names_from = ST,
values_from = ST,
values_fn = length,
values_fill = 0) %>%
mutate(across(everything(), as.character)
) %>%
relocate(Other, .after = everything()) %>%
as.data.frame() ->
mlst_onehot
rownames(mlst_onehot) <- mlst_onehot$lane
(
(
ggtree(btESBL_coregene_tree_esco) %>%
gheatmap(
select(dassimEcoli_BTEcoli.accession, Phylogroup),
width = 0.05,
color = NA,
font.size = 3,
colnames_angle = 90,
colnames_position = "top",
colnames_offset_y = 3,
hjust = 0
) +
scale_fill_manual(
values = hue_pal()(8),
name = "Phylogroup") +
new_scale_fill()
) %>%
gheatmap(select(mlst_onehot, -lane),
font.size = 2.5,
color = NA,
colnames_angle = 90,
offset = .0022,
colnames_offset_y = 3,
colnames_position = "top",
hjust = 0) +
scale_fill_manual(values = c("lightgrey", "black"), guide = "none") +
new_scale_fill()
) %>%
gheatmap(select(dassimEcoli_BTEcoli.accession, Pathotype),
width = 0.05,
font.size = 3,
color = NA,
colnames_angle = 90,
offset = .001,
colnames_offset_y = 3,
colnames_position = "top",
hjust = 0) +
scale_fill_manual(values = viridis_pal(option = "plasma")(6)[c(3,5)],
name = "Pathotype",
na.translate = FALSE) +
ylim(NA, 540) +
annotate("text", x = 0.03, y = 520, label = "Sequence Type",
size = 3) -> malawi_treeplot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
malawi_treeplot
# add class ro which resistnce is conferred --------------------------------
quinolone <- "Par|Gyr|Par|Qnr|Qep|Nor|GyrA|GyrB|ParC|ParE"
tetracycline <- "Tet"
sulphonamide <- "Sul"
aminoglycoside <- "Str|Aad|Aac|Aph|Rmt|APH"
streptothricin <- "Sat"
macrolide <- "Mph|Mdf|Erm|Ere"
fosfomycin <- "Fos"
chloramphenicol <- "Cat|FloR|Cml"
trimethoprim <- "Dfr"
rifampicin <- "Arr"
ESBL <- "SHV_12"
penicillinase <- "OKP|SCO|LEN|LAP"
ampc <- "CMY"
btESBL_amrgenes %>%
semi_join(dassimEcoli_BTEcoli.accession,
by = c( "lane")) %>%
select(-genus) %>%
rename(gene = ref_seq) %>%
# add in QRDR mutations
bind_rows(
btESBL_qrdr_mutations %>%
filter(genus == "E. coli") %>%
select(-genus) %>%
semi_join(
btESBL_CARD_qrdr_mutations,
by = c("variant" = "variant",
"gene" = "gene")
) %>%
select(gene, lane) %>%
unique() %>%
mutate(gene =
gsub("(^.{1})", '\\U\\1',
gene,
perl = TRUE))
) %>%
filter(!grepl("AmpH|AMPH|AmpC|MrdA|MefB", gene)) %>%
# add in beta-lactamases
left_join(
select(btESBL_NCBI_phenotypic_bl, allele_name, class),
by = c("gene" = "allele_name")) %>%
mutate(class = case_when(
str_detect(gene, quinolone) ~ "Quinolone",
str_detect(gene, tetracycline) ~ "Tetracycline",
str_detect(gene, sulphonamide) ~ "Sulphonamide",
str_detect(gene, aminoglycoside) ~ "Aminoglycoside",
str_detect(gene, streptothricin) ~ "Streptothricin",
str_detect(gene, macrolide) ~ "Macrolide",
str_detect(gene, fosfomycin) ~ "Fosfomycin",
str_detect(gene, chloramphenicol) ~ "Chloramphenicol",
str_detect(gene, rifampicin) ~ "Rifampicin",
str_detect(gene,trimethoprim) ~ "Trimethoprim",
str_detect(gene,ESBL) ~ "ESBL",
str_detect(gene,penicillinase) ~ "Penicillinase",
str_detect(gene,ampc) ~ "AmpC",
TRUE ~ class
)) %>%
mutate(gene = if_else(gene == "TEM_95",
"TEM_1",
gene)) ->
amr
### plot prevalence ----------------------------------------
amr %>%
group_by(class) %>%
mutate(n_class = length(class),
n_genes_in_class = n_distinct(gene)) %>%
select(class, n_class,n_genes_in_class) %>%
unique() %>%
arrange(n_class) %>%
ungroup() %>%
mutate(end = cumsum(n_genes_in_class),
start = lag(end, default = 0),
textpos = start + 0.6 + 0.5 * (end - start)) -> annotate.df
amr %>%
group_by(class) %>%
mutate(n_class = length(class),
n_genes_in_class = n_distinct(gene),
gene = gsub("_", "-", gene)) %>%
ggplot( aes(fct_reorder(fct_rev(fct_infreq(gene)), n_class),
fill = class)) +
geom_bar() +
theme_bw() +
coord_flip(ylim = c(-5,450),clip = "off", expand = FALSE, xlim = c(0, 76)) +
annotate(geom = "segment",
x = annotate.df$start + 0.5 + 0.2,
xend = annotate.df$end + 0.5 - 0.2,
y = -115, yend = -115 ) +
annotate(geom = "text", y = -125,
x = annotate.df$textpos,
label = annotate.df$class,
size = 3,
hjust = 1) +
labs(y = "Number of samples") +
theme(plot.margin = unit(c(0.2,0.5,0.2,4), "cm"),
axis.title.y = element_blank(),
legend.position = "none") -> amrplot
amrplot
if (write_figs) {
ggsave(
filename = here("figures/ecoli-genomics/amr_plot.pdf"),
plot = amrplot,
width = 6,
height = 10
)
ggsave(
filename = here("figures/ecoli-genomics/amr_plot.svg"),
plot = amrplot,
width = 6,
height = 10
)
}
amr %>%
# filter(!gene %in% c("OqxA", "OqxB", "FosA")) %>%
# remove FosA as not in KpI which we are plottingh
mutate(
gene = gsub("_","-", gene)) %>%
group_by(class) %>%
mutate(n_class = length(class)) %>%
ungroup() %>%
group_by(gene) %>%
mutate(n_gene = length(gene)) %>%
arrange(desc(n_class), desc(n_gene)) %>%
select(-n_class, -n_gene) %>%
pivot_wider(id_cols = lane,
values_from = class,
names_from = gene) %>%
as.data.frame() ->
amr.ariba.maptotree
amr %>%
# filter(!gene %in% c("OqxA", "OqxB", "FosA")) %>%
mutate(
gene = gsub("_","-", gene)) %>%
group_by(class) %>%
mutate(n_class = length(class)) %>%
ungroup() %>%
group_by(gene) %>%
mutate(n_gene = length(gene)) %>%
arrange(desc(n_class), desc(n_gene)) %>% pull(class) %>%
unique() -> class_order
rownames(amr.ariba.maptotree) <- amr.ariba.maptotree$lane
colz = hue_pal()(13)
names(colz) <- sort(unique(amr %>%
filter(class != "Fosfomycin") %>%
pull(class)))
ggtree(btESBL_coregene_tree_esco ) %>%
#ggtree(tree) %>%
gheatmap(
select(amr.ariba.maptotree,-lane),
width = 5,
color = NA,
font.size = 3,
colnames_angle = 90,
colnames_position = "top",
colnames_offset_y = 0,
hjust = 0,
offset = 0
) +
ylim(NA, 500) +
scale_fill_manual(name = "Class", values = colz,
breaks = class_order,
na.translate = FALSE) ->
malawi_tree_with_amr
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
malawi_tree_with_amr
#prepare metadata ----------
# lookup list of horesh merged clusters
purrr::map_df(
unique(grep("_", btESBL_ecoli_global_popPUNK_clusters$Cluster, value = TRUE)),
function(x)
data.frame(mergeclust = x,
splts = strsplit(x, "_")[[1]])) %>%
mutate(splts = as.numeric(splts)) -> mergclust_lookup
bind_rows(
dassimEcoli_BTEcoli.accession %>%
transmute(
lane = lane,
ST = ST,
Phylogroup = Phylogroup,
study = "dassim",
Country = "Malawi",
Continent = "Africa",
Year = year(data_date),
res = "ESBL/AmpC/Carbapenemase",
source = "Colonising"
) %>%
left_join(
btESBL_ecoli_global_popPUNK_clusters,
by = "lane"
),
btESBL_ecoli_musicha_metadata %>%
transmute(
lane = lane,
Cluster = Cluster,
ST = if_else(is.na(ST),
"Novel",
as.character(ST)
),
Phylogroup = phylogroup,
study = "musicha",
Country = "Malawi",
Continent = "Africa",
Year = Year
),
btESBL_ecoli_horesh_metadata %>%
mutate(
assembly_name_recode =
gsub("\\..*$", "", Assembly_name)
) %>%
left_join(mergclust_lookup, by = c("PopPUNK" = "splts")) %>%
transmute(
lane = gsub(
"#",
"_",
if_else(
!is.na(name_in_presence_absence),
name_in_presence_absence,
assembly_name_recode
)
),
Cluster = if_else(!is.na(mergeclust),
mergeclust,
as.character(PopPUNK)
),
ST = gsub("~", "", ST),
Phylogroup = Phylogroup,
study = "horesh",
Country = Country,
Continent = Continent,
Year = case_when(
Year == "Unknown" ~ NA_real_,
grepl("s", Year) ~ as.numeric(gsub("s", "", Year)),
grepl("-", Year) ~ as.numeric(gsub("-.*$", "", Year)),
TRUE ~ as.numeric(str_trim(Year))
),
Pathotype = Pathotype,
res = res,
source = case_when(
Isolation == "Unknown" ~ "Unknown",
Isolation %in% c("Feces", "Rectal", "Rectal
Swab") ~ "Colonising",
TRUE ~ "Infecting"
)
)
) %>%
mutate(
Continent =
case_when(
grepl("America", Continent) ~ "Americas",
is.na(Continent) ~ "Unknown",
TRUE ~ Continent
)
) %>%
mutate(
cluster_recode =
if_else(
!grepl(
paste(c(
"\\<1", 2:1153, "1184\\>"
), collapse = "\\>|\\<"),
Cluster
) &
!grepl("_", Cluster),
NA_character_,
Cluster
),
cluster_recode = factor(
cluster_recode,
levels =
unique(cluster_recode)[
order(
as.numeric(
gsub("_.*$", "", unique(cluster_recode))
)
)
]
),
Phylogroup =
case_when(
Phylogroup %in% c(
"Unknown", "Not Determined",
"E or cladeI"
) ~
"Unknown",
is.na(Phylogroup) ~ "Unknown",
TRUE ~ Phylogroup
)
) -> df_all
#> Warning: There were 3 warnings in `transmute()`.
#> The first warning was:
#> ℹ In argument: `Year = case_when(...)`.
#> Caused by warning:
#> ! NAs introduced by coercion
#> ℹ Run `dplyr::last_dplyr_warnings()` to see the 2 remaining warnings.
df_all <- as.data.frame(df_all)
write_csv(df_all, here("tables/ecoli-genomics/horesh_globaltree_metadata.csv"))
rownames(df_all) <- df_all$lane
#define color palettes
pgroup_cols <- c(brewer_pal(type = "qual", palette = 8)(10),
"white")
names(pgroup_cols) <- sort(unique(df_all$Phylogroup))
continent_cols <- c(viridis_pal(option = "plasma")(5),
"white")
names(continent_cols) <- sort(unique(df_all$Continent))
country_cols <-
c("Malawi" = "grey15",
"Not Malawi" = "lightgrey")
btESBL_ecoli_globaltree -> horesh_context_tree
popPUNK_clusts_inplots <-
df_all %>%
filter(lane %in%
c(tree_subset(
btESBL_ecoli_globaltree,
3555, levels_back = 0)$tip.label,
tree_subset(
btESBL_ecoli_globaltree,
5404, levels_back = 0)$tip.label,
tree_subset(
btESBL_ecoli_globaltree,
5652, levels_back = 0)$tip.label)
) %>%
select(cluster_recode) %>%
unique() %>%
arrange(cluster_recode) %>%
pull(cluster_recode)
popPUNK_cols <- c(
"dodgerblue2", "#E31A1C", # red
"green4",
"#6A3D9A", # purple
"#FF7F00", # orange
"black", "gold1",
"skyblue2", "#FB9A99", # lt pink
"palegreen2",
"#CAB2D6", # lt purple
"#FDBF6F", # lt orange
"gray70", "khaki2",
"maroon", "orchid1", "deeppink1", "blue1", "steelblue4",
"darkturquoise", "green1", "yellow4", "yellow3",
"darkorange4", "brown"
)
# c(
# "palegreen2",
# "#E31A1C",
# "green4",
# "#6A3D9A",
# "#FF7F00",
# "steelblue4",
# "gold1",
# "skyblue2",
# "dodgerblue2",
# "#FDBF6F",
# "gray70",
# "maroon",
# "orchid1",
# "darkturquoise",
# "darkorange4",
# "brown",
# "white"
# )
names(popPUNK_cols) <- df_all %>%
filter(lane %in%
c(tree_subset(
btESBL_ecoli_globaltree,
3565, levels_back = 0)$tip.label,
tree_subset(
btESBL_ecoli_globaltree,
5404, levels_back = 0)$tip.label,
tree_subset(
btESBL_ecoli_globaltree,
5652, levels_back = 0)$tip.label)
) %>%
select(cluster_recode) %>%
unique() %>%
arrange(cluster_recode) %>%
pull(cluster_recode)
popPUNK_cols <- popPUNK_cols[!is.na(names(popPUNK_cols))]
offset_add <- 0
(
(
(
(
ggtree(btESBL_ecoli_globaltree, size = 0.2) %<+%
(select(df_all, lane, ST) %>%
mutate(
ST = if_else(ST == 167,
as.character("hilight"), NA_character_)
)) %>%
gheatmap(
select(df_all, `Year`),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.0006 + offset_add,
hjust = 0
) +
scale_fill_viridis_c(name = "Year", na.value = "white",
guide = guide_colorbar(order = 2)) +
new_scale_fill()
) %>%
gheatmap(
select(df_all, Continent),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.0012 + offset_add,
hjust = 0
) +
scale_fill_manual(values =
continent_cols,
name = "Continent",
guide = guide_legend(order = 3)) +
new_scale_fill()
) %>%
gheatmap(
select(df_all, Country) %>%
mutate(Country = if_else(
Country == "Malawi",
"Malawi", "Not Malawi"
)),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.0018 + offset_add,
hjust = 0
) +
scale_fill_manual(values = country_cols,
name = "Country",
guide = guide_legend(order = 4)) +
new_scale_fill()
) %>%
gheatmap(
select(df_all, Phylogroup) %>%
mutate(Phylogroup = if_else(
is.na(Phylogroup) ,"Unknown",
Phylogroup)),
width = 0.03,
color = NA,
font.size = 4,
colnames_angle = 90,
colnames_position = "top",
colnames_offset_y = 3,
hjust = 0,
offset = 0 + offset_add
) +
scale_fill_manual(values = pgroup_cols,
name = "Phylogroup",
na.translate = FALSE,
guide = guide_legend(order = 1)) +
new_scale_fill()
) +
ylim(NA, 3550) +# + geom_tippoint(aes(color = ST)) +
geom_treescale(y = 2366, x = 0.004,offset = 30) -> p
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
p + geom_hilight( node = 3565, alpha = 0.3,
fill = "steelblue",
color = NA) + # phylogroup A
geom_cladelabel(node = 3565, label = "C", barsize = 0,offset = 0) +
geom_highlight(node = 5404, alpha = 0.3, fill = "steelblue",
color = NA, extend = 0.0002) + # st 410 and context
geom_cladelabel(node = 5404, label = "B", barsize = 0,offset = 0) +
geom_highlight(node = 5652, alpha = 0.3, fill = "steelblue",
color = NA) + # ST131
geom_cladelabel(node = 5652, label = "D", barsize = 0,offset = 0) -> p
# phylo a subreee -----------
offset_add <- 0.0000 #0.0015
textsize <- 3
cladelab_offset <- 0.0001
tippoint_alpha = 0.7
(
ggtree(
tree_subset(
btESBL_ecoli_globaltree, 3565, levels_back = 0)
) %<+% select(df_all, lane, cluster_recode) %>%
gheatmap(
select(df_all, Country) %>%
mutate(Country = if_else(
Country == "Malawi",
"Malawi", "Not Malawi")),
font.size = 3,
width = 0.04,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = offset_add,
hjust = 0
) +
scale_fill_manual(
values = country_cols,
name = "Country",
guide = "none") +
guides(fill = "none") +
new_scale_fill()
) +
ylim(NA, 100) +
geom_tippoint(aes(color = cluster_recode),
na.rm = TRUE,
size = 1,
alpha = tippoint_alpha) +
scale_color_manual(name = "PopPUNK\nCluster",
values = popPUNK_cols,
na.translate = FALSE) +
geom_treescale(y = 66,
x = 0.00005,
offset = 2,
width = 0.00001) -> p_phylo_a_subtree
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
p_phylo_a_subtree +
geom_cladelabel(node = 119, label = "ST167",
fontsize = textsize,
offset = 0.00002,
offset.text = 0.000005) +
geom_cladelabel(node = 99, label = "ST167",
fontsize = textsize,
offset = 0.0001665,
offset.text = 0.000005) +
theme(legend.position = "bottom") +
guides(
color = guide_legend(
nrow = 2,
byrow = TRUE,
override.aes = list(alpha = 1))
) ->
plot_phyloa_subtree
# ST131 zoom
offset_add <- 0.0004
(
ggtree(
tree_subset(
btESBL_ecoli_globaltree, 5652, levels_back = 0)
) %<+% select(df_all, lane, cluster_recode) %>%
gheatmap(
select(df_all, Country) %>%
mutate(Country = if_else(
Country == "Malawi",
"Malawi", "Not Malawi")),
font.size = 3,
width = 0.07,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = offset_add,
hjust = 0
) +
scale_fill_manual(values = country_cols,
name = "Country",
guide = "none") +
new_scale_fill()
) +
ylim(NA, 125) +
geom_tippoint(aes(color = cluster_recode),
na.rm = TRUE,
size = 1,
alpha = tippoint_alpha) +
scale_color_manual(name = "PopPUNK\nCluster",
values = popPUNK_cols,
na.translate = FALSE) +
geom_treescale(y = 83,
x = 0.0001,
offset = 3.6,
width = 0.0001) -> p_st131_subtree
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
p_st131_subtree +
geom_cladelabel(node = 104, label = "ST131",
fontsize = textsize,
offset = 0.0001,
offset.text = 0.00002) +
theme(legend.position = "bottom") +
guides(color = guide_legend(
nrow = 2,
byrow = TRUE,
override.aes = list(alpha = 1))
) -> plot_st131tree
# st410 subtree
offset_add <- 0.00007
# offset_multiple <- 0.00008
(
ggtree(
tree_subset(
btESBL_ecoli_globaltree, 5404, levels_back = 0)
) %<+% select(df_all, lane, cluster_recode) %>%
gheatmap(
select(df_all, Country) %>%
mutate(Country = if_else(
Country == "Malawi",
"Malawi", "Not Malawi")),
font.size = 3,
width = 0.055,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = offset_add,
hjust = 0,
) +
scale_fill_manual(values = country_cols,
name = "Country",
guide = "none") +
new_scale_fill()
) +
ylim(NA, 60) +
geom_tippoint(aes(color = cluster_recode),
na.rm = TRUE,
size = 1,
alpha = tippoint_alpha) +
scale_color_manual(name = "PopPUNK\nCluster",
values = popPUNK_cols,
na.translate = FALSE) +
geom_treescale(y = 40,
x = offset_add/2,
offset = 1,
width = 0.00001) -> p_st410_subtree
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
p_st410_subtree +
geom_cladelabel(48, label = "ST410",
fontsize = textsize,
offset = offset_add/5,
offset.text = 0.000002) +
theme(legend.position = "bottom") +
guides(
color = guide_legend(
nrow = 2, byrow = TRUE,
override.aes = list(alpha = 1)
)
) -> plot_st410tree
(plot_st410tree + plot_phyloa_subtree + plot_st131tree) +
plot_annotation(tag_levels = "A") + plot_layout(guides = "collect") &
theme(legend.position = "bottom") -> subtreesplot
p / (subtreesplot) + plot_annotation(tag_levels = "A") +
plot_layout(guides = "collect", heights = c(2.5,1)) -> global_tree_plot
# height 12, width 9 loooks gooooooood
global_tree_plot
#> Warning: The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
df_all %>%
filter(study %in% c("dassim", "horesh")) %>%
mutate(res = if_else(grepl("No", res), "No ESBL", "ESBL")) %>%
group_by(study) %>%
mutate(n_tot_study = n()) %>%
group_by(Cluster, study) %>%
summarise(
n_cluster = n(),
prop_cluster = n_cluster / unique(n_tot_study)
) %>%
group_by(Cluster) %>%
mutate(n_studies_cluster_is_in = length(Cluster)) %>%
filter(
grepl(
paste(c("\\<1", 2:49, "50\\>"), collapse = "\\>|\\<"),
Cluster
) |
n_studies_cluster_is_in > 1 |
study == "dassim"
) %>%
filter(!(study == "dassim" & n_cluster <= 3 & n_studies_cluster_is_in == 1)) %>%
ungroup() %>%
mutate(
prop_cluster =
if_else(
study == "dassim",
-1 * prop_cluster,
prop_cluster
),
Cluster = factor(
Cluster,
levels =
unique(Cluster)[
order(
as.numeric(
gsub("_.*$", "", unique(Cluster))
)
)
]
)
) %>%
mutate(
study = case_when(
study == "dassim" ~ "This Study",
TRUE ~ "Horesh et al."
),
study = factor(study, levels = c("This Study", "Horesh et al."))
) %>%
ggplot(aes(x = prop_cluster, y = fct_rev(Cluster), fill = study)) +
geom_col(color = "black", size = 0.2) +
theme_bw() +
labs(
y = "PopPUNK cluster", fill = "",
x = "Proportion of samples"
) +
scale_x_continuous(labels = c(0.1, 0.0, 0.1, 0.2, 0.3)) +
scale_fill_manual(values = c(
viridis_pal(option = "cividis")(8)[c(2)],
"grey60"
)) +
theme(
axis.text.y = element_text(size = 5),
axis.text.x = element_text(size = 7),
legend.position = "bottom"
) -> p1
#> `summarise()` has grouped output by 'Cluster'. You can override using the
#> `.groups` argument.
df_all %>%
filter(study %in% c("dassim", "horesh")) %>%
mutate(
study = case_when(
study == "dassim" ~ "This Study",
TRUE ~ "Horesh Collection"
),
study = factor(study, levels = c("This Study", "Horesh Collection"))
) %>%
mutate(Cluster = factor(
Cluster,
levels =
unique(Cluster)[
order(
as.numeric(
gsub("_.*$", "", unique(Cluster))
)
)
]
)) %>%
ggplot(aes(Cluster, color = study, group = study)) +
stat_ecdf(pad = TRUE, geom = "step") +
scale_x_discrete(
breaks = as.character(c(1, seq(from = 100, to = 1400, by = 100))),
expand = c(0.01, 0.01)
) +
theme_bw() +
labs(
y = "Cumulative proportion",
x = "PopPUNK cluster", color = ""
) +
geom_vline(
xintercept = "1184",
alpha = 0.8,
linetype = "dotted"
) +
scale_color_manual(
values = c(
viridis_pal(option = "cividis")(8)[c(2)],
"grey60"
),
guide = "none"
) +
theme(
axis.text.y = element_text(size = 7),
axis.text.x = element_text(angle = 45, hjust = 1, size = 5),
legend.position = "none"
) -> p2
(
p1 +
(p2 + plot_spacer() + plot_layout(ncol = 1))
) + plot_layout(ncol = 2, guides = "collect") +
plot_annotation(tag_levels = "A") &
theme(legend.position = "bottom") -> pp_cluster_plots
pp_cluster_plots
if (write_figs) {
ggsave(
here("figures/ecoli-genomics/global_poppunk_clusterplot.pdf"),
pp_cluster_plots,
width = 6,
height = 6
)
ggsave(
here("figures/ecoli-genomics/global_poppunk_clusterplot.svg"),
pp_cluster_plots,
width = 6,
height = 6
)
}
# get clusters to include
df_all %>%
mutate(res = if_else(grepl("No", res), "No ESBL", "ESBL")) %>%
filter(study %in% c("dassim", "horesh")) %>%
group_by(study) %>%
mutate(n_tot_study = n()) %>%
group_by(Cluster, study) %>%
summarise(
n_cluster = n(),
prop_cluster = n_cluster / unique(n_tot_study)
) %>%
group_by(Cluster) %>%
mutate(n_studies_cluster_is_in = length(Cluster)) %>%
filter(
grepl(
paste(c("\\<1", 2:49, "50\\>"), collapse = "\\>|\\<"),
Cluster
) |
n_studies_cluster_is_in > 1 |
study == "dassim"
) %>%
filter(!(study == "dassim" &
n_cluster <= 3 & n_studies_cluster_is_in == 1)) %>%
ungroup() %>%
pull(Cluster) %>%
unique() -> clusters_to_include
#> `summarise()` has grouped output by 'Cluster'. You can override using the
#> `.groups` argument.
df_all %>%
mutate(res = if_else(grepl("No", res), "No ESBL", "ESBL")) %>%
filter(study %in% c("dassim", "horesh")) %>%
group_by(study) %>%
filter(source != "Unknown") %>%
mutate(n_tot_study = n()) %>%
group_by(Cluster, study, res, source) %>%
summarise(
n_cluster = n(),
prop_cluster = n_cluster / unique(n_tot_study)
) %>%
filter(Cluster %in% clusters_to_include) %>%
ungroup() %>%
mutate(
prop_cluster =
if_else(
study == "dassim",
-1 * prop_cluster,
prop_cluster
),
Cluster = factor(
Cluster,
levels =
unique(Cluster)[
order(
as.numeric(
gsub("_.*$", "", unique(Cluster))
)
)
]
)
) %>%
mutate(
var = case_when(
study == "dassim" ~ "This Study\nColonising",
study == "horesh" & grepl("Colonising", source) ~ "Horesh et al.\nStool",
TRUE ~ "Horesh et al.\nInvasive"
),
var = factor(var, levels = sort(unique(var))[c(3, 2, 1)])
) %>%
ggplot(aes(x = prop_cluster, y = fct_rev(Cluster), fill = var)) +
geom_col(color = "black", size = 0.2) +
theme_bw() +
labs(
y = "PopPUNK cluster", fill = "",
x = "Proportion of samples"
) +
# scale_x_continuous(labels = c(0.1,0.0, 0.1, 0.2, 0.3)) +
scale_fill_manual(
values = c(
viridis_pal(option = "cividis")(8)[c(2, 8, 6)]
),
breaks = c(
"This Study\nColonising",
"Horesh et al.\nInvasive",
"Horesh et al.\nStool"
)
) +
scale_color_manual(
values = c(
viridis_pal(option = "cividis")(8)[c(2, 8, 6)]
),
breaks = c(
"This Study\nColonising",
"Horesh et al.\nInvasive",
"Horesh et al.\nStool"
)
) +
theme(
axis.text.y = element_text(size = 5),
axis.text.x = element_text(size = 7),
legend.position = "bottom"
) +
facet_wrap(. ~ res) +
scale_x_continuous(
breaks = c(-0.1, 0, 0.1),
labels = c(0.1, 0.0, 0.1)
) -> a
#> `summarise()` has grouped output by 'Cluster', 'study', 'res'. You can override
#> using the `.groups` argument.
df_all %>%
mutate(res = as.factor(if_else(grepl("No", res), "No ESBL", "ESBL"))) %>%
filter(study %in% c("dassim", "horesh")) %>%
# filter(source != "Unknown") %>%
mutate(Cluster = factor(
Cluster,
levels =
unique(Cluster)[
order(
as.numeric(
gsub("_.*$", "", unique(Cluster))
)
)
]
)) %>%
mutate(
var = case_when(
study == "dassim" ~ "This Study\nColonising",
study == "horesh" & grepl("Colonising", source) ~ "Horesh et al.\nStool",
TRUE ~ "Horesh et al.\nInvasive"
),
var = factor(var, levels = sort(unique(var))[c(3, 2, 1)])
) %>%
count(Cluster, var, res, .drop = FALSE) %>%
filter(!(grepl("This Study", var) & res == "No ESBL")) %>%
group_by(var, res) %>%
mutate(
cumsum = cumsum(n),
sum = sum(n),
prop = cumsum / sum
) %>%
ggplot(aes(Cluster, prop, color = var, fill = var, group = var)) +
geom_step() +
theme_bw() +
labs(
y = "Cumulative proportion",
x = "PopPUNK cluster", color = ""
) +
geom_vline(
xintercept = "1184",
alpha = 0.8,
linetype = "dotted"
) +
scale_color_manual(
values = c(
viridis_pal(option = "cividis")(8)[c(2, 8, 6)]
),
breaks = c(
"This Study\nColonising",
"Horesh et al.\nInvasive",
"Horesh et al.\nStool"
),
guide = "none"
) +
theme(
axis.text.y = element_text(size = 7),
axis.text.x = element_text(angle = 45, hjust = 1, size = 5),
legend.position = "none"
) +
facet_wrap(. ~ res, ncol = 1) +
scale_x_discrete(
breaks = as.character(c(1, seq(from = 100, to = 1400, by = 100))),
expand = c(0.01, 0.01)
) -> b
(p1 + (plot_spacer() + p2 + plot_layout(ncol = 1)) + plot_layout(
guides =
"auto", widths = c(1.7, 1)
)) +
a + (b + plot_layout(ncol = 1)) +
plot_annotation(tag_levels = "A") -> pp_cluster_plots_stratified
pp_cluster_plots_stratified
if (write_figs) {
ggsave(
here("figures/ecoli-genomics/global_poppunk_clusterplot_strat.pdf"),
pp_cluster_plots_stratified,
width = 8,
height = 12
)
ggsave(
here("figures/ecoli-genomics/global_poppunk_clusterplot_strat.svg"),
pp_cluster_plots_stratified,
width = 8,
height = 12
)
}
df_all %>%
filter(study %in% c("dassim", "horesh")) %>%
group_by(study, Cluster, ST) %>%
summarise(n_ST = n()) %>%
group_by(study, Cluster) %>%
mutate(n_cluster = sum(n_ST)) %>%
summarise(
cluster_size = n_cluster,
STprop = n_ST/n_cluster,
STpropstr =
paste0("ST", ST," (",
formatC(n_ST / n_cluster, 2, format = "f"), ")"),
) ->
df_clusttab
#> `summarise()` has grouped output by 'study', 'Cluster'. You can override using
#> the `.groups` argument.
#> Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
#> dplyr 1.1.0.
#> ℹ Please use `reframe()` instead.
#> ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
#> always returns an ungrouped data frame and adjust accordingly.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> `summarise()` has grouped output by 'study', 'Cluster'. You can override using
#> the `.groups` argument.
df_clusttab$STpropstr <-
factor(df_clusttab$STpropstr, levels = unique(
df_clusttab$STpropstr[order(df_clusttab$STprop,
decreasing = TRUE)])
)
df_clusttab %>%
filter(STprop >= 0.01) %>%
pivot_wider(
id_cols = c(Cluster),
names_from = study,
values_from = c(cluster_size,STpropstr),
values_fn = list( STpropstr = function(x) paste(sort(x),collapse = ";"),
cluster_size = unique),
values_fill = list(STpropstr = "-",
cluster_size = 0)
) %>%
arrange(desc(cluster_size_dassim), desc(cluster_size_horesh)) %>%
filter(cluster_size_dassim > 0) %>%
left_join(
df_all %>%
filter(study %in% c("dassim", "horesh")) %>%
group_by(Cluster) %>%
summarise(pgroup = names(sort(table(Phylogroup), decreasing=TRUE)[1]))
) ->
df_clusttab
#> Joining with `by = join_by(Cluster)`
df_all %>%
filter(study %in% c("dassim", "horesh")) %>%
group_by(study, Cluster, Continent) %>%
summarise(n_continent = n()) %>%
group_by(study, Cluster) %>%
mutate(n_cluster = sum(n_continent)) %>%
summarise(
cluster_size = n_cluster,
contprop = n_continent/n_cluster,
contpropstr =
paste0( Continent," (",
formatC(n_continent / n_cluster, 2, format = "f"), ")"),
) ->
df_clust.cont
#> `summarise()` has grouped output by 'study', 'Cluster'. You can override using
#> the `.groups` argument.
#> Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
#> dplyr 1.1.0.
#> ℹ Please use `reframe()` instead.
#> ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
#> always returns an ungrouped data frame and adjust accordingly.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> `summarise()` has grouped output by 'study', 'Cluster'. You can override using
#> the `.groups` argument.
df_clust.cont$contpropstr <-
factor(df_clust.cont$contpropstr, levels = unique(
df_clust.cont$contpropstr[order(df_clust.cont$contprop,
decreasing = TRUE)])
)
left_join(df_clusttab,
df_clust.cont %>%
pivot_wider(
id_cols = c(Cluster),
names_from = study,
values_from = contpropstr,
values_fn = function(x) paste(sort(x),collapse = ";"),
values_fill = "-",
)
) %>%
arrange(desc(cluster_size_dassim), desc(cluster_size_horesh)) ->
df_clusttab
#> Joining with `by = join_by(Cluster)`
df_all %>%
filter(study %in% c("dassim", "horesh")) %>%
mutate(Pathotype = gsub(" \\(predicted\\)","", Pathotype)) %>%
group_by(study, Cluster, Pathotype) %>%
summarise(n_path = n()) %>%
group_by(study, Cluster) %>%
mutate(n_cluster = sum(n_path)) %>%
summarise(
cluster_size = n_cluster,
pathprop = n_path/n_cluster,
pathpropstr =
paste0( Pathotype," (",
formatC(n_path / n_cluster, 2, format = "f"), ")"),
) ->
df_clust.path
#> `summarise()` has grouped output by 'study', 'Cluster'. You can override using
#> the `.groups` argument.
#> Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
#> dplyr 1.1.0.
#> ℹ Please use `reframe()` instead.
#> ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
#> always returns an ungrouped data frame and adjust accordingly.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> `summarise()` has grouped output by 'study', 'Cluster'. You can override using
#> the `.groups` argument.
df_clust.path$pathpropstr <-
factor(df_clust.path$pathpropstr, levels = unique(
df_clust.path$pathpropstr[order(df_clust.path$pathprop,
decreasing = TRUE)])
)
left_join(df_clusttab,
df_clust.path %>%
pivot_wider(
id_cols = c(Cluster),
names_from = study,
values_from = pathpropstr,
values_fn = function(x) paste(sort(x),collapse = ";"),
values_fill = "-",
) %>%
transmute(
Cluster = Cluster,
horesh_pathotype = horesh,
)) ->
df_clusttab
#> Joining with `by = join_by(Cluster)`
df_clusttab %>%
select(Cluster,
pgroup,
cluster_size_dassim,
STpropstr_dassim,
cluster_size_horesh,
STpropstr_horesh,
horesh,
horesh_pathotype
) %>%
kbl(caption =
"Cluster assigment of samples from this study compared to Horesh collection",
col.names = c("Cluster","Phylogroup",
rep(c(
"n isolates",
"STs"),2),"Location", "Pathotype")
) %>%
kable_classic(full_width = FALSE) %>%
add_header_above(c(" " = 2, "This Study" = 2, "Horesh Collection" = 4))
This Study
|
Horesh Collection
|
||||||
---|---|---|---|---|---|---|---|
Cluster | Phylogroup | n isolates | STs | n isolates | STs | Location | Pathotype |
2 | B2 | 53 | ST131 (1.00) | 781 | ST131 (0.99) | Europe (0.73);Unknown (0.12);Americas (0.11);Oceania (0.03);Asia (0.00) | ExPEC (0.54);Not determined (0.46) |
40_708 | C | 44 | ST410 (1.00) | 29 | ST23 (0.41);ST410 (0.34);ST2230 (0.07);ST369 (0.07);ST5491 (0.07);ST5286 (0.03) | Europe (0.62);Americas (0.31);Asia (0.07) | ExPEC (0.55);STEC (0.21);ETEC (0.17);Not determined (0.07) |
684 | A | 29 | ST44 (1.00) | 1 | ST44 (1.00) | Europe (1.00) | ExPEC (1.00) |
451 | B2 | 27 | ST636 (1.00) | 1 | ST636 (1.00) | Americas (1.00) | ExPEC (1.00) |
434_505 | A | 24 | ST167 (0.92);ST10 (0.08) | 3 | ST10 (1.00) | Americas (0.67);Europe (0.33) | ExPEC (0.67);Not determined (0.33) |
44_579 | F | 17 | ST648 (1.00) | 26 | ST648 (1.00) | Europe (0.42);Unknown (0.38);Americas (0.19) | ExPEC (0.73);Not determined (0.27) |
1186 | A | 17 | ST656 (1.00) | 0 |
|
|
|
290 | A | 16 | ST46 (1.00) | 2 | ST46 (1.00) | Americas (1.00) | ExPEC (0.50);Not determined (0.50) |
1187 | B1 | 15 | ST940 (1.00) | 0 |
|
|
|
125 | A | 13 | ST617 (0.92);ST4981 (0.08) | 7 | ST617 (1.00) | Americas (0.71);Europe (0.29) | ExPEC (0.57);Not determined (0.43) |
1188 | A | 12 | ST167 (1.00) | 0 |
|
|
|
1110 | F | 11 | ST1722 (1.00) | 1 | ST1722 (1.00) | Europe (1.00) | ExPEC (1.00) |
288 | A | 9 | ST5824 (1.00) | 3 | ST227 (1.00) | Americas (1.00) | Not determined (1.00) |
20 | B2 | 8 | ST131 (1.00) | 48 | ST131 (0.96);ST5432 (0.02);ST5494 (0.02) | Europe (0.75);Americas (0.12);Unknown (0.10);Oceania (0.02) | ExPEC (0.71);Not determined (0.29) |
37 | D | 8 | ST405 (1.00) | 27 | ST405 (0.96);ST964 (0.04) | Europe (0.63);Americas (0.33);Asia (0.04) | ExPEC (0.81);Not determined (0.11);ETEC (0.04);STEC (0.04) |
1189 | A | 8 | ST1421 (1.00) | 0 |
|
|
|
7 | D | 7 | ST69 (1.00) | 174 | ST69 (0.94);ST106 (0.03) | Europe (0.83);Americas (0.12);Unknown (0.05) | ExPEC (0.79);Not determined (0.19);EAEC (0.02) |
1190 | A | 7 | ST9847 (1.00) | 0 |
|
|
|
1191 | D | 6 | ST38 (0.83);STNovel (0.17) | 0 |
|
|
|
92 | A | 5 | ST10 (1.00) | 10 | ST10 (1.00) | Europe (0.60);Americas (0.40) | ExPEC (0.60);Not determined (0.40) |
164 | A | 5 | ST34 (1.00) | 6 | ST34 (1.00) | Africa (0.67);Europe (0.33) | EPEC (0.67);Not determined (0.33) |
330 | B1 | 5 | ST101 (1.00) | 2 | ST101 (1.00) | Europe (0.50);Unknown (0.50) | Not determined (1.00) |
1193 | A | 5 | ST10 (1.00) | 0 |
|
|
|
77 | D | 4 | ST38 (1.00) | 11 | ST38 (0.73);ST315 (0.27) | Europe (1.00) | Not determined (0.82);ExPEC (0.18) |
1195 | D | 4 | ST6636 (1.00) | 0 |
|
|
|
1196 | D | 4 | ST38 (1.00) | 0 |
|
|
|
3 | B2 | 3 | ST73 (1.00) | 463 | ST73 (0.94);ST104 (0.01) | Europe (0.85);Americas (0.11);Unknown (0.03);Asia (0.00);Africa (0.00) | ExPEC (0.83);Not determined (0.16);STEC (0.01);EAEC (0.00) |
1194 | A | 3 | ST48 (1.00) | 0 |
|
|
|
1197 | F | 3 | ST354 (1.00) | 0 |
|
|
|
1198 | B1 | 3 | ST517 (1.00) | 0 |
|
|
|
1199 | F | 3 | ST354 (1.00) | 0 |
|
|
|
1200 | A | 3 | ST617 (1.00) | 0 |
|
|
|
1201 | A | 3 | ST46 (1.00) | 0 |
|
|
|
1202 | A | 3 | ST10 (1.00) | 0 |
|
|
|
122 | B1 | 2 | ST443 (1.00) | 6 | ST443 (1.00) | Europe (0.83);Asia (0.17) | Not determined (0.67);EPEC (0.17);ExPEC (0.17) |
328 | B1 | 2 | ST224 (1.00) | 2 | ST224 (1.00) | Americas (1.00) | ExPEC (0.50);Not determined (0.50) |
1205 | A | 2 | ST617 (1.00) | 0 |
|
|
|
1206 | A | 2 | ST3168 (1.00) | 0 |
|
|
|
1207 | A | 2 | ST2705 (1.00) | 0 |
|
|
|
1208 | B1 | 2 | ST424 (1.00) | 0 |
|
|
|
1209 | E | 2 | ST219 (1.00) | 0 |
|
|
|
1210 | F | 2 | ST1722 (1.00) | 0 |
|
|
|
1211 | A | 2 | ST1201 (1.00) | 0 |
|
|
|
1212 | A | 2 | ST617 (1.00) | 0 |
|
|
|
1213 | A | 2 | ST48 (1.00) | 0 |
|
|
|
63 | D | 1 | ST38 (1.00) | 17 | ST38 (0.94);ST778 (0.06) | Europe (0.59);Unknown (0.18);Americas (0.18);Asia (0.06) | Not determined (0.53);ExPEC (0.47) |
112 | A | 1 | ST2089 (1.00) | 7 | ST2089 (1.00) | Europe (0.71);Africa (0.14);Asia (0.14) | Not determined (0.71);EPEC (0.29) |
118 | A | 1 | ST167 (1.00) | 6 | ST167 (1.00) | Europe (1.00) | Not determined (0.67);ExPEC (0.33) |
276_370 | B1 | 1 | ST156 (1.00) | 3 | ST156 (0.67);ST348 (0.33) | Americas (0.33);Europe (0.33);Asia (0.33) | Not determined (0.67);ExPEC (0.33) |
1162 | B1 | 1 | ST224 (1.00) | 1 | ST224 (1.00) | Europe (1.00) | Not determined (1.00) |
776 | F | 1 | ST1485 (1.00) | 1 | ST1485 (1.00) | Europe (1.00) | Not determined (1.00) |
1192 | D | 1 | ST391 (1.00) | 0 |
|
|
|
1235 | A | 1 | ST1237 (1.00) | 0 |
|
|
|
1236 | A | 1 | ST3489 (1.00) | 0 |
|
|
|
1237 | A | 1 | ST4981 (1.00) | 0 |
|
|
|
1238 | B1 | 1 | ST3580 (1.00) | 0 |
|
|
|
1239 | F | 1 | ST648 (1.00) | 0 |
|
|
|
1240 | A | 1 | ST48 (1.00) | 0 |
|
|
|
1241 | Unknown | 1 | ST167 (1.00) | 0 |
|
|
|
1242 | A | 1 | ST191 (1.00) | 0 |
|
|
|
1243 | B1 | 1 | ST2083 (1.00) | 0 |
|
|
|
1244 | A | 1 | ST48 (1.00) | 0 |
|
|
|
1245 | B1 | 1 | ST2077 (1.00) | 0 |
|
|
|
1246 | B1 | 1 | ST2852 (1.00) | 0 |
|
|
|
1247 | A | 1 | ST44 (1.00) | 0 |
|
|
|
1248 | Unknown | 1 | ST410 (1.00) | 0 |
|
|
|
1249 | Unknown | 1 | ST44 (1.00) | 0 |
|
|
|
1250 | A | 1 | ST617 (1.00) | 0 |
|
|
|
1251 | D | 1 | ST38 (1.00) | 0 |
|
|
|
1252 | B2 | 1 | ST131 (1.00) | 0 |
|
|
|
1253 | B1 | 1 | ST1081 (1.00) | 0 |
|
|
|
1254 | E | 1 | ST1944 (1.00) | 0 |
|
|
|
1255 | A | 1 | STNovel (1.00) | 0 |
|
|
|
1256 | Unknown | 1 | ST617 (1.00) | 0 |
|
|
|
1257 | A | 1 | ST10 (1.00) | 0 |
|
|
|
1258 | A | 1 | STNovel (1.00) | 0 |
|
|
|
1259 | Unknown | 1 | ST131 (1.00) | 0 |
|
|
|
1260 | A | 1 | ST226 (1.00) | 0 |
|
|
|
1261 | D | 1 | ST38 (1.00) | 0 |
|
|
|
1262 | A | 1 | ST10 (1.00) | 0 |
|
|
|
1263 | B1 | 1 | ST155 (1.00) | 0 |
|
|
|
1264 | A | 1 | ST617 (1.00) | 0 |
|
|
|
1265 | A | 1 | STNovel (1.00) | 0 |
|
|
|
1266 | D | 1 | ST349 (1.00) | 0 |
|
|
|
1267 | F | 1 | ST354 (1.00) | 0 |
|
|
|
1268 | A | 1 | ST167 (1.00) | 0 |
|
|
|
1269 | Unknown | 1 | STNovel (1.00) | 0 |
|
|
|
1270 | A | 1 | ST1421 (1.00) | 0 |
|
|
|
1271 | B1 | 1 | ST155 (1.00) | 0 |
|
|
|
1272 | A | 1 | ST609 (1.00) | 0 |
|
|
|
1273 | B2 | 1 | ST131 (1.00) | 0 |
|
|
|
1274 | D | 1 | ST405 (1.00) | 0 |
|
|
|
1275 | B1 | 1 | ST155 (1.00) | 0 |
|
|
|
1276 | B1 | 1 | ST906 (1.00) | 0 |
|
|
|
1277 | A | 1 | ST617 (1.00) | 0 |
|
|
|
1278 | Unknown | 1 | ST167 (1.00) | 0 |
|
|
|
1279 | A | 1 | ST48 (1.00) | 0 |
|
|
|
1280 | A | 1 | ST1303 (1.00) | 0 |
|
|
|
1281 | A | 1 | ST6438 (1.00) | 0 |
|
|
|
1282 | A | 1 | ST206 (1.00) | 0 |
|
|
|
1283 | B1 | 1 | ST1146 (1.00) | 0 |
|
|
|
1284 | B1 | 1 | ST46 (1.00) | 0 |
|
|
|
1285 | A | 1 | ST401 (1.00) | 0 |
|
|
|
1286 | A | 1 | ST44 (1.00) | 0 |
|
|
|
1287 | A | 1 | ST10 (1.00) | 0 |
|
|
|
1288 | Unknown | 1 | ST48 (1.00) | 0 |
|
|
|
1289 | B1 | 1 | ST155 (1.00) | 0 |
|
|
|
1290 | Unknown | 1 | ST10 (1.00) | 0 |
|
|
|
1291 | A | 1 | ST3856 (1.00) | 0 |
|
|
|
if (write_figs) {
write_csv(df_clusttab %>%
transmute(
Cluster = Cluster,
Phylogroup = pgroup,
n_this_study = cluster_size_dassim,
STs_this_study = STpropstr_dassim,
n_horesh = cluster_size_horesh,
STs_horesh = STpropstr_horesh,
location_horesh = horesh,
pathotype_horesh = horesh_pathotype),
here("tables/ecoli-genomics/cluster_stats.csv")
)
}
# bits and bobs to calculate for manuscript
# how many clusters?
dassimEcoli_BTEcoli.accession %>%
group_by(Cluster) %>%
tally() %>%
nrow()
#> [1] 87
dassimEcoli_BTEcoli.accession %>%
group_by(Cluster) %>%
tally() %>%
summarise(
median_size = median(n),
lq = quantile(n, 0.25),
uq = quantile(n, 0.75)
)
#> # A tibble: 1 × 3
#> median_size lq uq
#> <int> <dbl> <dbl>
#> 1 1 1 5
dassimEcoli_BTEcoli.accession %>%
group_by(Cluster) %>%
tally() %>%
arrange(-n)
#> # A tibble: 87 × 2
#> Cluster n
#> <chr> <int>
#> 1 E1 53
#> 2 E2 46
#> 3 E3 45
#> 4 E4 33
#> 5 E5 27
#> 6 E6 22
#> 7 E7 18
#> 8 E8 17
#> 9 E9 16
#> 10 E10 15
#> # ℹ 77 more rows
dassimEcoli_BTEcoli.accession %>%
group_by(Cluster, ST) %>%
tally() %>%
arrange(-n)
#> # A tibble: 92 × 3
#> # Groups: Cluster [87]
#> Cluster ST n
#> <chr> <chr> <int>
#> 1 E1 131 53
#> 2 E3 410 45
#> 3 E2 167 36
#> 4 E4 44 32
#> 5 E5 636 27
#> 6 E6 617 21
#> 7 E7 648 18
#> 8 E8 656 17
#> 9 E9 46 16
#> 10 E10 940 15
#> # ℹ 82 more rows
df_all %>%
filter(study == "dassim") %>%
mutate(numeric_cluster = as.numeric(
gsub("_.*$","",Cluster)),
clust_50orbelow =
case_when(
numeric_cluster <= 50 ~ "top 50",
numeric_cluster <=1184 ~ "not top 50 but in horsh cluster",
TRUE ~ "new cluster")
) %>%
group_by(clust_50orbelow) %>%
tally() %>%
mutate(
tot = sum(n),
prop = n/sum(n))
#> # A tibble: 3 × 4
#> clust_50orbelow n tot prop
#> <chr> <int> <int> <dbl>
#> 1 new cluster 175 473 0.370
#> 2 not top 50 but in horsh cluster 158 473 0.334
#> 3 top 50 140 473 0.296
btESBL_ecoli_horesh_metadata %>%
mutate(clust_50orbelow =
case_when(
PopPUNK <= 50 ~ "top 50",
PopPUNK <=1184 ~ "not top 50 but in horsh cluster",
TRUE ~ "new cluster")
) %>%
group_by(clust_50orbelow) %>%
tally() %>%
mutate(
tot = sum(n),
prop = n/sum(n))
#> # A tibble: 2 × 4
#> clust_50orbelow n tot prop
#> <chr> <int> <int> <dbl>
#> 1 not top 50 but in horsh cluster 2459 10146 0.242
#> 2 top 50 7687 10146 0.758
amr %>%
select(lane, class) %>%
unique() %>%
ungroup() %>%
mutate(n_tot = length(unique(lane))) %>%
group_by(class) %>%
summarise(n = n(),
n_tot = max(n_tot),
prop = n/n_tot
)
#> # A tibble: 14 × 4
#> class n n_tot prop
#> <chr> <int> <int> <dbl>
#> 1 Aminoglycoside 469 473 0.992
#> 2 AmpC 45 473 0.0951
#> 3 Carbapenemase 1 473 0.00211
#> 4 Chloramphenicol 248 473 0.524
#> 5 ESBL 472 473 0.998
#> 6 Fosfomycin 28 473 0.0592
#> 7 Macrolide 325 473 0.687
#> 8 Penicillinase 347 473 0.734
#> 9 Quinolone 407 473 0.860
#> 10 Rifampicin 2 473 0.00423
#> 11 Streptothricin 69 473 0.146
#> 12 Sulphonamide 468 473 0.989
#> 13 Tetracycline 411 473 0.869
#> 14 Trimethoprim 459 473 0.970
df_all %>%
filter(study == "dassim", ST != "Novel") %>%
group_by(ST) %>%
summarise(n = n()) %>%
ungroup() %>%
summarise(
m = median(n),
min = min(n),
lq = quantile(n, 0.25),
uq = quantile(n, 0.75),
max = max(n)
)
#> # A tibble: 1 × 5
#> m min lq uq max
#> <int> <int> <dbl> <dbl> <int>
#> 1 2 1 1 9 64
#QRDR stuff
btESBL_amrgenes %>%
semi_join(dassimEcoli_BTEcoli.accession,
by = c( "lane")) %>%
select(-genus) %>%
rename(gene = ref_seq) %>%
# add in QRDR mutations
bind_rows(
btESBL_qrdr_mutations %>%
filter(genus == "E. coli") %>%
select(-genus) %>%
semi_join(
btESBL_CARD_qrdr_mutations,
by = c("variant" = "variant",
"gene" = "gene")
) %>%
unique() %>%
mutate(gene =
gsub("(^.{1})", '\\U\\1',
gene,
perl = TRUE))
) %>%
filter(!grepl("AmpH|AMPH|AmpC|MrdA|MefB", gene)) %>%
# add in beta-lactamases
left_join(
select(btESBL_NCBI_phenotypic_bl, allele_name, class),
by = c("gene" = "allele_name")) %>%
mutate(class = case_when(
str_detect(gene, quinolone) ~ "Quinolone",
str_detect(gene, tetracycline) ~ "Tetracycline",
str_detect(gene, sulphonamide) ~ "Sulphonamide",
str_detect(gene, aminoglycoside) ~ "Aminoglycoside",
str_detect(gene, streptothricin) ~ "Streptothricin",
str_detect(gene, macrolide) ~ "Macrolide",
str_detect(gene, fosfomycin) ~ "Fosfomycin",
str_detect(gene, chloramphenicol) ~ "Chloramphenicol",
str_detect(gene, rifampicin) ~ "Rifampicin",
str_detect(gene,trimethoprim) ~ "Trimethoprim",
str_detect(gene,ESBL) ~ "ESBL",
str_detect(gene,penicillinase) ~ "Penicillinase",
str_detect(gene,ampc) ~ "AmpC",
TRUE ~ class
)) %>%
filter(class == "Quinolone") -> quinolone.amr
quinolone.amr %>%
mutate(gene = paste0(gene,
if_else(
!is.na(variant),
variant, ""))) %>%
select(lane,gene) %>%
unique() %>%
pivot_wider(id_cols = lane,
names_from = gene,
values_from = gene,
values_fn = length,
values_fill = 0) %>%
summarise(across(!contains("lane"), sum))
#> # A tibble: 1 × 10
#> QepA Qnr_S1 QnrB19 QnrS2 QnrB6 QnrB1 GyrAS83L GyrAD87N ParCS80I ParCE84G
#> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1 47 57 2 1 2 2 351 294 296 8
quinolone.amr %>%
group_by(lane) %>%
summarise(qrdr = any(grepl("Gyr|Par", gene)),
qnr = any(grepl("Qnr", gene)),
qep = any(grepl("Qep", gene))) %>%
ungroup() %>%
summarise(qrdr_alone = sum(qrdr & !qnr & !qep),
qnr_alone = sum(qnr & !qrdr & !qep),
qrdr_qnr = sum(qrdr & qnr),
qrdr_qep = sum(qrdr & qep),
qnr_qep = sum(qnr & qep)
)
#> # A tibble: 1 × 5
#> qrdr_alone qnr_alone qrdr_qnr qrdr_qep qnr_qep
#> <int> <int> <int> <int> <int>
#> 1 299 56 6 47 1
btESBL_plasmidreplicons %>%
filter(species == "E. coli") %>%
mutate(ref_seq = gsub("_.+$","", ref_seq),
ref_seq = gsub("\\.[0-9]","", ref_seq),
ref_seq = case_when(
grepl("Col", ref_seq) ~ "Col",
grepl("rep", ref_seq) ~ "rep",
grepl("^FIA", ref_seq) ~ "IncFIA",
!grepl("Inc", ref_seq) ~ "Other",
TRUE ~ ref_seq
)) %>%
filter(grepl("Inc", ref_seq)) %>%
arrange(fct_infreq(ref_seq)) %>%
pivot_wider(id_cols = lane,
values_from = ref_seq,
names_from = ref_seq,
values_fn = length,
values_fill = 0) %>%
mutate(across(where(is.numeric), ~ if_else(.x >= 1, "Present", "Absent"))) %>%
as.data.frame() ->
btESBL_plasmidreplicons_onehot
rownames(btESBL_plasmidreplicons_onehot) <- btESBL_plasmidreplicons_onehot$lane
ggtree(btESBL_coregene_tree_esco) %>%
gheatmap(select(btESBL_plasmidreplicons_onehot, -lane),
font.size = 2.5,
color = NA,
colnames_angle = 90,
offset = 0,
colnames_offset_y = 3,
colnames_position = "top",
hjust = 0) +
ylim(NA,550) +
labs(fill = "Plasmid\nReplicon") +
scale_fill_manual(values = c("white", "darkgrey"),
na.translate = FALSE) -> plas_replicons_map_to_tree
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
plas_replicons_map_to_tree
btESBL_ecoli_st410_metadata %>%
filter(accession %in% btESBL_ecoli_globalst410_tree$tip.label) %>%
bind_rows(
btESBL_sequence_sample_metadata %>%
filter(lane %in% btESBL_ecoli_globalst410_tree$tip.label) %>%
transmute(accession = lane,
`Collection Year` = year(data_date),
host = "Homo sapiens",
source = "Stool",
Country = "Malawi")
) %>%
rename(
Year = `Collection Year`) %>%
as.data.frame() -> st410_metadata
if (write_figs) {
st410_metadata %>%
filter(Country != "Malawi") %>%
transmute(accession = accession,
country = Country,
year = Year) %>%
write_csv(here("tables/ecoli-genomics/SUPP_T_st410_accession_numbers_and_metadata.csv"))
}
st410_metadata$malawi <- st410_metadata$Country == "Malawi"
st410_metadata$Continent <-
countrycode(
sourcevar = st410_metadata$Country,
origin = "country.name",
destination = "un.region.name"
)
#> Warning: Some values were not matched unambiguously: -, Africa, Asia, Blantyre, Europe
st410_metadata %>%
mutate(
Continent = case_when(
Country %in% c("Africa", "Asia", "Europe") ~
Country,
Country == "Blantyre" ~ "Africa",
TRUE ~ Continent
)
) ->
st410_metadata
rownames(st410_metadata) <- st410_metadata$accession
btESBL_ecoli_st410_amr %>%
pivot_wider(
names_from = gene,
values_from = gene,
values_fn = length,
values_fill = 0
) %>%
mutate(across(everything(), as.character)) %>%
as.data.frame() ->
amr.ariba410
rownames(amr.ariba410) <- amr.ariba410$name
btESBL_ecoli_st410_amr %>%
bind_rows(
btESBL_amrgenes %>%
filter(genus == "E. coli") %>%
select(-genus) %>%
transmute(
name = lane,
gene = ref_seq
)
) %>%
filter(name %in% btESBL_ecoli_globalst410_tree$tip.label) %>%
left_join(
select(btESBL_NCBI_phenotypic_bl, allele_name, class),
by = c("gene" = "allele_name")
) %>%
mutate(class = case_when(
grepl("CMY", name) ~ "ESBL/AmpC",
class == "ESBL" ~ "ESBL/AmpC",
TRUE ~ class
)) %>%
filter(class %in% c("ESBL/AmpC", "Carbapenemase")) %>%
mutate(gene = gsub("_", "-", gene)) %>%
arrange(class, fct_infreq(gene)) %>%
pivot_wider(
id_cols = "name",
names_from = gene,
values_from = class
) %>%
as.data.frame() ->
esbl_cpe.ariba410
rownames(esbl_cpe.ariba410) <- esbl_cpe.ariba410$name
btESBL_ecoli_st410_plasmids %>%
bind_rows(
btESBL_plasmidreplicons %>%
mutate(
ref_seq = gsub("\\..*$", "", ref_seq),
ref_seq = gsub("_.*$", "", ref_seq),
ref_seq = gsub("^FIA", "IncFIA", ref_seq)
) %>%
filter(species == "E. coli") %>%
select(-species) %>%
rename(name = lane)
) %>%
filter(name %in% btESBL_ecoli_globalst410_tree$tip.label) %>%
filter(grepl("Inc", ref_seq)) %>%
unique() %>%
arrange(fct_infreq(ref_seq)) %>%
pivot_wider(
id_cols = name,
names_from = ref_seq,
values_from = ref_seq,
values_fn = function(x) {
return("Present")
},
values_fill = NA_character_
) %>%
as.data.frame() -> st410_plasm_onehot
rownames(st410_plasm_onehot) <- st410_plasm_onehot$name
(
(
(ggtree(
btESBL_ecoli_globalst410_tree) %<+%
(select(st410_metadata, accession, Country) %>%
mutate(Country = if_else(Country == "Malawi", "Malawi",NA_character_))) %>%
gheatmap(
select(st410_metadata, `Year`),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
hjust = 0
) +
scale_fill_viridis(name = "Year", na.value = "white") +
new_scale_fill()) %>%
gheatmap(
select(st410_metadata, Continent),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.000008,
hjust = 0
) +
scale_fill_viridis_d(option = "plasma", name = "Continent", na.translate =
FALSE) +
geom_tippoint(aes(color = Country), na.rm = TRUE, size = 0.5) +
scale_color_manual(values = "red", na.translate = FALSE) +
new_scale_fill()
) %>%
gheatmap(
select(esbl_cpe.ariba410, -name),
font.size = 3,
width = 0.6,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.000016,
hjust = 0
) + scale_fill_manual(values = viridis_pal(option = "magma")(5)[c(2,3)],
na.translate = FALSE,
name = "Beta-\nlactamase") +
new_scale_fill()
) + # %>%
# gheatmap(
# select(st410_plasm_onehot, -name),
# font.size = 3,
# width = 0.5,
# colnames_position = "top",
# color = NA,
# colnames_offset_y = 5,
# colnames_angle = 90,
# offset = 0.0026,
# hjust = 0
# ) + scale_fill_manual(values = viridis_pal(option = "cividis")(7)[2],
# na.translate = FALSE,
# name = "Plasmid\nreplicon") +
ylim(NA, 420) +
geom_treescale(x = 0.00005, y = 250, offset = 5) +
geom_highlight(node = 391 ,alpha = 0.3) +
geom_cladelabel(
node = 391,
label = "B4/H24RxC",
angle = 90,
offset = 0,
offset.text = -0.000032,
barsize = 0,
hjust = 0.5,
fontsize = 3,
color = "steelblue"
) -> st410_globaltree_plot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
if (write_figs) {
ggsave(here("figures/ecoli-genomics/st410_globaltreeplot.svg"),
st410_globaltree_plot, width = 9, height = 10)
ggsave(here("figures/ecoli-genomics/st410_globaltreeplot.pdf"),
st410_globaltree_plot, width = 9, height = 10)
}
st410_globaltree_plot
#> Warning: The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
#> Warning: The following aesthetics were dropped during statistical transformation: node,
#> parent
#> ℹ This can happen when ggplot fails to infer the correct grouping structure in
#> the data.
#> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
#> variable into a factor?
tree_subset(
btESBL_ecoli_globalst410_tree, 390, levels_back = 0) -> st410_subtree
esbl_cpe.ariba410 %>%
subset(name %in% st410_subtree$tip.label) %>%
as.data.frame() ->
esbl_cpe.ariba410_subset
esbl_cpe.ariba410_subset[
c(TRUE, apply(esbl_cpe.ariba410_subset[-1], 2, function(x) !all(is.na(x))))
] ->
esbl_cpe.ariba410_subset
btESBL_ecoli_st410_plasmids %>%
bind_rows(
btESBL_plasmidreplicons %>%
mutate(
ref_seq = gsub("\\..*$", "", ref_seq),
ref_seq = gsub("_.*$", "", ref_seq),
ref_seq = gsub("^FIA", "IncFIA", ref_seq)
) %>%
filter(species == "E. coli") %>%
select(-species) %>%
rename(name = lane)
) %>%
filter(grepl("Inc", ref_seq)) %>%
filter(name %in% st410_subtree$tip.label) %>%
unique() %>%
group_by(ref_seq) %>%
mutate(n = n()) %>%
filter(n > 2) %>%
ungroup() %>%
select(-n) %>%
arrange(fct_infreq(ref_seq)) %>%
pivot_wider(
id_cols = name,
names_from = ref_seq,
values_from = ref_seq,
values_fn = function(x) {
return("Present")
},
values_fill = NA_character_
) %>%
as.data.frame() -> st410_plasm_onehot_subset
rownames(st410_plasm_onehot_subset) <- st410_plasm_onehot_subset$name
(
(
(ggtree(st410_subtree, size = 0.3) %<+% (select(st410_metadata, accession, Country) %>% mutate(Country = if_else(Country == "Malawi", "Malawi", NA_character_))) %>%
gheatmap(
select(st410_metadata, `Year`),
font.size = 4,
width = 0.06,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
hjust = 0
) +
scale_fill_viridis(
name = "Year", limits = c(1978, 2020),
na.value = "white"
) +
new_scale_fill()) %>%
gheatmap(
select(st410_metadata, Continent),
font.size = 4,
width = 0.06,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.0000015,
hjust = 0
) +
scale_fill_viridis_d(
option = "plasma", name = "Continent",
na.translate = FALSE
) +
geom_point2(aes(subset = as.numeric(label) < 95 & !isTip), size = 0.5) +
geom_tippoint(aes(color = Country), na.rm = TRUE, size = 1) +
scale_color_manual(values = "red", na.translate = FALSE) +
new_scale_fill()
) %>%
gheatmap(
select(esbl_cpe.ariba410_subset, -name),
font.size = 2.5,
width = 0.4,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.0000031,
hjust = 0
) + scale_fill_manual(
values = viridis_pal(option = "magma")(5)[c(2, 3)],
na.translate = FALSE,
name = "Beta-\nlactamase"
) +
new_scale_fill()
) %>%
gheatmap(
select(st410_plasm_onehot_subset, -name),
font.size = 2.5,
width = 0.45,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.0000125,
hjust = 0
) + scale_fill_manual(
values = viridis_pal(option = "cividis")(7)[2],
na.translate = FALSE,
name = "Plasmid\nreplicon"
) +
ylim(NA, 100) +
geom_treescale(x = 0.000004, y = 66, offset = 2, width = 1e-6) ->
st410_subtree_plot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
btESBL_ecoli_st167_plasmids %>%
bind_rows(
btESBL_plasmidreplicons %>%
mutate(
ref_seq = gsub("\\..*$", "", ref_seq),
ref_seq = gsub("_.*$", "", ref_seq),
ref_seq = gsub("^FIA", "IncFIA", ref_seq)
) %>%
filter(species == "E. coli") %>%
select(-species) %>%
rename(name = lane)
) %>%
filter(grepl("Inc", ref_seq)) %>%
filter(name %in% btESBL_ecoli_globalst167_tree$tip.label) %>%
unique() %>%
pivot_wider(
id_cols = name,
names_from = ref_seq,
values_from = ref_seq,
values_fn = function(x) {
return("Present")
},
values_fill = NA_character_
) %>%
as.data.frame() -> st167_plasm_onehot
rownames(st167_plasm_onehot) <- st167_plasm_onehot$name
btESBL_ecoli_st167_metadata %>%
filter(accession %in% btESBL_ecoli_globalst167_tree$tip.label) %>%
bind_rows(
btESBL_sequence_sample_metadata %>%
filter(lane %in% btESBL_ecoli_globalst167_tree$tip.label) %>%
transmute(
accession = lane,
`Collection Year` = year(data_date),
`Source Niche` = "Human",
Country = "Malawi"
)
) %>%
rename(Year = `Collection Year`) %>%
as.data.frame() -> st167_metadata
if (write_figs) {
st167_metadata %>%
filter(Country != "Malawi") %>%
transmute(
accession = accession,
source = `Source Niche`,
country = Country,
year = Year
) %>%
write_csv(
here("tables/ecoli-genomics/st167_accession_numbers_and_metadata.csv")
)
}
st167_metadata$malawi <- st167_metadata$Country == "Malawi"
st167_metadata$Continent <-
countrycode(
sourcevar = st167_metadata$Country,
origin = "country.name",
destination = "un.region.name"
)
rownames(st167_metadata) <- st167_metadata$accession
btESBL_ecoli_st167_amr %>%
bind_rows(
btESBL_amrgenes %>%
filter(genus == "E. coli") %>%
select(-genus) %>%
transmute(
name = lane,
gene = ref_seq
)
) %>%
filter(name %in% btESBL_ecoli_globalst167_tree$tip.label) %>%
pivot_wider(names_from = gene,
values_from = gene,
values_fn = length,
values_fill = 0) %>%
mutate(across(everything(), as.character)) %>%
as.data.frame() ->
amr.ariba
rownames(amr.ariba) <- amr.ariba$name
amr.ariba %>%
rename(sample = name) %>%
pivot_longer(-sample) %>%
filter(value == 1) %>%
left_join(
select(btESBL_NCBI_phenotypic_bl,
allele_name,
class),
by = c("name" = "allele_name")
) %>%
mutate(class = case_when(
grepl("CMY", name) ~ "ESBL/AmpC",
class == "ESBL" ~ "ESBL/AmpC",
TRUE ~ class
)) %>%
filter(class %in% c("ESBL/AmpC", "Carbapenemase") & value == 1) %>%
mutate(name = gsub("_", "-", name)) %>%
arrange(class, fct_infreq(name)) %>%
pivot_wider(id_cols = "sample",
names_from = name,
values_from = class) %>%
as.data.frame() ->
esbl_cpe.ariba
rownames(esbl_cpe.ariba) <- esbl_cpe.ariba$sample
(
(
(ggtree(btESBL_ecoli_globalst167_tree) %<+%
(select(st167_metadata, accession, Country) %>%
mutate(Country = if_else(Country == "Malawi", "Malawi",NA_character_))) %>%
gheatmap(
select(st167_metadata, `Year`),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
hjust = 0
) +
scale_fill_viridis(name = "Year", na.value = "white") +
new_scale_fill()) %>%
gheatmap(
select(st167_metadata, Continent),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.000003,
hjust = 0
) +
scale_fill_viridis_d(option = "plasma", name = "Continent", na.translate =
FALSE) +
geom_tippoint(aes(color = Country), na.rm = TRUE, size = 1) +
scale_color_manual(values = "red", na.translate = FALSE) +
new_scale_fill()
) %>%
gheatmap(
select(esbl_cpe.ariba, -sample),
font.size = 3,
width = (ncol(esbl_cpe.ariba) -1)*0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.000006,
hjust = 0
) + scale_fill_manual(values = viridis_pal(option = "magma")(5)[c(2,3)],
na.translate = FALSE,
name = "Beta-\nlactamase") +
new_scale_fill()
) +
ylim(NA, 150) +
geom_highlight(node = 142, alpha = 0.3, fill = "steelblue",
color = NA) +
geom_treescale(x = 0.000015, y = 160*0.666, offset = 2, width = 0.00001) ->
st167_globaltree_plot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
st167_globaltree_plot
if (write_figs) {
ggsave(here("figures/ecoli-genomics/st167_globaltreeplot.svg"),
st167_globaltree_plot, width = 8, height = 10)
ggsave(here("figures/ecoli-genomics/st167_globaltreeplot.pdf"),
st167_globaltree_plot, width = 8, height = 10)
}
tree_subset(
btESBL_ecoli_globalst167_tree, 142, levels_back = 0) -> st167_subtree
esbl_cpe.ariba %>%
subset(sample %in% st167_subtree$tip.label) %>%
as.data.frame() ->
esbl_cpe.ariba167_subset
esbl_cpe.ariba167_subset[
c(TRUE, apply(esbl_cpe.ariba167_subset[-1], 2, function(x) !all(is.na(x))))
] ->
esbl_cpe.ariba167_subset
btESBL_ecoli_st167_plasmids %>%
bind_rows(
btESBL_plasmidreplicons %>%
mutate(
ref_seq = gsub("\\..*$", "", ref_seq),
ref_seq = gsub("_.*$", "", ref_seq),
ref_seq = gsub("^FIA", "IncFIA", ref_seq)
) %>%
filter(species == "E. coli") %>%
select(-species) %>%
rename(name = lane)
) %>%
filter(grepl("Inc", ref_seq)) %>%
filter(name %in% st167_subtree$tip.label) %>%
unique() %>%
group_by(ref_seq) %>%
mutate(n = n()) %>%
filter(n > 2) %>%
ungroup() %>%
select(-n) %>%
arrange(fct_infreq(ref_seq)) %>%
pivot_wider(
id_cols = name,
names_from = ref_seq,
values_from = ref_seq,
values_fn = function(x) {
return("Present")
},
values_fill = NA_character_
) %>%
as.data.frame() -> st167_plasm_onehot_subset
rownames(st167_plasm_onehot_subset) <- st167_plasm_onehot_subset$name
cont_cols <- viridis_pal(option = "plasma")(4)
names(cont_cols) <- c("Africa","Americas", "Asia","Europe")
(
(
(ggtree(st167_subtree, size = 0.3) %<+% (select(st167_metadata, accession, Country) %>% mutate(Country = if_else(Country == "Malawi", "Malawi",NA_character_))) %>%
gheatmap(
select(st167_metadata, `Year`),
font.size = 4,
width = 0.06,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
hjust = 0
) +
scale_fill_viridis(name = "Year", limits = c(1978,2020),
na.value = "white") +
new_scale_fill()) %>%
gheatmap(
select(st167_metadata, Continent),
font.size = 4,
width = 0.06,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.000005,
hjust = 0
) +
scale_fill_manual(values = cont_cols,
name = "Continent",
na.translate =
FALSE) +
geom_point2(aes(subset = as.numeric(label) < 95 & !isTip), size = 1) +
geom_tippoint(aes(color = Country), na.rm = TRUE, size = 1) +
scale_color_manual(values = "red", na.translate = FALSE) +
new_scale_fill()
) %>%
gheatmap(
select(esbl_cpe.ariba167_subset, -sample),
font.size = 2.5,
width = 0.06*(ncol(esbl_cpe.ariba167_subset) - 1),
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.00001,
hjust = 0
) + scale_fill_manual(values = viridis_pal(option = "magma")(5)[c(2,3)],
na.translate = FALSE,
name = "Beta-\nlactamase") +
new_scale_fill()
) %>% gheatmap(
select(st167_plasm_onehot_subset, -name),
font.size = 2.5,
width = 0.045*(ncol(st167_plasm_onehot_subset) - 1) + 0.1,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.000029,
hjust = 0
) + scale_fill_manual(values = viridis_pal(option = "cividis")(7)[2],
na.translate = FALSE,
name = "Plasmid\nreplicon") +
ylim(NA, 60) +
geom_treescale(x = 0.00001, y = 60*0.666, offset = 1, width = 1e-5) ->
st167_subtree_plot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
if (write_figs) {
btESBL_ecoli_st131_metadata %>%
filter(Country != "Malawi") %>%
write_csv(here("tables/ecoli-genomics/SUPP_T_st131_accession_numbers_and_metadata.csv"))
}
btESBL_ecoli_st131_metadata$malawi <- btESBL_ecoli_st131_metadata$Country == "Malawi"
btESBL_ecoli_st131_metadata$Continent <-
countrycode(
sourcevar = btESBL_ecoli_st131_metadata$Country,
origin = "country.name",
destination = "un.region.name"
)
#> Warning: Some values were not matched unambiguously: Czech, Taiwan
btESBL_ecoli_st131_metadata$Continent[
btESBL_ecoli_st131_metadata$Country == "Czech"
] <- "Europe"
btESBL_ecoli_st131_metadata$Continent[
btESBL_ecoli_st131_metadata$Country == "Taiwan"
] <- "Asia"
rownames(btESBL_ecoli_st131_metadata) <- btESBL_ecoli_st131_metadata$Accession_number
btESBL_ecoli_st131_amr %>%
pivot_wider(
names_from = gene,
values_from = gene,
values_fn = length,
values_fill = 0
) %>%
mutate(across(everything(), as.character)) %>%
as.data.frame() ->
amr.ariba131
rownames(amr.ariba131) <- amr.ariba131$name
btESBL_ecoli_st131_plasmids %>%
filter(grepl("Inc", ref_seq)) %>%
unique() %>%
group_by(ref_seq) %>%
mutate(n = n()) %>%
filter(n >= 10) %>%
ungroup() %>%
select(-n) %>%
arrange(fct_infreq(ref_seq)) %>%
pivot_wider(
id_cols = name,
names_from = ref_seq,
values_from = ref_seq,
values_fn = function(x) {
return("Present")
},
values_fill = NA_character_
) %>%
as.data.frame() -> st131_plasm_onehot
rownames(st131_plasm_onehot) <- st131_plasm_onehot$name
esbl_cols <- viridis_pal(option = "magma")(5)[c(2, 3)]
names(esbl_cols) <- c("Carbapenemase", "ESBL/AmpC")
btESBL_ecoli_st131_amr %>%
left_join(
select(btESBL_NCBI_phenotypic_bl, allele_name, class),
by = c("gene" = "allele_name")
) %>%
mutate(class = case_when(
grepl("CMY", name) ~ "ESBL/AmpC",
class == "ESBL" ~ "ESBL/AmpC",
TRUE ~ class
)) %>%
filter(class %in% c("ESBL/AmpC", "Carbapenemase")) %>%
mutate(gene = gsub("_", "-", gene)) %>%
arrange(class, fct_infreq(gene)) %>%
pivot_wider(
id_cols = "name",
names_from = gene,
values_from = class
) %>%
as.data.frame() ->
# select(-`TEM-15`) -> # not in df?
esbl_cpe.ariba131
rownames(esbl_cpe.ariba131) <- esbl_cpe.ariba131$name
(
(
(ggtree(btESBL_ecoli_globalst131_tree, size = 0.2) %<+%
(select(btESBL_ecoli_st131_metadata, Accession_number, Country) %>%
mutate(Country = if_else(Country == "Malawi", "Malawi",NA_character_))) %>%
gheatmap(
select(btESBL_ecoli_st131_metadata, `Year`),
font.size = 4,
width = 0.035,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
hjust = 0
) +
scale_fill_viridis_c(name = "Year", limits = c(1965,2020),
na.value = "white") +
new_scale_fill()) %>%
gheatmap(
select(btESBL_ecoli_st131_metadata, Continent),
font.size = 4,
width = 0.035,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.000005,
hjust = 0
) +
scale_fill_viridis_d(option = "plasma", name = "Continent",
na.translate = FALSE) +
geom_tippoint(aes(color = Country), na.rm = TRUE, size = 1) +
scale_color_manual(values = "red", na.translate = FALSE) +
new_scale_fill()
) %>%
gheatmap(
select(esbl_cpe.ariba131, -name),
font.size = 2.5,
width = (ncol(esbl_cpe.ariba131) -1)*0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.0000103,
hjust = 0
) + scale_fill_manual(values = esbl_cols,
na.translate = FALSE,
name = "Beta-\nlactamase") +
new_scale_fill()
) %>% gheatmap(
select(st131_plasm_onehot, -name),
font.size = 2.5,
width = 0.026*(ncol(st131_plasm_onehot) - 1) + 0.1,
colnames_position = "top",
color = NA,
colnames_offset_y = 5,
colnames_angle = 90,
offset = 0.000059,
hjust = 0
) + scale_fill_manual(values = viridis_pal(option = "cividis")(7)[2],
na.translate = FALSE,
name = "Plasmid\nreplicon") +
ylim(NA, 1000) +
geom_treescale(x = 0.00002, y = 1000*0.666, offset = 5, width = 0.00001) +
theme(legend.position = "none") +
geom_point2(aes(subset = as.numeric(label) < 95 & !isTip), size = 0.5) ->
st131_globaltree_plot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
st131_globaltree_plot
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
st410_subtree_plot + st167_subtree_plot + st131_globaltree_plot +
plot_layout(widths = c(1,1.5),
design = "AAAAACCCCCCCC
BBBBBCCCCCCCC") +
plot_annotation(tag_levels = "A") +
plot_layout(guides = "collect") -> st410_167_131_subtree_plot
st410_167_131_subtree_plot
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
if (write_figs) {
ggsave(here("figures/ecoli-genomics/st410_167_131_subtreeplot.svg"),
st410_167_131_subtree_plot, width = 12, height = 8.2)
ggsave(here("figures/ecoli-genomics/st410_167_131_subtreeplot.pdf"),
st410_167_131_subtree_plot, width = 12, height = 8.2)
}
# ----------------------------------------------------------------------
# plot subtree of ST131
tree_subset(btESBL_ecoli_globalst131_tree, 1090) -> st131_subtree
esbl_cpe.ariba131 %>%
subset(name %in% st131_subtree$tip.label) %>%
as.data.frame() ->
esbl_cpe.ariba131_subset
esbl_cpe.ariba131_subset[
c(TRUE, apply(esbl_cpe.ariba131_subset[-1], 2, function(x) !all(is.na(x))))
] ->
esbl_cpe.ariba131_subset
st131_plasm_onehot %>%
subset(name %in% st131_subtree$tip.label) %>%
as.data.frame() -> st131_plasm_onehot_subset
st131_plasm_onehot_subset[
c(TRUE, apply(st131_plasm_onehot_subset[-1], 2, function(x) !all(is.na(x))))
] ->
st131_plasm_onehot_subset
(
(
(ggtree(tree_subset(btESBL_ecoli_globalst131_tree, 1090)) %<+%
(select(btESBL_ecoli_st131_metadata, Accession_number, Country) %>%
mutate(Country = if_else(Country == "Malawi",
"Malawi", NA_character_
))) %>%
gheatmap(
select(btESBL_ecoli_st131_metadata, `Year`),
font.size = 4,
width = 0.035,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
hjust = 0
) +
scale_fill_viridis_c(
name = "Year", limits = c(1965, 2020),
na.value = "white"
) +
new_scale_fill()) %>%
gheatmap(
select(btESBL_ecoli_st131_metadata, Continent),
font.size = 4,
width = 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.0000008,
hjust = 0
) +
scale_fill_viridis_d(
option = "plasma", name = "Continent",
na.translate = FALSE
) +
geom_tippoint(aes(color = Country), na.rm = TRUE, size = 1) +
scale_color_manual(values = "red", na.translate = FALSE) +
new_scale_fill()
) %>%
gheatmap(
select(esbl_cpe.ariba131_subset, -name),
font.size = 2.5,
width = (ncol(esbl_cpe.ariba131_subset) - 1) * 0.03,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.0000015,
hjust = 0
) + scale_fill_manual(
values = esbl_cols,
na.translate = FALSE,
name = "Beta-\nlactamase"
) +
new_scale_fill()
) %>% gheatmap(
select(st131_plasm_onehot_subset, -name),
font.size = 2.5,
width = 0.026 * (ncol(st131_plasm_onehot_subset) - 1) + 0.1,
colnames_position = "top",
color = NA,
colnames_offset_y = 0,
colnames_angle = 90,
offset = 0.0000032,
hjust = 0
) + scale_fill_manual(
values = viridis_pal(option = "cividis")(7)[2],
na.translate = FALSE,
name = "Plasmid\nreplicon"
) +
ylim(NA, 80) +
geom_treescale(x = 0.000001, y = 55, offset = 1, width = 0.000001) +
geom_point2(aes(subset = as.numeric(label) < 95 & !isTip), size = 0.5) ->
st131_subtree_plot
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
st131_subtree_plot
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
#> Warning in FUN(X[[i]], ...): NAs introduced by coercion
sessionInfo()
#> R version 4.3.1 (2023-06-16)
#> Platform: aarch64-apple-darwin20 (64-bit)
#> Running under: macOS Sonoma 14.0
#>
#> Matrix products: default
#> BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
#>
#> locale:
#> [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
#>
#> time zone: Europe/London
#> tzcode source: internal
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] viridis_0.6.4 viridisLite_0.4.2 countrycode_1.5.0 ggstance_0.3.6
#> [5] scales_1.2.1 here_1.0.1 patchwork_1.1.3 kableExtra_1.3.4
#> [9] ggnewscale_0.4.9 lubridate_1.9.3 blantyreESBL_1.4.1 stringr_1.5.0
#> [13] forcats_1.0.0 ggplot2_3.4.3 readr_2.1.4 tidyr_1.3.0
#> [17] dplyr_1.1.3 phytools_1.9-16 maps_3.4.1 ape_5.7-1
#> [21] ggtree_3.9.1 tidytree_0.4.5
#>
#> loaded via a namespace (and not attached):
#> [1] mnormt_2.1.1 gridExtra_2.3 phangorn_2.11.1
#> [4] rlang_1.1.1 magrittr_2.0.3 compiler_4.3.1
#> [7] systemfonts_1.0.4 vctrs_0.6.3 combinat_0.0-8
#> [10] quadprog_1.5-8 rvest_1.0.3 crayon_1.5.2
#> [13] pkgconfig_2.0.3 fastmap_1.1.1 labeling_0.4.3
#> [16] utf8_1.2.3 rmarkdown_2.25 tzdb_0.4.0
#> [19] ragg_1.2.5 bit_4.0.5 purrr_1.0.2
#> [22] xfun_0.40 cachem_1.0.8 aplot_0.2.2
#> [25] clusterGeneration_1.3.8 jsonlite_1.8.7 highr_0.10
#> [28] parallel_4.3.1 R6_2.5.1 RColorBrewer_1.1-3
#> [31] bslib_0.5.1 stringi_1.7.12 jquerylib_0.1.4
#> [34] numDeriv_2016.8-1.1 Rcpp_1.0.11 iterators_1.0.14
#> [37] knitr_1.44 optimParallel_1.0-2 Matrix_1.6-1.1
#> [40] igraph_1.5.1 timechange_0.2.0 tidyselect_1.2.0
#> [43] rstudioapi_0.15.0 yaml_2.3.7 doParallel_1.0.17
#> [46] codetools_0.2-19 lattice_0.21-8 tibble_3.2.1
#> [49] treeio_1.26.0 withr_2.5.1 coda_0.19-4
#> [52] evaluate_0.22 gridGraphics_0.5-1 desc_1.4.2
#> [55] xml2_1.3.5 pillar_1.9.0 foreach_1.5.2
#> [58] ggfun_0.1.3 generics_0.1.3 vroom_1.6.4
#> [61] rprojroot_2.0.3 hms_1.1.3 munsell_0.5.0
#> [64] glue_1.6.2 scatterplot3d_0.3-44 lazyeval_0.2.2
#> [67] tools_4.3.1 webshot_0.5.5 fs_1.6.3
#> [70] fastmatch_1.1-4 grid_4.3.1 plotrix_3.8-2
#> [73] colorspace_2.1-0 nlme_3.1-162 cli_3.6.1
#> [76] textshaping_0.3.6 fansi_1.0.5 expm_0.999-7
#> [79] svglite_2.1.2 gtable_0.3.4 yulab.utils_0.1.0
#> [82] sass_0.4.7 digest_0.6.33 ggplotify_0.1.2
#> [85] farver_2.1.1 memoise_2.0.1 htmltools_0.5.6.1
#> [88] pkgdown_2.0.7 lifecycle_1.0.3 httr_1.4.7
#> [91] bit64_4.0.5 MASS_7.3-60