From ac769471c9e2365487c9e0b19cfbef7234b926c2 Mon Sep 17 00:00:00 2001 From: danielnachun Date: Fri, 30 Oct 2026 00:29:37 -0700 Subject: [PATCH 1/2] fixes for enrichment testing --- DESCRIPTION | 1 + NAMESPACE | 14 +- R/AllClasses.R | 239 ++++- R/GwasFineMappingResult.R | 4 +- R/H2Estimate.R | 4 +- R/QtlFineMappingResult.R | 9 +- R/RangedTupleList.R | 95 +- R/cpp11.R | 4 +- R/fineMappingRow.R | 418 +++++++- R/fineMappingWrappers.R | 28 +- R/genotypeIo.R | 71 +- R/h2Annotations.R | 232 ++++ R/h2EstimationWrappers.R | 929 +++++++--------- R/ld.R | 14 +- R/qtlEnrichmentPipeline.R | 1046 ++++++++++++++----- R/tupleSelectors.R | 362 ++++++- R/variantId.R | 700 ++++++++++--- Rplots.pdf | Bin 235381 -> 0 bytes _pkgdown.yml | 2 + data/fsusieFineMappingExample.rda | Bin 22268 -> 22204 bytes data/gwasFineMappingExample.rda | Bin 650800 -> 650684 bytes data/gwasFineMappingLbfExample.rda | Bin 41384 -> 41316 bytes data/mvsusieFineMappingExample.rda | Bin 117036 -> 116952 bytes data/qtlFineMappingExample.rda | Bin 212476 -> 212468 bytes data/qtlFineMappingLbfExample.rda | Bin 78256 -> 78172 bytes data/qtlFineMappingPairedExample.rda | Bin 19428 -> 19352 bytes man/FineMappingResultBase-class.Rd | 15 +- man/FineMappingRow-class.Rd | 9 +- man/H2Estimate-class.Rd | 4 +- man/QtlEnrichmentParam.Rd | 11 +- man/QtlFineMappingResult-class.Rd | 5 +- man/computeBaselineEnrichment.Rd | 39 - man/fineMappingAnnotations.Rd | 96 ++ man/qtlEnrichment.Rd | 114 +- man/qtlEnrichmentPipeline.Rd | 18 +- man/trimFineMappingResult.Rd | 58 + man/updateObject-methods.Rd | 8 +- src/cpp11.cpp | 8 +- src/qtl_enrichment.cpp | 53 +- src/qtl_enrichment.h | 296 ++++-- tests/testthat/helper-fineMapping.R | 81 ++ tests/testthat/helper-h2Classes.R | 36 +- tests/testthat/test_AllClasses.R | 264 +++-- tests/testthat/test_GwasFineMappingResult.R | 4 +- tests/testthat/test_QtlFineMappingResult.R | 18 +- tests/testthat/test_RangedTupleList.R | 25 + tests/testthat/test_colocPipeline.R | 9 +- tests/testthat/test_fineMappingRow.R | 184 +++- tests/testthat/test_fineMappingWrappers.R | 7 +- tests/testthat/test_h2Annotations.R | 207 ++++ tests/testthat/test_h2EstimationWrappers.R | 461 +++++--- tests/testthat/test_qtlEnrichmentPipeline.R | 866 ++++++++++++++- tests/testthat/test_tupleSelectors.R | 92 +- tests/testthat/test_twasWeightsPipeline.R | 10 +- tests/testthat/test_variantId.R | 79 +- vignettes/coloc-pipeline.Rmd | 9 + vignettes/heritability.Rmd | 23 +- vignettes/xqtl-enrichment.Rmd | 22 + 58 files changed, 5666 insertions(+), 1637 deletions(-) delete mode 100644 Rplots.pdf delete mode 100644 man/computeBaselineEnrichment.Rd create mode 100644 man/fineMappingAnnotations.Rd create mode 100644 man/trimFineMappingResult.Rd diff --git a/DESCRIPTION b/DESCRIPTION index f70cb96b..5120edf6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -51,6 +51,7 @@ Imports: Rsamtools, S4Arrays, S4Vectors, + stringi, stringr, SummarizedExperiment, susieR (>= 0.16.4), diff --git a/NAMESPACE b/NAMESPACE index 73488ae1..b131bd8c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -209,6 +209,7 @@ export(filterInvalidSummaryStat) export(filterMixtureComponents) export(filterRelatedness) export(filterVariantsByLdReference) +export(fineMappingAnnotations) export(fineMappingMethods) export(fineMappingPipeline) export(fineMappingResult) @@ -377,6 +378,7 @@ export(testedAnnotations) export(topLoci) export(traitNames) export(traitPosition) +export(trimFineMappingResult) export(twasPredict) export(twasWeights) export(twasWeightsCv) @@ -697,7 +699,6 @@ importFrom(checkmate, ) importFrom(dplyr, across, - add_count, all_of, any_of, arrange, @@ -759,6 +760,7 @@ importFrom(purrr, map, map2, map2_dbl, + map2_lgl, map_chr, map_dbl, map_dfr, @@ -778,6 +780,7 @@ importFrom(purrr, importFrom(quadprog,solve.QP) importFrom(readr, col_character, + col_integer, cols, read_lines, read_table @@ -822,12 +825,14 @@ importFrom(stats, setNames, var ) +importFrom(stringi,stri_split_fixed) importFrom(stringr, fixed, regex, str_c, str_detect, str_ends, + str_extract, str_flatten, str_length, str_match, @@ -870,6 +875,11 @@ importFrom(utils, combn, head ) -importFrom(vctrs,vec_duplicate_detect) +importFrom(vctrs, + vec_duplicate_detect, + vec_group_id, + vec_match, + vec_unique_loc +) importFrom(vroom,vroom) useDynLib(pecotmr, .registration = TRUE) diff --git a/R/AllClasses.R b/R/AllClasses.R index f3162612..67b736dc 100644 --- a/R/AllClasses.R +++ b/R/AllClasses.R @@ -910,12 +910,15 @@ setMethod( #' \code{mcols} names the entry each row used (\code{NA} for a fit derived #' from individual-level data). Used downstream to check that the rows a #' pipeline combines share an LD reference. -#' @section Narrowed rows: Each row records in its \code{fitVariants} column -#' the ids of the variants its fit was made with (none for a row without a -#' fit). A row narrowed since -- by \code{endoapply()} or \code{[[<-} -- -#' keeps its fit as it was, so every reader of the fit warns, with -#' condition class \code{pecotmrFitCoverage}, when a row holds fewer -#' variants than its fit describes. The readers are the accessors +#' @section Narrowed rows: A row is built from its fit, holding the fit's +#' variables in the fit's order, so its fit is read off it by position. A +#' row narrowed since -- by \code{endoapply()} or \code{[[<-} -- keeps its +#' fit as it was, and is found in the fit by the names the fit gives its +#' variables (a narrowed row whose fit names none, such as a trimmed fit, +#' cannot be read). Every reader of the fit warns, with condition class +#' \code{pecotmrFitCoverage}, when a row holds fewer variants than its fit +#' describes. A row replaced by one of the same length is read by +#' position. The readers are the accessors #' (\code{susieFit()}, \code{lbf()}, \code{cvResult()}, #' \code{credibleSetSummary()} and the fSuSiE views), #' \code{computeCsCorrelation()}, \code{susieResult()}, @@ -1024,8 +1027,8 @@ setMethod( ) `[[<-`( withCv, - "fitVariants", - value = IRanges::CharacterList(map(entries, .fmRowFitVariants)) + "derivedColumns", + value = IRanges::CharacterList(map(entries, .fmRowDerivedColumns)) ) } @@ -1033,12 +1036,15 @@ setMethod( # identity column and collection-level slot. # @noRd .fmrFromEntries <- function(x, entries) { - grl <- `mcols<-`( - .rtlBindElements(map(entries, variants)), - value = .withEntryPayload(mcols(x, use.names = FALSE), entries) + # .rtlRebuild() carries the names, seqinfo (the genome build) and every + # slot -- the rows keep their keys in mcols, so the references go across + # as is -- and only the payload columns are new. + rebuilt <- .rtlRebuild(x, map(entries, variants), seq_len(length(x))) + withPayload <- `mcols<-`( + rebuilt, + value = .withEntryPayload(mcols(rebuilt, use.names = FALSE), entries) ) - # The rows keep their keys in mcols, so the references go across as is. - new(class(x), grl, ldReference = x@ldReference) + S4Vectors::`metadata<-`(withPayload, value = S4Vectors::metadata(x)) } # TRUE when an entry shares at least one variant with `keepVariants`, matched @@ -1052,6 +1058,164 @@ setMethod( length(matched$idxA) > 0L } +# ---- Trimming a collection to what its role reads --------------------------- + +#' @title Trim A Fine-Mapping Collection To What Its Role Reads +#' @description Keep, of each row's fit, only what a fine-mapping collection +#' is read for in its \code{role}, so a genome-wide collection fits in +#' memory. Nothing is sampled or summarized ahead of time: a trimmed +#' collection gives the same enrichment estimates as the untrimmed one, and +#' can still be resampled. +#' +#' \describe{ +#' \item{\code{"outcome"}}{The side whose PIPs are scanned, as in +#' \code{\link{qtlEnrichmentPipeline}}'s \code{gwasFineMappingResult}: +#' each fit keeps its \code{pip} and its credible sets (\code{sets}, +#' \code{sets_secondary}).} +#' \item{\code{"annotation"}}{The side whose single effects are sampled, +#' as in \code{qtlFineMappingResult}: each fit also keeps \code{alpha} +#' and the prior variances \code{V} of its effects of positive prior +#' variance -- the only ones the enrichment samples -- with rows and +#' entries named by effect id (\code{"L"}). A fit with no such +#' effect keeps a zero-row \code{alpha}.} +#' } +#' +#' Each row's per-variant columns are cut to the identity columns, the +#' PIPs and the credible-set columns, and those two are stored only where +#' the trimmed fit cannot give them back. The posterior summaries, marginal +#' statistics and per-fit metadata columns go, so \code{\link{topLoci}} of a +#' trimmed collection reports PIPs and credible sets only. The +#' cross-validation results go as well, so a trimmed collection cannot feed +#' \code{\link{twasWeightsPipeline}}. Identity columns, names, the genome +#' build, LD references and \code{metadata()} are kept. Trimming a trimmed +#' collection changes nothing. +#' @param x A \code{\link{GwasFineMappingResult}} or +#' \code{\link{QtlFineMappingResult}}. +#' @param role \code{"outcome"} or \code{"annotation"}. \code{NULL} (default) +#' picks by class: \code{"outcome"} for a \code{GwasFineMappingResult}, +#' \code{"annotation"} for a \code{QtlFineMappingResult}. +#' @return \code{x}, trimmed. +#' @examples +#' data(qtlFineMappingExample) +#' trimmed <- trimFineMappingResult(qtlFineMappingExample) +#' names(susieFit(trimmed)) +#' c( +#' before = utils::object.size(qtlFineMappingExample), +#' after = utils::object.size(trimmed) +#' ) +#' @importFrom checkmate assertMultiClass +#' @importFrom rlang arg_match0 +#' @export +trimFineMappingResult <- function(x, role = NULL) { + assertMultiClass(x, c("GwasFineMappingResult", "QtlFineMappingResult")) + role <- role %||% + if (methods::is(x, "GwasFineMappingResult")) "outcome" else "annotation" + role <- arg_match0(role, c("outcome", "annotation")) + entries <- map(seq_len(nrow(x)), .trimRow, x = x, role = role) + .fmrFromEntries(x, entries) +} + +# Row i of `x`, trimmed for `role`: its fit trimmed, its cross-validation +# results dropped, and its table cut to the PIPs and credible-set columns, +# which the row builder stores only where the trimmed fit cannot give them +# back. Each variant id is held once, by the row's ranges and alleles: the +# trimmed fit's vectors go unnamed, read by position, except for a row +# narrowed since its fit, which is found in the fit by name, so its fit keeps +# the names of its variables (.partsFitIds()). +# @noRd +.trimRow <- function(i, x, role) { + parts <- .fmrRowParts(x, i) + gr <- variants(parts) + if (length(gr) == 0L) { + return(parts) + } + tl <- .fmrPartsTopLoci(parts) + csCols <- names(tl)[str_detect(names(tl), "^cs_[0-9]+(_purity)?$")] + fit <- susieFit(parts) + fitIds <- if (.rowHoldsFit(length(gr), .fitWidth(fit))) { + NULL + } else { + .partsFitIds(parts) + } + .fmRowBuild( + `mcols<-`( + GenomicRanges::granges(gr, use.mcols = FALSE), + value = mcols(gr, use.names = FALSE)[, c("A1", "A2"), drop = FALSE] + ), + .trimFit(fit, role, fitIds), + tl[intersect(c("variant_id", "pip", csCols), names(tl))], + NULL + ) +} + +# A fit cut to what `role` reads (see trimFineMappingResult()), its PIPs and +# effect columns named by `fitIds` (a narrowed row's) or unnamed. A fit that +# is not a list -- none at all -- is left as it is. +# @noRd +.trimFit <- function(fit, role, fitIds = NULL) { + if (!is.list(fit) || length(fit) == 0L) { + return(fit) + } + kept <- compact(list( + pip = .trimNamed(fit[["pip"]], fitIds), + sets = fit[["sets"]], + sets_secondary = .trimSecondarySets(fit[["sets_secondary"]]) + )) + if (role == "annotation") { + kept <- c(.trimEffects(fit, fitIds), kept) + } + `class<-`(kept, class(fit)) +} + +# `pip` named by `fitIds`, or unnamed when there are none to name it by. +# @noRd +.trimNamed <- function(pip, fitIds) { + if (is.null(pip)) { + return(NULL) + } + `names<-`(pip, if (length(fitIds) == length(pip)) fitIds) +} + +# The credible sets of each other coverage, without the per-coverage copies +# of the PIPs and the rest that a fit's sets_secondary may carry: only the +# sets are read (.csSetsForCoverage()). +# @noRd +.trimSecondarySets <- function(sec) { + if (length(sec) == 0L) { + return(NULL) + } + map(sec, function(s) list(sets = s$sets)) +} + +# The alpha rows and prior variances of the fit's effects of positive prior +# variance, named by effect id, and alpha's columns by `fitIds` when given. +# An already trimmed fit's names are its ids. +# @noRd +.trimEffects <- function(fit, fitIds = NULL) { + alpha <- fit[["alpha"]] + priorVariance <- fit[["V"]] %||% fit[["prior_variance"]] + if (is.null(alpha) || is.null(priorVariance)) { + return(list()) + } + alpha <- as.matrix(alpha) + ids <- if (.namedByEffect(alpha)) { + rownames(alpha) + } else { + str_c("L", seq_len(nrow(alpha))) + } + keep <- which(as.numeric(priorVariance) > 0) + list( + alpha = `dimnames<-`( + alpha[keep, , drop = FALSE], + list( + ids[keep], + if (length(fitIds) == ncol(alpha)) fitIds + ) + ), + V = set_names(as.numeric(priorVariance)[keep], ids[keep]) + ) +} + # ============================================================================= # Variant reconciliation between two fine-mapping collections # ----------------------------------------------------------------------------- @@ -1434,12 +1598,10 @@ setMethod( } ) -# Before rows recorded the variants their fits were made with, a collection -# had no `fitVariants` column. A fine-mapping fit names its own variants, so -# each row's are read off it; a row whose fit names none (a -# cross-validation-only row, or an unnamed fit) records what it holds, and a -# row with no fit records none. The inherited update runs either way, for -# the updates every collection shares. +# Collections saved while rows recorded the variants their fits were made +# with carry a `fitVariants` column. A row's variants are its fit's +# variables, read by position, so the column is dropped. The inherited update +# runs either way, for the updates every collection shares. #' @rdname updateObject-methods #' @export setMethod( @@ -1449,46 +1611,15 @@ setMethod( if (isTRUE(verbose)) { message(str_c("updateObject(object = '", class(object)[[1L]], "')")) } - if (!is_in("fitVariants", .tupleColumnNames(object))) { - fv <- map(seq_along(object), .fmrBackfillFitVariants, x = object) - object <- `$<-`(object, "fitVariants", IRanges::CharacterList(fv)) + md <- mcols(object, use.names = FALSE) + if (is_in("fitVariants", colnames(md))) { + md$fitVariants <- NULL + object <- `mcols<-`(object, value = md) } methods::callNextMethod(object, ..., verbose = verbose) } ) -# @noRd -.fmrBackfillFitVariants <- function(i, x) { - md <- mcols(x, use.names = FALSE) - fit <- md$susieFit[[i]] - if (length(fit) == 0L && is.null(md$cvResult[[i]])) { - return(character(0)) - } - named <- .fitNamedVariants(fit) - if (length(named) > 0L) { - return(normalizeVariantId(named)) - } - .grVariantIds(x[[i]]) -} - -# The variant names a fine-mapping fit carries: its PIPs' names, else the -# columns of its effect matrices (SuSiE, mvSuSiE) or of csd_X (fSuSiE); none -# for an unnamed fit. A null_weight fit gives its effect matrices one more -# column, which susieR names "null"; that is no variant. -# @noRd -.fitNamedVariants <- function(fit) { - if (!is.list(fit)) { - return(character(0)) - } - named <- as.character( - names(fit[["pip"]]) %||% - colnames(fit[["alpha"]]) %||% - colnames(fit[["lbf_variable"]]) %||% - names(fit[["csd_X"]]) - ) - named[named != "null"] -} - #' @rdname traitPosition #' @examples #' data(qtlDatasetExample) diff --git a/R/GwasFineMappingResult.R b/R/GwasFineMappingResult.R index 4b985caf..c59f1e57 100644 --- a/R/GwasFineMappingResult.R +++ b/R/GwasFineMappingResult.R @@ -202,7 +202,9 @@ GwasFineMappingResult <- function( method = as.character(method), susieFit = S4Vectors::SimpleList(map(entry, susieFit)), cvResult = S4Vectors::SimpleList(map(entry, cvResult)), - fitVariants = IRanges::CharacterList(map(entry, .fmRowFitVariants)) + derivedColumns = IRanges::CharacterList( + map(entry, .fmRowDerivedColumns) + ) ) |> .appendBlockIdCol(blockId %||% rep(NA_character_, n), n) |> .appendTraitPosCol(traitPos, n) |> diff --git a/R/H2Estimate.R b/R/H2Estimate.R index 770ec8f0..ba618074 100644 --- a/R/H2Estimate.R +++ b/R/H2Estimate.R @@ -27,8 +27,8 @@ NULL #' NULL if unstratified. Two shapes are possible, depending on which route #' produced the estimate: #' \describe{ -#' \item{partitioned}{tau-based enrichment of the baseline annotations -#' (\code{computeBaselineEnrichment}, \code{.gldscEnrichmentDf}), with +#' \item{partitioned}{enrichment of the user's baseline annotations +#' from their partitioned heritabilities \eqn{A'A\tau}, with #' columns \code{annotation}, \code{tau}, \code{tauSe}, #' \code{enrichment}, \code{enrichmentSe}, \code{enrichmentP}, #' \code{propH2}, \code{propSnps}.} diff --git a/R/QtlFineMappingResult.R b/R/QtlFineMappingResult.R index 482f2a08..727ff837 100644 --- a/R/QtlFineMappingResult.R +++ b/R/QtlFineMappingResult.R @@ -25,9 +25,8 @@ NULL #' Required \code{mcols()} columns: the identity tuple \code{study}, #' \code{context}, \code{trait} and \code{method}, which is unique, and #' each row's stored fit \code{susieFit} and cross-validation result -#' \code{cvResult}. The constructor also records \code{fitVariants}, the -#' variants each fit was made with. There is no LD-block axis: a trait's fit -#' is one row wherever its window falls. +#' \code{cvResult}. There is no LD-block axis: a trait's fit is one row +#' wherever its window falls. #' #' Optional columns \code{jointStudies}, \code{jointContexts}, #' \code{jointTraits} appear when the collection contains rows produced by a @@ -352,7 +351,9 @@ QtlFineMappingResult <- function( method = as.character(method), susieFit = S4Vectors::SimpleList(map(payloads, susieFit)), cvResult = S4Vectors::SimpleList(map(payloads, cvResult)), - fitVariants = IRanges::CharacterList(map(payloads, .fmRowFitVariants)) + derivedColumns = IRanges::CharacterList( + map(payloads, .fmRowDerivedColumns) + ) ) withJoint <- .qfmrAppendJointCols( baseCols, diff --git a/R/RangedTupleList.R b/R/RangedTupleList.R index c9250442..ffbe833a 100644 --- a/R/RangedTupleList.R +++ b/R/RangedTupleList.R @@ -186,8 +186,16 @@ setMethod("genomicRegion", "RangedTupleList", function(x) { if (length(object) == 0L) { return(TRUE) } - spans <- lengths(range(object)) - bad <- which(spans > 1L) + # Compared as integer (seqname, strand) codes against each element's first + # range: range() would paste a string key for every range of a + # genome-wide collection to find the same thing. + flat <- unlist(object, use.names = FALSE) + n <- lengths(object) + key <- as.integer(seqnames(flat)) * + 3L + + as.integer(BiocGenerics::strand(flat)) + firstKey <- rep(key[(cumsum(n) - n + 1L)[n > 0L]], n[n > 0L]) + bad <- unique(rep(seq_along(object), n)[key != firstKey]) if (length(bad) == 0L) { return(TRUE) } @@ -608,11 +616,23 @@ setMethod("trim", "RangedTupleList", function(x, use.names = TRUE, ...) { # per element made building the keys cost a millisecond a row. # @noRd .rtlFirstSpans <- function(x) { - spans <- range(x) - n <- lengths(spans) + # Each element sits on one (seqname, strand) (.rtlCheckSingleSpan()), so + # its span is its smallest start to its largest end there: taken from + # integer vectors, where range() would paste a key for every range. + n <- lengths(x) has <- n > 0L - flat <- unlist(spans, use.names = FALSE) - list(first = flat[(cumsum(n) - n + 1L)[has]], has = has) + flat <- unlist(x, use.names = FALSE) + group <- rep(seq_along(x), n) + first <- (cumsum(n) - n + 1L)[has] + starts <- vapply(split(start(flat), group), min, integer(1)) + ends <- vapply(split(end(flat), group), max, integer(1)) + spans <- GenomicRanges::GRanges( + seqnames(flat)[first], + IRanges::IRanges(starts, ends), + strand = BiocGenerics::strand(flat)[first], + seqinfo = GenomeInfoDb::seqinfo(flat) + ) + list(first = spans, has = has) } # The key of the first range of `g`, a span: callers pass range() of a @@ -691,9 +711,11 @@ setMethod("trim", "RangedTupleList", function(x, use.names = TRUE, ...) { #' both in one \code{qcInfo} record have it split between the two. #' Their genome build is in \code{seqinfo()}; ones saved with it in a #' \code{genome} slot have it moved there. -#' \item Fine-mapping results and TWAS weights record the variants each -#' row was fitted on in a \code{fitVariants} column; ones saved without -#' it have it filled in from their fits. +#' \item TWAS weights record the variants each row was fitted on in a +#' \code{fitVariants} column; ones saved without it have it filled in +#' from their fits. Fine-mapping results no longer record them (a row's +#' variants are its fit's variables); ones saved with the column have +#' it dropped. #' \item A \code{CtwasResult} holds one element per region; one saved as a #' table of whole runs is rebuilt. #' \item A \code{QtlDataset} no longer stores run settings (genotype @@ -1262,7 +1284,11 @@ flattenTupleRanges <- function(x) { ) abort(msg) } - gr <- .rtlGatherElements(x, seq_len(length(x))) + gr <- if (methods::is(x, "FineMappingResultBase")) { + .fmrGatherVariants(x, seq_len(length(x))) + } else { + .rtlGatherElements(x, seq_len(length(x))) + } md <- mcols(x, use.names = FALSE) if (is.null(md) || ncol(md) == 0L || length(gr) == 0L) { return(gr) @@ -1342,9 +1368,58 @@ nestTupleRanges <- function(flat, template) { } keys <- .rtlNestKeys(flat, template, .rtlTupleKeyCols(template)) elements <- map(keys$wanted, .rtlPickByKey, flat = flat, have = keys$have) + if (methods::is(template, "FineMappingResultBase")) { + elements <- .fmrDropRestoredColumns(elements, template) + } .rtlRebuild(template, elements, seq_len(length(template))) } +# Re-nested fine-mapping elements without the columns flattening derived back +# (see flattenTupleRanges()): the pip, unless the template stored it, and the +# credible-set columns each row records as derived -- each only while the +# row's fit still gives exactly those values, so a column a verb changed is +# kept. +# @noRd +.fmrDropRestoredColumns <- function(elements, template) { + storedPip <- .rtlHasVariantColumn(template, "pip") + map2( + elements, + seq_along(elements), + .fmrDropRestoredAt, + template = template, + storedPip = storedPip + ) +} + +# @noRd +.fmrDropRestoredAt <- function(g, i, template, storedPip) { + parts <- .fmrRowParts(template, i) + recorded <- .fmRowDerivedColumns(parts) + if (length(g) == 0L) { + md <- mcols(g, use.names = FALSE) + labelCols <- .fmRowCsRecord(recorded)$labels + derived <- c( + if (storedPip) character(0) else "pip", + labelCols, + str_c(labelCols, "_purity") + ) + return(`mcols<-`( + g, + value = md[, setdiff(colnames(md), derived), drop = FALSE] + )) + } + fit <- susieFit(parts) + cols <- .fitColumnsFor(g, fit) + if (!storedPip) { + g <- .fmRowDropFitPip(g, fit, cols) + } + if (length(recorded) == 0L) { + return(g) + } + cs <- .fmRowDropFitCs(g, fit, cols) + if (identical(cs$derived, recorded)) cs$variants else g +} + # Element and range keys for re-nesting. The identity tuple alone keys an # element unless several elements share it -- one tuple split across # chromosomes -- and then the one seqname each of those spans is added on both diff --git a/R/cpp11.R b/R/cpp11.R index 25978b9a..616bd9e2 100644 --- a/R/cpp11.R +++ b/R/cpp11.R @@ -36,8 +36,8 @@ prsCsFactorCpp <- function(a, b, phi, bhat, maf, n, factorR, nIter, nBurnin, thi .Call(`_pecotmr_prsCsFactorCpp`, a, b, phi, bhat, maf, n, factorR, nIter, nBurnin, thin, verbose, seed) } -qtlEnrichmentCpp <- function(rGwasPip, rQtlSusieFit, piGwas, piQtl, ImpN, shrinkageLambda, doubleShrinkage, besselCorrection, numThreads, seed) { - .Call(`_pecotmr_qtlEnrichmentCpp`, rGwasPip, rQtlSusieFit, piGwas, piQtl, ImpN, shrinkageLambda, doubleShrinkage, besselCorrection, numThreads, seed) +qtlEnrichmentCpp <- function(rGwasPip, rQtlSusieFit, piGwas, piQtl, totalVariants, ImpN, shrinkageLambda, doubleShrinkage, besselCorrection, numThreads, seed) { + .Call(`_pecotmr_qtlEnrichmentCpp`, rGwasPip, rQtlSusieFit, piGwas, piQtl, totalVariants, ImpN, shrinkageLambda, doubleShrinkage, besselCorrection, numThreads, seed) } sdprCpp <- function(bhatR, LD, n, perVariantSampleSize, array, a, c, M, a0k, b0k, iter, burn, thin, numThreads, optLlk, verbose, seed) { diff --git a/R/fineMappingRow.R b/R/fineMappingRow.R index 8824150d..4f167108 100644 --- a/R/fineMappingRow.R +++ b/R/fineMappingRow.R @@ -28,10 +28,11 @@ NULL #' columns are the per-variant \code{topLoci} values. #' @slot susieFit The stored fine-mapping fit, or \code{NULL}. #' @slot cvResult Cross-validation payload, or \code{NULL}. -#' @slot fitVariants The ids of the variants the stored fit was made with, in -#' the fit's own order, recorded when the row is built; empty for a row with -#' no fit. A row narrowed to fewer variants keeps them, which is how reading -#' the fit can tell it describes more variants than the row now holds. +#' @slot derivedColumns The credible-set columns (\code{cs_} and +#' their \code{_purity} partners) the row does not store because its fit +#' reproduces them exactly, followed by \code{"method="}, the method +#' tag of their labels; every view derives them back. Empty when it stores +#' all it was given. #' @section Coercion: \code{as(x, "GRanges")} gives the row's variants with #' their per-variant \code{topLoci} columns: the element a collection #' stores for it. @@ -44,9 +45,13 @@ setClass( variants = "GRanges", susieFit = "ANY", cvResult = "ANY", - fitVariants = "character" + derivedColumns = "character" ), - prototype(susieFit = NULL, cvResult = NULL, fitVariants = character(0)) + prototype( + susieFit = NULL, + cvResult = NULL, + derivedColumns = character(0) + ) ) #' @importFrom checkmate makeAssertCollection assertList @@ -120,17 +125,348 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { if (nrow(tl) > 0L && is_in("variant_id", names(tl))) { .fmRowCheckIdOrder(vids, as.character(tl$variant_id)) } - gr <- .fmRowAttachPayload(bare, tl) - fitted <- length(susieFit) > 0L || !is.null(cvResult) + .fmRowBuild(bare, susieFit, tl, cvResult) +} + +# The row from its variant ranges `bare` and the checked table `tl`. The +# row's variants are its fit's variables, in the fit's order, unless it is a +# narrowed row trimFineMappingResult() rebuilds, whose fit names them. +# @noRd +.fmRowBuild <- function(bare, susieFit, tl, cvResult) { + # Placed once: both checks below read the fit at these columns. + cols <- .fitColumnsFor(bare, susieFit) + gr <- .fmRowDropFitPip(.fmRowAttachPayload(bare, tl), susieFit, cols) + cs <- .fmRowDropFitCs(gr, susieFit, cols) new( "FineMappingRow", - variants = gr, + variants = cs$variants, susieFit = susieFit, cvResult = cvResult, - fitVariants = if (fitted) .grVariantIds(bare) else character(0) + derivedColumns = cs$derived + ) +} + +# The per-variant pip column is not stored when the fit reproduces it +# exactly: every reader restores it from the fit +# (.fmRowRestoredVariants()), and storing it twice doubles the PIPs a +# genome-wide collection holds. A pip the fit does not reproduce -- a row +# without a fit, or one whose table was edited -- is kept as it is, and so is +# one outside the place the readers restore it to (.fmRowPipSlot()), so a +# table comes back with its columns in the order it was given. +# @noRd +.fmRowDropFitPip <- function(gr, fit, cols = .fitColumnsFor(gr, fit)) { + md <- mcols(gr, use.names = FALSE) + if (length(gr) == 0L || !is_in("pip", colnames(md))) { + return(gr) + } + rest <- md[, colnames(md) != "pip", drop = FALSE] + if (.fmRowPipSlot(colnames(rest)) != match("pip", colnames(md)) - 1L) { + return(gr) + } + derived <- .fitPipFor(fit, cols) + if (is.null(derived) || !identical(derived, as.numeric(md$pip))) { + return(gr) + } + md$pip <- NULL + `mcols<-`(gr, value = md) +} + +# The PIP the fit gives the variants at its columns `cols` +# (.fitColumnsFor()); NULL when the fit carries no PIP vector, or the +# variants could not be placed in it. +# @noRd +.fitPipFor <- function(fit, cols) { + pip <- if (is.list(fit)) fit[["pip"]] else NULL + if (!is.numeric(pip) || is.null(cols)) { + return(NULL) + } + as.numeric(pip)[cols] +} + +# How many of a row's variant columns `cn` precede its pip: those up to +# `marginal_p`, else up to `A2`, which is where the fine-mapping table puts +# it; a table with neither has it first. +# @noRd +.fmRowPipSlot <- function(cn) { + anchor <- intersect(c("marginal_p", "A2"), cn) + if (length(anchor) == 0L) { + return(0L) + } + match(anchor[[1L]], cn) +} + +# How many of a row's variant columns `cn` precede its credible-set block: +# those up to `logBF`, where buildTopLoci() puts it; in a table without one (a +# trimmed row, see trimFineMappingResult()), those up to `pip`, or up to +# where the pip goes when it is not stored either. +# @noRd +.fmRowCsSlot <- function(cn) { + for (anchor in c("logBF", "pip")) { + if (is_in(anchor, cn)) { + return(match(anchor, cn)) + } + } + .fmRowPipSlot(cn) +} + +# A row's variants with every column the constructor dropped derived back +# from its fit: the recorded credible-set columns, then the pip. +# @noRd +.fmRowRestoredVariants <- function(row) { + .fmRowRestoreFitPip(.fmRowRestoreFitCs(variants(row), row), row) +} + +# `gr` with the pip column the constructor dropped restored from the fit of +# `row`: added after `marginal_p` (else after `A2`), where the fine-mapping +# table puts it, or filled where a collection joining rows with and without +# it left NA. A row whose fit gives no PIP is returned as it is. +# @noRd +.fmRowRestoreFitPip <- function(gr, row) { + md <- mcols(gr, use.names = FALSE) + has <- is_in("pip", colnames(md)) + if (length(gr) == 0L || (has && !anyNA(md$pip))) { + return(gr) + } + fit <- susieFit(row) + if (!is.numeric(if (is.list(fit)) fit[["pip"]])) { + return(gr) + } + derived <- .fitPipFor(fit, .fitColumnsPlaced(gr, fit)) + if (has) { + md$pip <- coalesce(as.numeric(md$pip), derived) + return(`mcols<-`(gr, value = md)) + } + .fmRowInsertColumns(gr, list(pip = derived), .fmRowPipSlot(colnames(md))) +} + +# The fit's columns of the variants `gr`, for restoring what the row does not +# store: an error when they cannot be placed in it (.fitColumnsFor()), since +# the values the row left to its fit would then be lost without a word. +# @noRd +.fitColumnsPlaced <- function(gr, fit) { + cols <- .fitColumnsFor(gr, fit) + if (is.null(cols)) { + .abortUnnamedNarrowedFit(length(gr), .fitWidth(fit)) + } + cols +} + +# `gr` with the columns `cols` inserted after its first `at` variant columns. +# @noRd +.fmRowInsertColumns <- function(gr, cols, at) { + md <- mcols(gr, use.names = FALSE) + `mcols<-`( + gr, + value = cbind( + md[, seq_len(at), drop = FALSE], + S4Vectors::DataFrame(cols, check.names = FALSE), + md[, setdiff(seq_len(ncol(md)), seq_len(at)), drop = FALSE] + ) + ) +} + +# The credible-set columns are not stored either when the fit reproduces +# them exactly, which is the common case: buildTopLoci() wrote them from the +# very credible sets the fit keeps (its `sets`, and `sets_secondary` for the +# other coverages), labelled with the method tag its labels carry. The whole +# block -- +# every coverage's cs_ label, then every cs__purity, highest coverage +# first, right after `logBF` as buildTopLoci() lays it out (see +# .fmRowCsSlot()) -- goes or stays +# together. It stays whenever the fit cannot give it back exactly: a fit +# without the credible sets of every coverage (an untrimmed fit with no +# recorded coverage, a fractional coverage), a table relabelled after the +# fact (adjustPips()), a row narrowed past its fit's variants, a table not +# laid out as buildTopLoci() lays it out. Returns the variants and the +# record of what went. +# @noRd +.fmRowDropFitCs <- function(gr, fit, cols = .fitColumnsFor(gr, fit)) { + kept <- list(variants = gr, derived = character(0)) + md <- mcols(gr, use.names = FALSE) + block <- .fmRowCsBlock(colnames(md)) + if (length(gr) == 0L || length(block) == 0L || !is.list(fit)) { + return(kept) + } + labelCols <- names(block$labels) + tag <- .fmRowCsLabelTag(md[, labelCols, drop = FALSE]) + derived <- .fitCsColumns(fit, labelCols, tag, cols, length(gr)) + if (is.null(derived)) { + return(kept) + } + stored <- as.list(md[, names(derived), drop = FALSE]) + if (!.fmRowSameCsColumns(stored, derived)) { + return(kept) + } + list( + variants = `mcols<-`( + gr, + value = md[, setdiff(colnames(md), names(derived)), drop = FALSE] + ), + derived = c(labelCols, str_c("method=", tag)) + ) +} + +# The method tag of a table's credible-set labels ("_"), read off the +# labels themselves; NULL unless they all carry the same one. +# @noRd +.fmRowCsLabelTag <- function(labels) { + values <- unique(as.character(unlist(as.list(labels), use.names = FALSE))) + tags <- unique(str_remove(values[!is.na(values)], "_[0-9]+$")) + if (length(tags) != 1L || !nzchar(tags)) { + return(NULL) + } + tags +} + +# A row's record of derived credible-set columns, parsed: the cs_ label +# columns, highest coverage first, and the method tag their labels carry, +# which the record ends with as "method=". +# @noRd +.fmRowCsRecord <- function(record) { + tagAt <- str_detect(record, "^method=") + list( + labels = record[!tagAt], + tag = if (any(tagAt)) str_remove(record[tagAt][[1L]], "^method=") ) } +# The credible-set block of a table with variant columns `cn`, when it is laid +# out as buildTopLoci() lays it out: the cs_ labels by decreasing coverage +# then their purities, contiguous, where .fmRowCsSlot() puts them. NULL +# otherwise. +# @noRd +.fmRowCsBlock <- function(cn) { + labelCols <- cn[str_detect(cn, "^cs_[0-9]+$")] + if (length(labelCols) == 0L) { + return(NULL) + } + coverage <- as.numeric(str_remove(labelCols, "^cs_")) / 100 + labelCols <- labelCols[order(coverage, decreasing = TRUE)] + expected <- c(labelCols, str_c(labelCols, "_purity")) + at <- .fmRowCsSlot(setdiff(cn, expected)) + if (!identical(cn[at + seq_along(expected)], expected)) { + return(NULL) + } + list(labels = set_names(sort(coverage, decreasing = TRUE), labelCols)) +} + +# Whether the stored credible-set columns are exactly the derived ones: +# labels compared as text, purities as numbers. +# @noRd +.fmRowSameCsColumns <- function(stored, derived) { + isLabel <- !str_detect(names(derived), "_purity$") + asStored <- c( + map(stored[isLabel], as.character), + map(stored[!isLabel], as.numeric) + ) + identical(asStored[names(derived)], derived) +} + +# The credible-set columns `labelCols` (cs_, highest coverage first) and +# their purities, as buildTopLoci() derives them from the fit's credible sets +# at each coverage, for the variants at the fit's columns `col` +# (.fitColumnsFor()) of a row of `n` variants. NULL when the fit cannot give +# them: no method tag, a coverage it kept no credible sets for, or a variant +# it was not made with or could not be placed in it. +# @noRd +.fitCsColumns <- function(fit, labelCols, tag, col, n) { + if (is.null(tag) || is.null(col) || anyNA(col)) { + return(NULL) + } + perCoverage <- map( + as.numeric(str_remove(labelCols, "^cs_")) / 100, + .fitCsAtCoverage, + fit = fit, + nV = coalesce(.fitWidth(fit), n) + ) + if (any(map_lgl(perCoverage, is.null))) { + return(NULL) + } + c( + set_names( + map(perCoverage, function(p) .btlCsLabel(p$effect[col], tag)), + labelCols + ), + set_names( + map(perCoverage, function(p) p$purity[col]), + str_c(labelCols, "_purity") + ) + ) +} + +# One coverage's per-variable effect index and purity, as .btlCsMembership() +# computes them, from the credible sets the fit keeps for that coverage; NULL +# when it keeps none. +# @noRd +.fitCsAtCoverage <- function(coverage, fit, nV) { + sets <- .csSetsForCoverage(fit, coverage) + if (is.null(sets)) { + return(NULL) + } + tables <- list(list(sets = sets)) + position <- .fmCsIdxAtCoverage(coverage, coverage, tables, nV, quiet = TRUE) + list( + effect = .fmEffectIdxAtCoverage(coverage, position, coverage, tables), + purity = .fmPurityAtCoverage(coverage, position, coverage, tables) + ) +} + +# `gr` with the credible-set columns `row` records as derived restored from +# its fit: inserted where .fmRowCsSlot() puts them where they are absent +# (before the pip is restored, so that slot is the one they were dropped +# from), filled where a +# collection joining rows with and without them left them NA. +# @noRd +.fmRowRestoreFitCs <- function(gr, row) { + record <- .fmRowCsRecord(.fmRowDerivedColumns(row)) + md <- mcols(gr, use.names = FALSE) + if (length(record$labels) == 0L || length(gr) == 0L) { + return(gr) + } + wanted <- c(record$labels, str_c(record$labels, "_purity")) + if (all(map_lgl(wanted, .fmRowColumnFilled, md = md))) { + return(gr) + } + fit <- susieFit(row) + derived <- .fitCsColumns( + fit, + record$labels, + record$tag, + .fitColumnsPlaced(gr, fit), + length(gr) + ) + if (is.null(derived)) { + return(gr) + } + present <- intersect(names(derived), colnames(md)) + if (length(present) == 0L) { + return(.fmRowInsertColumns(gr, derived, .fmRowCsSlot(colnames(md)))) + } + for (nm in present) { + if (all(is.na(md[[nm]]))) { + md[[nm]] <- derived[[nm]] + } + } + `mcols<-`(gr, value = md) +} + +# Whether `md` has column `nm` with a value somewhere: a column absent, or +# all NA where a collection joined rows with and without it, is restored. +# @noRd +.fmRowColumnFilled <- function(nm, md) { + is_in(nm, colnames(md)) && !all(is.na(md[[nm]])) +} + +# The credible-set columns a row records as derived. A row saved before rows +# recorded them has no such slot, and derives none. +# @noRd +.fmRowDerivedColumns <- function(x) { + if (!methods::.hasSlot(x, "derivedColumns")) { + return(character(0)) + } + x@derivedColumns +} + # The row a cross-validation-only fit leaves (CrossValidationParam(fitFullData = # FALSE)): no variants, no fit, no top loci -- only the cross-validation result # attached afterwards. The writers refuse such rows (.fmbIncompleteRows()), and @@ -522,10 +858,20 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # matrix. .csEffectLogBf <- function(fit, Lidx) { lbf <- fit$lbf_variable - if (is.null(lbf) || !is.matrix(lbf) || is.na(Lidx) || Lidx > nrow(lbf)) { + if (is.null(lbf) || !is.matrix(lbf) || is.na(Lidx)) { + return(NA_real_) + } + row <- if (.namedByEffect(lbf)) { + match(str_c("L", Lidx), rownames(lbf)) + } else if (Lidx <= nrow(lbf)) { + Lidx + } else { + NA_integer_ + } + if (is.na(row)) { return(NA_real_) } - lv <- keep(as.numeric(lbf[Lidx, ]), is.finite) + lv <- keep(as.numeric(lbf[row, ]), is.finite) if (length(lv) == 0L) { return(NA_real_) } @@ -543,13 +889,13 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # stored fit. The credible-set index in the `cs` label doubles as the effect (L) # index for susie-family fits (unfiltered CS are ordered by effect). # @noRd -.csSummaryFit <- function(tl, fit, coverage) { +.csSummaryFit <- function(tl, fit, coverage, fitIds = colnames(fit$alpha)) { csCol <- str_c("cs_", coverage * 100) purCol <- str_c(csCol, "_purity") if (is.null(tl) || nrow(tl) == 0L) { return(.emptyCsSummary()) } - specs <- .csSummarySpecs(tl, fit, coverage, csCol) + specs <- .csSummarySpecs(tl, fit, coverage, csCol, fitIds) if (length(specs) == 0L) { return(.emptyCsSummary()) } @@ -575,23 +921,24 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # membership. Falls back to enumerating the per-variant cs_ column (the # labelled members only) for a minimal or hand-built fit with no sets. # @noRd -.csSummarySpecs <- function(tl, fit, coverage, csCol) { +.csSummarySpecs <- function(tl, fit, coverage, csCol, fitIds) { setsObj <- .csSetsForCoverage(fit, coverage) hasSets <- !is.null(setsObj) && !is.null(setsObj$cs) && length(setsObj$cs) > 0L if (hasSets) { - return(.csSpecsFromFit(setsObj, fit, tl, csCol)) + return(.csSpecsFromFit(setsObj, fit, tl, csCol, fitIds)) } .csSpecsFromColumn(tl, csCol) } # Complete per-CS specs from the fit's credible sets. Member POSITIONS map to -# variant ids through the alpha column names; the effect index comes from the -# sets$cs "L" names. +# variant ids through `fitIds`, the variables the fit was made with in its +# order (a trimmed fit's vectors carry no names); the effect index comes from +# the sets$cs "L" names. # @noRd -.csSpecsFromFit <- function(setsObj, fit, tl, csCol) { - vn <- colnames(fit$alpha) +.csSpecsFromFit <- function(setsObj, fit, tl, csCol, fitIds) { + vn <- fitIds eff <- .fmEffectIndices(setsObj$cs) tag <- .csMethodTag(tl, fit, csCol) map( @@ -684,7 +1031,8 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # mean-purity, plus the resolved column names. # @noRd .csSummaryContext <- function(tl, fit, coverage, csCol, purCol) { - Vvec <- if (!is.null(fit$V)) as.numeric(fit$V) else NULL + # Names kept: a trimmed fit's V is named by effect id (.csEffectV()). + Vvec <- if (!is.null(fit$V)) set_names(as.numeric(fit$V), names(fit$V)) sp <- fit$sets$purity mc <- if (is.null(sp)) { character(0) @@ -765,11 +1113,22 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # V: the effect's prior variance (NA when out of range / unavailable). # @noRd .csEffectV <- function(Vvec, Lidx) { - if (!is.null(Vvec) && !is.na(Lidx) && Lidx <= length(Vvec)) { - Vvec[Lidx] - } else { - NA_real_ + if (is.null(Vvec) || is.na(Lidx)) { + return(NA_real_) + } + # A trimmed fit keeps only its effects of positive prior variance, named + # by effect id, so V[k] would be some other effect's; read it by name. + if (.namedByEffect(Vvec)) { + return(unname(as.numeric(Vvec[str_c("L", Lidx)]))) } + if (Lidx <= length(Vvec)) Vvec[Lidx] else NA_real_ +} + +# TRUE when a per-effect vector or matrix rows carry "L" effect ids. +# @noRd +.namedByEffect <- function(x) { + nm <- if (is.matrix(x)) rownames(x) else names(x) + length(nm) > 0L && all(str_detect(nm, "^L[0-9]+$")) } # cs_log10bf: strongest member logBF (NA when the column is absent). @@ -1648,7 +2007,7 @@ setMethod("adjustPips", "FineMappingRow", function(x, keepVariants) { length(fitted) ) newTopLoci <- .adjustPipsRebuildTopLoci( - .fmeTopLociFromElement(variants(x)), + .fmrPartsTopLoci(x), fit, common ) @@ -1680,9 +2039,6 @@ setMethod("susieFit", "FineMappingRow", function(x) x@susieFit) #' @export setMethod("cvResult", "FineMappingRow", function(x) x@cvResult) -# @noRd -.fmRowFitVariants <- function(x) x@fitVariants - #' @rdname show-methods #' @export setMethod("show", "FineMappingRow", function(object) { @@ -1718,4 +2074,6 @@ setMethod("variants", "FineMappingRow", function(x) x@variants) #' @aliases coerce,FineMappingRow,GRanges-method #' @usage NULL #' @exportMethod coerce -setAs("FineMappingRow", "GRanges", function(from) variants(from)) +setAs("FineMappingRow", "GRanges", function(from) { + .fmRowRestoredVariants(from) +}) diff --git a/R/fineMappingWrappers.R b/R/fineMappingWrappers.R index 784930ca..1f8bb44d 100644 --- a/R/fineMappingWrappers.R +++ b/R/fineMappingWrappers.R @@ -1394,14 +1394,17 @@ setMethod( } # Per-variant CS index at coverage `targetCov` (0 = not in any CS; on overlap -# the smallest cs_idx wins). +# the smallest cs_idx wins). A variant in several sets warns unless `quiet`, +# which re-deriving a stored table's columns sets: buildTopLoci() warned when +# it first wrote them. # @noRd .fmCsIdxAtCoverage <- function( targetCov, coverageValues, csTables, nV, - variantNames = NULL + variantNames = NULL, + quiet = FALSE ) { empty <- integer(nV) hit <- which(abs(coverageValues - targetCov) < 1e-12) @@ -1433,8 +1436,10 @@ setMethod( winnerAt <- variantOf[firstPerVariant] out <- .fmScatter(empty, winnerAt, winners) bestSize <- .fmScatter(rep(Inf, nV), winnerAt, setSizes[winners]) - memb <- split(csOf, factor(variantOf, levels = seq_len(nV))) - .fmWarnMultiCs(memb, out, bestSize, sets, variantNames) + if (!quiet) { + memb <- split(csOf, factor(variantOf, levels = seq_len(nV))) + .fmWarnMultiCs(memb, out, bestSize, sets, variantNames) + } out } @@ -1527,7 +1532,7 @@ setMethod( .fmPurityAtCoverage <- function(targetCov, idxVec, coverageValues, csTables) { h <- which(abs(coverageValues - targetCov) < 1e-12) pv <- if (length(h) > 0L) .csPurityVec(csTables[[h[1L]]]) else numeric() - map_dbl(idxVec, .csPurityAt, pv = pv) + .csPurityAt(idxVec, pv) } #' Build the unified top-loci table for one fit and one method @@ -5213,14 +5218,15 @@ extractTopPipInfo <- function(fmRow, sumstats) { ) } -# Purity value for the i-th index (0 out of range / NA). +# Purity value for each index `i` (0 out of range / NA), vectorised: it runs +# once per variant of every fit. # @noRd .csPurityAt <- function(i, pv) { - if (i <= 0L || i > length(pv)) { - return(0) - } - v <- pv[i] - if (is.na(v)) 0 else as.numeric(v) + out <- numeric(length(i)) + inRange <- i > 0L & i <= length(pv) + v <- as.numeric(pv[i[inRange]]) + out[inRange] <- replace(v, is.na(v), 0) + out } # Max of the finite entries of x (NA when none). diff --git a/R/genotypeIo.R b/R/genotypeIo.R index 53606e51..fcf82049 100644 --- a/R/genotypeIo.R +++ b/R/genotypeIo.R @@ -1189,15 +1189,80 @@ resolvePlink2Paths <- function(prefix) { list(pgen = pgen, pvar = pvar, psam = psam) } -#' Read .pvar or .pvar.zst into a data.frame via pgenlibr. +#' Read .pvar or .pvar.zst into a data.frame. #' -#' Uses pgenlibr::NewPvar() to parse the file (handles both plain .pvar and -#' zstd-compressed .pvar.zst natively, no external CLI required). +#' A plain-text .pvar with a #CHROM header -- what PLINK2 writes -- is read as +#' one tab-separated table. Anything else (a zstd-compressed .pvar.zst, a +#' header-less .bim-style .pvar) is read through pgenlibr::NewPvar(), which +#' reads every format PLINK2 does but one variant per call: about 40 +#' microseconds a variant, eight minutes for a 12-million-variant panel. #' #' @param pvarPath Path to .pvar or .pvar.zst file. #' @return data.frame with columns: chrom, id, pos, A2 (REF), A1 (ALT). #' @noRd readPvar <- function(pvarPath) { + .readPvarTable(pvarPath) %||% .readPvarByVariant(pvarPath) +} + +# A plain-text .pvar read as a table, as pgenlibr reads it: the first ALT +# allele of a multi-allelic variant is A1. NULL for a file this cannot read +# (compressed, or with no #CHROM header naming the five columns). +# @noRd +#' @importFrom vroom vroom +#' @importFrom readr cols col_character col_integer +.readPvarTable <- function(pvarPath) { + if (str_detect(pvarPath, "\\.zst$")) { + return(NULL) + } + header <- .pvarHeader(pvarPath) + required <- c("CHROM", "POS", "ID", "REF", "ALT") + if (is.null(header) || !all(is_in(required, header$columns))) { + return(NULL) + } + tbl <- vroom( + pvarPath, + delim = "\t", + skip = header$lines, + col_names = header$columns, + col_select = all_of(required), + col_types = cols(.default = col_character(), POS = col_integer()), + na = character(), + quote = "", + comment = "", + progress = FALSE + ) + tibble( + chrom = tbl$CHROM, + id = tbl$ID, + pos = tbl$POS, + A2 = tbl$REF, + A1 = str_remove(tbl$ALT, ",.*$") + ) +} + +# The .pvar's column names, from its #CHROM header line, and how many lines +# (## meta lines and the header) precede the variants; NULL without one. +# @noRd +.pvarHeader <- function(pvarPath) { + con <- file(pvarPath, "r") + on.exit(close(con), add = TRUE) + lines <- 0L + repeat { + line <- readLines(con, n = 1L, warn = FALSE) + if (length(line) == 0L || !str_detect(line, "^#")) { + return(NULL) + } + lines <- lines + 1L + if (str_detect(line, "^#CHROM")) { + columns <- str_split(str_remove(line, "^#"), "\t")[[1L]] + return(list(columns = columns, lines = lines)) + } + } +} + +# Any .pvar pgenlibr reads, a variant at a time. +# @noRd +.readPvarByVariant <- function(pvarPath) { if (!requireNamespace("pgenlibr", quietly = TRUE)) { abort("Package 'pgenlibr' is required.") } diff --git a/R/h2Annotations.R b/R/h2Annotations.R index b42afed4..cc7310ea 100644 --- a/R/h2Annotations.R +++ b/R/h2Annotations.R @@ -199,3 +199,235 @@ setMethod( .bwMeanScore <- function(x) { if (length(x) > 0) mean(x) else 0 } + +# ============================================================================= +# Annotations from fine-mapping results +# ============================================================================= + +#' @title Annotations From Fine-Mapping Results +#' @description Turn fine-mapping results -- typically molecular QTLs -- into +#' per-variant annotations over an LD reference's variants, for +#' \code{\link{estimateH2}} to test for heritability enrichment. Each +#' (\code{study}, \code{context}, \code{method}) unit of \code{x} pools its +#' traits (e.g. genes) into one column per requested type: +#' \describe{ +#' \item{\code{"maxCpp"}}{A variant's largest PIP over the unit's traits +#' (continuous; Hormozdiari et al. 2018).} +#' \item{\code{"sumPip"}}{The sum of its PIPs over the traits: the +#' expected number of the unit's causal effects it carries +#' (continuous).} +#' \item{\code{"credibleSet"}}{1 when it sits in a credible set of any +#' trait at \code{coverage} (and \code{minPurity}), else 0.} +#' \item{\code{"highPip"}}{1 when its largest PIP is at least +#' \code{pipThreshold}, else 0.} +#' } +#' +#' Variants are matched to the reference allele-aware (id format, ref/alt +#' swap, strand) by their coordinates and alleles, so a reference naming +#' its variants by rsID matches too; a fine-mapped variant the reference +#' lacks contributes nothing, and a reference variant no trait fine-mapped +#' takes 0. A column that comes out all zero -- a unit none of whose +#' variants are in the reference, or none of whose PIPs reach +#' \code{pipThreshold} -- is dropped, with a warning. +#' +#' The rows follow the reference's variants in its order, as +#' \code{estimateH2} requires. +#' @param x A \code{\link{QtlFineMappingResult}} or +#' \code{\link{GwasFineMappingResult}}. +#' @param ldRef The \code{\linkS4class{LdStatistic}} the annotations will be +#' used with. +#' @param types Which annotation types to build; see above. Default all four. +#' @param coverage Credible-set coverage for \code{"credibleSet"}. Default +#' \code{0.95}. +#' @param minPurity Minimum credible-set purity for \code{"credibleSet"}; +#' \code{NULL} (default) applies none. +#' @param pipThreshold PIP cutoff for \code{"highPip"}. Default \code{0.5}. +#' @param tier The tier the columns take: \code{"candidate"} (default), so +#' \code{estimateH2} score-tests each for enrichment over the baseline, or +#' \code{"baseline"}, to fit them jointly with it. +#' @return An \code{\linkS4class{AnnotationMatrix}} with one row per variant of +#' \code{ldRef}. Columns are named +#' \code{"|||"}, omitting an axis \code{x} +#' does not have. +#' @examples +#' data(qtlFineMappingExample) +#' fm <- topLoci(qtlFineMappingExample, signalCutoff = 0) +#' ref <- LdScore( +#' ldBlocks = GenomicRanges::GRanges( +#' "chr22", +#' IRanges::IRanges(min(GenomicRanges::start(fm)), +#' max(GenomicRanges::start(fm))) +#' ), +#' snpInfo = data.frame( +#' SNP = S4Vectors::mcols(fm)$variant_id, +#' CHR = "chr22", +#' BP = GenomicRanges::start(fm), +#' A1 = S4Vectors::mcols(fm)$A1, +#' A2 = S4Vectors::mcols(fm)$A2 +#' ), +#' nSamples = 1000L, +#' inSample = FALSE, +#' ldScores = matrix(1, length(fm), 1, dimnames = list(NULL, "base_l2")), +#' ldScoreWeights = rep(1, length(fm)) +#' ) +#' annot <- fineMappingAnnotations(qtlFineMappingExample, ref, pipThreshold = 0.1) +#' colnames(annot) +#' @importFrom checkmate assertMultiClass assertClass assertNumber +#' @importFrom rlang arg_match arg_match0 +#' @importFrom stringr str_extract str_flatten +#' @export +fineMappingAnnotations <- function( + x, + ldRef, + types = c("maxCpp", "sumPip", "credibleSet", "highPip"), + coverage = 0.95, + minPurity = NULL, + pipThreshold = 0.5, + tier = "candidate" +) { + assertMultiClass(x, c("QtlFineMappingResult", "GwasFineMappingResult")) + assertClass(ldRef, "LdStatistic") + types <- arg_match(types, multiple = TRUE) + assertNumber(coverage, lower = 0, upper = 1) + assertNumber(minPurity, lower = 0, upper = 1, null.ok = TRUE) + assertNumber(pipThreshold, lower = 0, upper = 1) + tier <- arg_match0(tier, c("candidate", "baseline")) + # The reference's variants, read off its ranges and alleles. + refTable <- .variantTable(ldRef) + tuples <- .enrAnnotationTuples(x) + columns <- map( + seq_len(nrow(tuples)), + .fmaTupleColumns, + x = x, + tuples = tuples, + refTable = refTable, + types = types, + coverage = coverage, + minPurity = minPurity, + pipThreshold = pipThreshold + ) + mat <- .fmaDropEmptyColumns(exec(cbind, !!!columns)) + colTypes <- str_extract(colnames(mat), "[^|]+$") + meta <- data.frame( + name = colnames(mat), + tier = rep(tier, ncol(mat)), + type = if_else( + is_in(colTypes, c("maxCpp", "sumPip")), + "continuous", + "binary" + ) + ) + AnnotationMatrix( + mat, + GenomicRanges::granges(ldRef, use.mcols = FALSE), + meta, + genome = NULL + ) +} + +# One unit's columns over the reference's variants: its traits' PIPs and +# credible-set members, its variants aligned to the reference in one pass by +# the matching engine (.alignTablesToPanel()). +# @noRd +.fmaTupleColumns <- function( + k, + x, + tuples, + refTable, + types, + coverage, + minPurity, + pipThreshold +) { + rows <- .enrMatchRows(x, .enrAnnotationIdent(tuples, k)) + gr <- .fmrGatherVariants(x, rows) + md <- mcols(gr, use.names = FALSE) + at <- .alignTablesToPanel(.variantTable(gr), refTable) + values <- as.numeric(md$pip %||% rep(NA_real_, length(gr))) + hit <- !is.na(at) & !is.na(values) + M <- .variantTableSize(refTable) + maxPip <- .fmaScatter(M, at[hit], values[hit], "max") + out <- list( + maxCpp = maxPip, + sumPip = .fmaScatter(M, at[hit], values[hit], "sum"), + credibleSet = if (is_in("credibleSet", types)) { + .fmaCredibleSetColumn(md, at, M, coverage, minPurity) + }, + highPip = as.numeric(maxPip >= pipThreshold) + )[types] + mat <- exec(cbind, !!!out) + colnames(mat) <- str_c(.fmaUnitName(tuples, k), "|", types) + mat +} + +# A reference-length vector holding the largest (`f = "max"`) or the sum +# (`"sum"`) of the values at each reference index `at`, 0 where none falls. +# @noRd +.fmaScatter <- function(M, at, values, f) { + out <- numeric(M) + if (length(at) == 0L) { + return(out) + } + if (f == "sum") { + sums <- rowsum(values, at) + out[as.integer(rownames(sums))] <- sums[, 1L] + return(out) + } + o <- order(at, -values) + first <- o[!duplicated(at[o])] + out[at[first]] <- values[first] + out +} + +# 1 for the reference variants (at their indices `at`) in a credible set of +# any of the unit's traits at `coverage`, as credibleSets() reads the +# credible-set columns `md` hold. +# @noRd +.fmaCredibleSetColumn <- function(md, at, M, coverage, minPurity) { + out <- numeric(M) + csCol <- str_c("cs_", coverage * 100) + if (!is_in(csCol, colnames(md))) { + return(out) + } + labels <- as.character(md[[csCol]]) + inCs <- !is.na(labels) & + str_length(labels) > 0L & + !str_detect(labels, "_0$") + purCol <- str_c(csCol, "_purity") + hasPurity <- is_in(purCol, colnames(md)) + if (!is.null(minPurity) && !hasPurity) { + warn(glue( + "credibleSets: no purity column '{purCol}' for coverage ", + "{coverage}; minPurity filter skipped." + )) + } + if (!is.null(minPurity) && hasPurity) { + purity <- as.numeric(md[[purCol]]) + inCs <- inCs & !is.na(purity) & purity >= minPurity + } + members <- at[inCs] + replace(out, members[!is.na(members)], 1) +} + +# The unit's name: its study, context and method, without an axis the +# collection does not have. +# @noRd +.fmaUnitName <- function(tuples, k) { + axes <- unlist(tuples[k, c("qtlStudy", "qtlContext", "qtlMethod")]) + str_flatten(axes[!is.na(axes)], "|") +} + +# The columns with at least one non-zero entry, warning about the rest. +# @noRd +.fmaDropEmptyColumns <- function(mat) { + empty <- colSums(mat != 0) == 0 + if (!any(empty)) { + return(mat) + } + warn(glue( + "fineMappingAnnotations: dropping {sum(empty)} column(s) that are ", + "zero for every variant of the LD reference: ", + "{str_flatten(utils::head(colnames(mat)[empty], 5L), ', ')}." + )) + mat[, !empty, drop = FALSE] +} diff --git a/R/h2EstimationWrappers.R b/R/h2EstimationWrappers.R index 7643d9cf..0f66cd5f 100644 --- a/R/h2EstimationWrappers.R +++ b/R/h2EstimationWrappers.R @@ -78,54 +78,6 @@ snpsPerBlock <- function(snpInfo, ldBlocks) { sqrt(enrichmentVar) } -#' @title Compute Baseline Annotation Enrichment Quantities -#' @description Given tau coefficients and a baseline annotation matrix, compute -#' the full set of enrichment quantities: propH2, propSnps, enrichment ratio, -#' enrichment SE (from jackknife or delta method), and p-value. -#' @param tau Numeric vector of per-annotation regression coefficients. -#' @param tauSe Numeric vector of SE for tau. -#' @param annotationJackknifeCoefs Numeric matrix (nBlocks x nAnnotations) of -#' jackknife block-level tau values, or NULL. -#' @param baselineMat Numeric matrix (nSnps x nAnnotations). -#' @param annotNames Character vector of annotation names. -#' @param h2 Numeric scalar, total estimated h2. -#' @return A tibble with columns: annotation, tau, tauSe, enrichment, -#' enrichmentSe, enrichmentP, propH2, propSnps. -#' @keywords internal -computeBaselineEnrichment <- function( - tau, - tauSe, - annotationJackknifeCoefs, - baselineMat, - annotNames, - h2 -) { - M <- nrow(baselineMat) - M_a <- colSums(baselineMat) - propSnps <- M_a / M - propH2 <- (tau * M_a) / h2 - # Enrichment ratio (propH2 / propSnps) = tau * M / h2. - enrichment <- tau * M / h2 - enrichmentSe <- .baselineEnrichmentSe( - annotationJackknifeCoefs, - tauSe, - M_a, - M, - h2 - ) - enrichmentP <- .zToPvalue(enrichment / enrichmentSe) - tibble( - annotation = annotNames, - tau = unname(tau), - tauSe = unname(tauSe), - enrichment = unname(enrichment), - enrichmentSe = unname(enrichmentSe), - enrichmentP = unname(enrichmentP), - propH2 = unname(propH2), - propSnps = unname(propSnps) - ) -} - # ============================================================================= # Genome build utilities # ============================================================================= @@ -432,6 +384,127 @@ NULL } } +# The baseline design all four estimators fit, NULL when unstratified: the +# user's baseline columns, with an all-ones "base" column put first unless +# they already span it (a partition of the genome does; one annotation +# alone, or a few that leave variants uncovered, do not). Without the base, +# the variants no baseline annotation covers would be modelled as carrying +# no heritability, and each annotation's coefficient would absorb the +# genome-wide signal instead of its excess over it. Adding it to a baseline +# that spans it would make the design singular. `userCols` records which +# columns are the user's. +# @noRd +.h2DesignMat <- function(annotations) { + baselineMat <- .h2BaselineMat(annotations) + if (is.null(baselineMat)) { + return(NULL) + } + A <- if (.h2SpansOnes(baselineMat)) { + baselineMat + } else { + cbind(base = 1, baselineMat) + } + `attr<-`( + A, + "userCols", + match(colnames(baselineMat), colnames(A)) + ) +} + +# TRUE when the all-ones vector lies in the column span of `B`, by least +# squares on B'B (pivoted, so overlapping or duplicated columns do no harm), +# which keeps a genome-wide B from being copied into a QR. +# @noRd +.h2SpansOnes <- function(B) { + decomp <- qr(crossprod(B)) + beta <- qr.coef(decomp, colSums(B)) + beta[is.na(beta)] <- 0 + max(abs(1 - as.vector(B %*% beta))) < 1e-6 +} + +# The partitioned heritabilities, enrichment and per-annotation coefficients +# of a stratified fit, reported for the user's baseline annotations alone, +# from its per-variant-effect coefficients `tau` over the design `A` and their +# delete-one-block values `tauBlocks` (folds x columns). Annotations overlap +# in general -- the base overlaps every one -- so an annotation's +# heritability is (A'A tau)_a, not tau_a M_a, and the total is 1'A tau. +# @noRd +.h2StratifiedReport <- function(A, tau, tauBlocks) { + user <- attr(A, "userCols") + AtA <- crossprod(A) + size <- colSums(A) + propSnps <- size[user] / nrow(A) + propH2 <- as.vector(AtA %*% tau)[user] / sum(size * tau) + enrichment <- propH2 / propSnps + blockH2 <- (tauBlocks %*% AtA)[, user, drop = FALSE] + blockEnrichment <- sweep( + blockH2 / as.vector(tauBlocks %*% size), + 2L, + propSnps, + "/" + ) + enrichmentSe <- apply(blockEnrichment, 2L, .jackknifeSeFromLoo) + tauSe <- apply(tauBlocks, 2L, .jackknifeSeFromLoo)[user] + list( + tau = tau[user], + tauSe = tauSe, + annotationJackknifeCoefs = tauBlocks[, user, drop = FALSE], + enrichment = tibble( + annotation = colnames(A)[user], + tau = unname(tau[user]), + tauSe = unname(tauSe), + enrichment = unname(enrichment), + enrichmentSe = unname(enrichmentSe), + enrichmentP = unname( + pnorm(abs(enrichment - 1) / enrichmentSe, lower.tail = FALSE) * + 2 + ), + propH2 = unname(propH2), + propSnps = unname(propSnps) + ) + ) +} + +# The result of a stratified or unstratified fit: `tau` and `tauBlocks` over +# the design `A` (NULL when unstratified, where the heritability stands in +# for the coefficient). +# @noRd +.h2FitResult <- function( + h2, + h2Se, + intercept, + interceptSe, + A, + tau, + tauBlocks, + localDf, + scoreStats +) { + if (is.null(A)) { + jkRes <- list( + se = c(h2Se, interceptSe), + tauSe = h2Se, + annotationJackknifeCoefs = NULL + ) + return(.h2Result(h2, jkRes, intercept, h2, localDf, NULL, scoreStats)) + } + report <- .h2StratifiedReport(A, tau, tauBlocks) + jkRes <- list( + se = c(h2Se, interceptSe), + tauSe = report$tauSe, + annotationJackknifeCoefs = report$annotationJackknifeCoefs + ) + .h2Result( + h2, + jkRes, + intercept, + report$tau, + localDf, + report$enrichment, + scoreStats + ) +} + # Per-block whitened statistics x_i = (u_i'z)/sqrt(lam_i) and stratified # eigenvalue scores l_{ia} = sum_j A_{ja} V_{ji}^2 (all-ones column when # unstratified), plus the candidate annotations' scores, from the block's @@ -620,23 +693,6 @@ NULL sqrt((n - 1) / n * sum((v - mean(v))^2)) } -# tau / tauSe / annotationJackknifeCoefs for the enrichment framework -# (univariate: tau = h2). -.lderEnrichParts <- function(fit, jk, baselineMat) { - if (is.null(baselineMat)) { - return(list( - tau = fit$h2, - tauSe = jk$h2Se, - annotationJackknifeCoefs = NULL - )) - } - list( - tau = fit$tau, - tauSe = jk$tauSe, - annotationJackknifeCoefs = jk$annotationJackknifeCoefs - ) -} - # Local heritability for one block: single-slope fit with intercept fixed at # the global inflation; h2Local = tau * (block directions). .lderLocalBlock <- function(bs, b, N, a) { @@ -672,40 +728,14 @@ NULL ) } -# Weighted score z for one candidate: standardized weighted covariance of the -# baseline residual with the candidate design column N*lam*l_ic. -.lderCandidateScore <- function(ldCandCol, lam, w, resid, N, keep) { - d <- N * lam[keep] * ldCandCol[keep] - sum(w[keep] * resid[keep] * d) / sqrt(sum(w[keep] * d^2)) -} - -# Jackknife (leave-one-block-out) correlation of the candidate score z's. -.lderScoreCor <- function(ldCand, lam, w, resid, N, blockId, nCand) { - if (nCand == 1) { - return(matrix(1, 1, 1)) - } - looRows <- map( - sort(unique(blockId)), - .lderLooBlockScores, - blockId = blockId, - ldCand = ldCand, - lam = lam, - w = w, - resid = resid, - N = N, - nCand = nCand - ) - looZ <- exec(rbind, !!!looRows) - R <- cor(looZ) - replace(R, is.na(R), 0) -} - -# LDER candidate-annotation score statistics against the fitted baseline. +# LDER candidate-annotation score statistics against the fitted baseline: +# the regression of chi2 = x^2 on mu = N lam (l_a tau) + N a + 1, scored for +# each candidate's column N lam l_c with the weights 1 / (2 mu^2) and the +# baseline and inflation as nuisance (.h2EfficientScoreBlocks()). .lderScoreStats <- function(blockStats, annotations, design, fit, N) { candidate <- testedAnnotations(annotations) candMat <- assay(candidate, "annotations") - nCand <- ncol(candMat) - if (nCand == 0) { + if (ncol(candMat) == 0) { return(list(enrichment = NULL, scoreStats = NULL)) } lam <- design$lam @@ -714,21 +744,20 @@ NULL 1e-8 ) w <- 1 / (2 * mu^2) - resid <- design$x^2 - mu ldCand <- exec(rbind, !!!map(blockStats, "ldCand")) - keepAll <- rep(TRUE, length(lam)) - scoreZ <- map_dbl( - seq_len(nCand), - .lderScoreForCand, - ldCand = ldCand, - lam = lam, - w = w, - resid = resid, - N = N, - keep = keepAll + Ub <- .h2EfficientScoreBlocks( + N * lam * ldCand, + cbind(N * lam * design$ldAnnot, N), + w, + w * (design$x^2 - mu), + design$blockId + ) + sc <- .h2BlockScoreStats(Ub) + .buildEnrichmentResult( + SummarizedExperiment::colData(candidate), + sc$scoreZ, + sc$R ) - R <- .lderScoreCor(ldCand, lam, w, resid, N, design$blockId, nCand) - .buildEnrichmentResult(SummarizedExperiment::colData(candidate), scoreZ, R) } lderUnivariate <- function( @@ -739,7 +768,7 @@ lderUnivariate <- function( local = FALSE ) { rough <- !inSample(eigenRef) - baselineMat <- .h2BaselineMat(annotations) + baselineMat <- .h2DesignMat(annotations) # One pass over the blocks, each decomposed only while its statistics are # taken, so a reference read from a panel holds one block at a time. blockStats <- map( @@ -763,14 +792,15 @@ lderUnivariate <- function( TRUE ) jk <- .lderJackknife(blockStats, baselineMat, n, M, design$M_a, rough, TRUE) - ep <- .lderEnrichParts(fit, jk, baselineMat) localDf <- if (local) .lderLocal(blockStats, n, fit$a) else NULL - .h2JackknifeResult( + .h2FitResult( h2 = fit$h2, + h2Se = jk$h2Se, intercept = fit$a, - se = c(jk$h2Se, jk$aSe), - ep = ep, - baselineMat = baselineMat, + interceptSe = jk$aSe, + A = baselineMat, + tau = fit$tau, + tauBlocks = jk$annotationJackknifeCoefs, localDf = localDf, scoreStats = .lderCandidateScores( blockStats, @@ -832,63 +862,6 @@ lderUnivariate <- function( ) } -# The result of an estimator jackknifed over its blocks (LDER, HDL): `se` -# holds the standard errors of h2 and of the intercept, and `ep` the -# enrichment parts (tau, tauSe, annotationJackknifeCoefs) that the -# per-annotation enrichment table is built from. -# @noRd -.h2JackknifeResult <- function( - h2, - intercept, - se, - ep, - baselineMat, - localDf, - scoreStats -) { - jkRes <- list( - se = se, - tauSe = ep$tauSe, - annotationJackknifeCoefs = ep$annotationJackknifeCoefs - ) - enrichmentDf <- .h2Enrichment( - baselineMat, - ep$tau, - ep$tauSe, - ep$annotationJackknifeCoefs, - h2 - ) - .h2Result(h2, jkRes, intercept, ep$tau, localDf, enrichmentDf, scoreStats) -} - -# Per-annotation enrichment table via the shared tau-based framework (used by -# HDL and LDER; g-LDSC builds its own from partitioned h2). NULL when -# unstratified. -.h2Enrichment <- function( - baselineMat, - tau, - tauSe, - annotationJackknifeCoefs, - h2 -) { - if (is.null(baselineMat)) { - return(NULL) - } - annotNames <- if (!is.null(colnames(baselineMat))) { - colnames(baselineMat) - } else { - str_c("annot_", seq_len(ncol(baselineMat))) - } - computeBaselineEnrichment( - tau, - tauSe, - annotationJackknifeCoefs, - baselineMat, - annotNames, - h2 - ) -} - #' @title g-LDSC: Generalized LD Score Regression #' @description Estimate heritability and functional enrichment by feasible #' generalized least squares (FGLS) on LD scores (Xiong et al. 2024). The @@ -918,11 +891,11 @@ lderUnivariate <- function( #' @importFrom stats var pnorm NULL -# Full annotation matrix A = [base (all-ones) | baseline columns]; the base -# column carries genome-wide h2 (est.h[1] = total). +# The annotation matrix A the LD-score estimators regress on: the baseline +# design (.h2DesignMat()), or the all-ones base alone when unstratified. .gldscAnnotMatrix <- function(annotations, M) { - baselineMat <- .h2BaselineMat(annotations) - if (is.null(baselineMat)) matrix(1, M, 1) else cbind(base = 1, baselineMat) + .h2DesignMat(annotations) %||% + matrix(1, M, 1, dimnames = list(NULL, "base")) } # Per-block design: the block's annotations, its stratified LD scores @@ -995,18 +968,16 @@ NULL # A block's candidate-score pieces. The score is taken against the FITTED # baseline residual, U_c = l_c' Omega^-1 (y - X coef), which is linear in # coef: keeping l_c' Omega^-1 y and l_c' Omega^-1 X lets the block's score be -# formed once the fit is known, without revisiting the block. Alongside, -# I_c = l_c' Omega^-1 l_c. NULL without candidates. +# formed once the fit is known, without revisiting the block. NULL without +# candidates. .gldscCandidatePieces <- function(om, ldCand, P, Py) { if (is.null(ldCand)) { return(NULL) } - Q <- crossprod(om$vectors, ldCand) - Qw <- Q / om$values + Qw <- crossprod(om$vectors, ldCand) / om$values list( Uy = as.vector(crossprod(Qw, Py)), - UX = crossprod(Qw, P), - I = colSums(Q * Qw) + UX = crossprod(Qw, P) ) } @@ -1017,12 +988,10 @@ NULL coef <- as.vector(solve(left + diag(ridge, nrow(left)), right)) tauAll <- coef / N tau <- tauAll[-1] - estH <- as.vector(crossprod(A) %*% tau) list( tau = tau, coef = coef, - estH = estH, - h2 = estH[1], + h2 = sum(colSums(A) * tau), intercept = N * tauAll[1] + 1 ) } @@ -1039,47 +1008,11 @@ NULL A = A, N = N ) - estHList <- map(loo, "estH") - estHBlocks <- exec(rbind, !!!estHList) - tauList <- map(loo, "tau") - jkCoefs <- exec(rbind, !!!tauList) - intLoo <- map_dbl(loo, "intercept") + jkCoefs <- exec(rbind, !!!map(loo, "tau")) list( - h2Se = .jackknifeSeFromLoo(estHBlocks[, 1]), - intSe = .jackknifeSeFromLoo(intLoo), - tauSe = apply(jkCoefs, 2, .jackknifeSeFromLoo), - annotationJackknifeCoefs = jkCoefs, - estHBlocks = estHBlocks - ) -} - -# Enrichment for baseline (non-base) annotations from partitioned h2 est.h: -# propH2 = est.h_a / total, propSnps = M_a / M, enrichment = propH2 / propSnps. -.gldscEnrichmentDf <- function(fit, jk, baselineMat, annotNames, M) { - total <- fit$estH[1] - M_a <- colSums(baselineMat) - propSnps <- M_a / M - propH2 <- fit$estH[-1] / total - enrichment <- propH2 / propSnps - eBlocks <- sweep( - jk$estHBlocks[, -1, drop = FALSE] / jk$estHBlocks[, 1], - 2, - propSnps, - "/" - ) - nB <- nrow(eBlocks) - eSe <- sqrt(apply(eBlocks, 2, var) * (nB - 1)^2 / nB) - tibble( - annotation = annotNames, - tau = unname(fit$tau[-1]), - tauSe = unname(jk$tauSe[-1]), - enrichment = unname(enrichment), - enrichmentSe = unname(eSe), - enrichmentP = unname( - pnorm(abs(enrichment - 1) / eSe, lower.tail = FALSE) * 2 - ), - propH2 = unname(propH2), - propSnps = unname(propSnps) + h2Se = .jackknifeSeFromLoo(map_dbl(loo, "h2")), + intSe = .jackknifeSeFromLoo(map_dbl(loo, "intercept")), + annotationJackknifeCoefs = jkCoefs ) } @@ -1109,35 +1042,75 @@ NULL ) } -# One block's candidate scores at the fitted coefficients, against the -# fitted baseline GLS residual r = y - X coef: U_c = l_c' Omega^-1 r and -# I_c = l_c' Omega^-1 l_c. -.gldscCandidateBlock <- function(cb, coef) { - list(U = cb$cand$Uy - as.vector(cb$cand$UX %*% coef), I = cb$cand$I) +# One block's score for each candidate, against the fitted baseline GLS +# residual r = y - X coef, with the candidate's LD scores l_c first +# residualized on the design: U_c = (l_c - X beta_c)' Omega^-1 r, beta_c = +# (X' Omega^-1 X)^-1 X' Omega^-1 l_c. Summed over blocks the adjustment +# vanishes (X' Omega^-1 r = 0 at the fit); block by block it does not, and +# it is what makes the blocks' scores the efficient ones the jackknife +# variance is taken over. +.gldscCandidateBlock <- function(cb, coef, beta) { + U <- cb$cand$Uy - as.vector(cb$cand$UX %*% coef) + Xr <- cb$R - as.vector(cb$L %*% coef) + U - as.vector(crossprod(beta, Xr)) } -# sHDL-style candidate score statistics + jackknife score correlation: -# scoreZ = sum_b U_c / sqrt(sum_b I_c), at the real fitted coefficients (not -# a refit). +# Candidate score statistics at the real fitted coefficients (not a refit), +# calibrated by the blocks' own spread (.h2BlockScoreStats()) rather than by +# the model information l_c' Omega^-1 l_c, which ignored the estimated +# baseline and trusted the plug-in Omega. .gldscScoreStats <- function(contrib, coef) { - per <- map(contrib, .gldscCandidateBlock, coef = coef) - U <- reduce(map(per, "U"), `+`) - I <- reduce(map(per, "I"), `+`) - scoreZ <- U / sqrt(pmax(I, 1e-10)) - R <- if (length(U) == 1L) { + left <- reduce(map(contrib, "L"), `+`) + lX <- reduce(map(contrib, function(cb) t(cb$cand$UX)), `+`) + ridge <- 1e-8 * mean(abs(diag(left))) + beta <- solve(left + diag(ridge, nrow(left)), lX) + Ub <- exec( + rbind, + !!!map(contrib, .gldscCandidateBlock, coef = coef, beta = beta) + ) + .h2BlockScoreStats(Ub) +} + +# Each LD block's efficient score for every candidate (a blocks x candidates +# matrix). An observation i -- a variant, or an eigen-direction -- adds +# gTilde_ic e_i, where e_i is its score residual (weighted residual, or the +# likelihood's), gC[i, c] the derivative of its modelled mean or variance in +# the candidate's parameter, and gTilde that derivative residualized on the +# nuisance derivatives G under the information weights `info`: +# gTilde = gC - G (G' info G)^-1 G' info gC. Residualizing is what makes the +# test account for the baseline and intercept having been estimated -- a +# candidate overlapping the baseline otherwise picks up the baseline's fitted +# signal -- and it needs no refit. `blockOf` gives each observation's block. +# @noRd +.h2EfficientScoreBlocks <- function(gC, G, info, e, blockOf) { + gC <- as.matrix(gC) + gtg <- crossprod(G, G * info) + ridge <- 1e-8 * mean(abs(diag(gtg))) + beta <- solve(gtg + diag(ridge, ncol(G)), crossprod(G, gC * info)) + rowsum((gC - G %*% beta) * e, blockOf) +} + +# Candidate score statistics from each LD block's score (a blocks x +# candidates matrix Ub): z_c = U_c / sqrt(V_c) with U_c = sum_b Ub[b, c] and +# V_c = nB / (nB - 1) sum_b (Ub[b, c] - U_c / nB)^2, the delete-one-block +# jackknife variance of the sum. Taking the variance from the blocks makes the +# test valid however wrong the regression weights are -- correlated +# residuals, a misspecified Omega -- as the heritability's own jackknife SE +# is. The candidates' correlation is that of their block scores. +# @noRd +.h2BlockScoreStats <- function(Ub) { + Ub <- as.matrix(Ub) + nB <- nrow(Ub) + U <- colSums(Ub) + centered <- sweep(Ub, 2L, U / nB) + V <- nB / (nB - 1) * colSums(centered^2) + R <- if (ncol(Ub) == 1L) { matrix(1, 1, 1) } else { - looRows <- map( - seq_along(per), - .gldscScoreLooRow, - per = per, - U = U, - I = I - ) - Rc <- cor(exec(rbind, !!!looRows)) + Rc <- stats::cov2cor(crossprod(centered)) replace(Rc, is.na(Rc), 0) } - list(scoreZ = scoreZ, R = R) + list(scoreZ = unname(U / sqrt(pmax(V, .Machine$double.xmin))), R = R) } gldscUnivariate <- function( @@ -1183,7 +1156,7 @@ gldscUnivariate <- function( right <- reduce(map(contrib, "R"), `+`) fit <- .gldscEstimate(left, right, A, n) jk <- .gldscJackknife(contrib, left, right, A, n) - .gldscResult(fit, jk, annotations, contrib, local, n, M) + .gldscResult(fit, jk, annotations, contrib, local, n, M, A) } # The candidate-annotation score statistics, when candidates were supplied. @@ -1204,42 +1177,17 @@ gldscUnivariate <- function( } # Assemble the gldscUnivariate return (enrichment, local, candidate scores). -.gldscResult <- function(fit, jk, annotations, contrib, local, n, M) { - baselineMat <- .h2BaselineMat(annotations) - localDf <- if (local) .gldscLocal(contrib, n) else NULL - enrichmentDf <- if (is.null(baselineMat)) { - NULL - } else { - .gldscEnrichmentDf( - fit, - jk, - baselineMat, - SummarizedExperiment::colData( - baselineAnnotations(annotations) - )$name, - M - ) - } - scoreStats <- .gldscCandidateScores(annotations, contrib, fit) - tau <- if (is.null(baselineMat)) fit$h2 else fit$tau[-1] - tauSe <- if (is.null(baselineMat)) jk$h2Se else jk$tauSe[-1] - jkRes <- list( - se = c(jk$h2Se, jk$intSe), - tauSe = tauSe, - annotationJackknifeCoefs = if (is.null(baselineMat)) { - NULL - } else { - jk$annotationJackknifeCoefs[, -1, drop = FALSE] - } - ) - .h2Result( - fit$h2, - jkRes, - fit$intercept, - tau, - localDf, - enrichmentDf, - scoreStats +.gldscResult <- function(fit, jk, annotations, contrib, local, n, M, A) { + .h2FitResult( + h2 = fit$h2, + h2Se = jk$h2Se, + intercept = fit$intercept, + interceptSe = jk$intSe, + A = if (is.null(.h2BaselineMat(annotations))) NULL else A, + tau = fit$tau, + tauBlocks = jk$annotationJackknifeCoefs, + localDf = if (local) .gldscLocal(contrib, n) else NULL, + scoreStats = .gldscCandidateScores(annotations, contrib, fit) ) } @@ -1360,7 +1308,8 @@ NULL bstar = bstar, blockId = blockId, ldAnnotScaled = sweep(ldAnnot, 2, M_a, "/"), - M_a = M_a + M_a = M_a, + baseAdded = !is_in(1L, attr(baselineMat, "userCols")) ) } @@ -1369,7 +1318,18 @@ NULL # keeps the L-BFGS-B finite differences well conditioned. .hdlFit <- function(design, n, nSamples, warnOnBound = TRUE) { nTau <- ncol(design$ldAnnotScaled) - lower <- c(rep(0, nTau), 0) + # Beside an added base column an annotation's parameter is its excess + # over the genome-wide rate, which a depleted annotation makes negative; + # only the base, and the columns of a baseline that spans the genome on + # its own, are heritabilities bounded below by 0. + lower <- c( + if (isTRUE(design$baseAdded)) { + c(0, rep(-1, nTau - 1L)) + } else { + rep(0, nTau) + }, + 0 + ) upper <- c(rep(1, nTau), 10) opt <- optim( c(rep(0.1, nTau), 1), @@ -1472,23 +1432,6 @@ NULL ) } -# Convert fitted per-annotation h2 to per-SNP tau = h2_a / M_a for the -# enrichment framework (univariate: tau = h2 scalar, no blocks). -.hdlEnrichParts <- function(ft, jk, design, baselineMat) { - if (is.null(baselineMat)) { - return(list( - tau = ft$h2, - tauSe = jk$h2Se, - annotationJackknifeCoefs = NULL - )) - } - list( - tau = ft$h2a / design$M_a, - tauSe = jk$h2aSe / design$M_a, - annotationJackknifeCoefs = sweep(jk$h2aBlocks, 2, design$M_a, "/") - ) -} - # ============================================================================= # HDL local heritability + sHDL candidate score test # ============================================================================= @@ -1552,79 +1495,37 @@ NULL ) } -# sHDL score z for one candidate annotation: score U_c = sum_i g_ic * -# (bstar_i^2/lamh2_i^2 - 1/lamh2_i) with g_ic = dlamh2_i/dh2_c, standardized by -# sqrt(Var(U_c)) = sqrt(2 sum_i g_ic^2 / lamh2_i^2). -.shdlCandidateScore <- function( - ldCandCol, - M_c, - lam, - lamh2, - scoreResid, - nSamples, - keep -) { - g <- ldCandCol[keep] * lam[keep]^2 / M_c - lam[keep] / nSamples - lh <- lamh2[keep] - sum(g * scoreResid[keep]) / sqrt(2 * sum(g^2 / lh^2)) -} - -# sHDL candidate-annotation score statistics + jackknife score correlation. -.shdlStratified <- function(blockData, nPanel, annotations, design, lamh2) { +# sHDL candidate-annotation score statistics. Each eigen-direction's rotated +# effect has modelled variance v_i = lamh2_i, and the likelihood's score for +# a candidate's heritability is sum_i g_ic (bstar_i^2 / v_i^2 - 1 / v_i), +# with g_ic = dv_i/dh2_c = l_ic lam_i^2 / M_c - lam_i / nPanel and +# information weight 2 / v_i^2. The baseline heritabilities and the intercept +# are the nuisance (.h2EfficientScoreBlocks()), with derivatives +# l_ia lam_i^2 / M_a - lam_i / nPanel and lam_i / n. +.shdlStratified <- function(blockData, nPanel, annotations, design, lamh2, n) { candidate <- testedAnnotations(annotations) candMat <- assay(candidate, "annotations") - nCand <- ncol(candMat) - if (nCand == 0) { + if (ncol(candMat) == 0) { return(list(enrichment = NULL, scoreStats = NULL)) } - M_c <- colSums(candMat) + lam <- design$lam + gradient <- function(scaled) scaled * lam^2 - lam / nPanel ldCand <- exec(rbind, !!!map(blockData, "ldCand")) - scoreResid <- design$bstar^2 / lamh2^2 - 1 / lamh2 - keepAll <- rep(TRUE, length(lamh2)) - scoreZ <- map_dbl( - seq_len(nCand), - .shdlScoreForCand, - ldCand = ldCand, - M_c = M_c, - lam = design$lam, - lamh2 = lamh2, - scoreResid = scoreResid, - nSamples = nPanel, - keep = keepAll - ) - R <- .shdlScoreCor(ldCand, M_c, design, lamh2, scoreResid, nPanel, nCand) - .buildEnrichmentResult(SummarizedExperiment::colData(candidate), scoreZ, R) -} - -# Jackknife (leave-one-block-out) correlation of the candidate score z's. -.shdlScoreCor <- function( - ldCand, - M_c, - design, - lamh2, - scoreResid, - nSamples, - nCand -) { - if (nCand == 1) { - return(matrix(1, 1, 1)) - } - blocks <- sort(unique(design$blockId)) - looRows <- map( - blocks, - .shdlLooBlockScores, - blockId = design$blockId, - ldCand = ldCand, - M_c = M_c, - lam = design$lam, - lamh2 = lamh2, - scoreResid = scoreResid, - nSamples = nSamples, - nCand = nCand + gC <- gradient(sweep(ldCand, 2L, colSums(candMat), "/")) + G <- cbind(gradient(design$ldAnnotScaled), lam / n) + Ub <- .h2EfficientScoreBlocks( + gC, + G, + 2 / lamh2^2, + design$bstar^2 / lamh2^2 - 1 / lamh2, + design$blockId + ) + sc <- .h2BlockScoreStats(Ub) + .buildEnrichmentResult( + SummarizedExperiment::colData(candidate), + sc$scoreZ, + sc$R ) - looZ <- exec(rbind, !!!looRows) - R <- cor(looZ) - replace(R, is.na(R), 0) } # ============================================================================= @@ -1640,7 +1541,7 @@ hdlUnivariate <- function( ) { M <- length(eigenRef) nPanel <- ldPanelNSamples(eigenRef) - baselineMat <- .h2BaselineMat(annotations) + baselineMat <- .h2DesignMat(annotations) # One pass over the blocks, each decomposed only while its data are taken. blockData <- map( .ldEigenBlocks(eigenRef), @@ -1654,14 +1555,15 @@ hdlUnivariate <- function( design <- .hdlDesign(blockData, M, baselineMat) ft <- .hdlFit(design, n, nPanel) jk <- .hdlJackknife(blockData, M, baselineMat, n, nPanel) - ep <- .hdlEnrichParts(ft, jk, design, baselineMat) localDf <- if (local) .hdlLocal(blockData, n, nPanel, ft$int, M) else NULL - .h2JackknifeResult( + .h2FitResult( h2 = ft$h2, + h2Se = jk$h2Se, intercept = ft$int, - se = c(jk$h2Se, jk$intSe), - ep = ep, - baselineMat = baselineMat, + interceptSe = jk$intSe, + A = baselineMat, + tau = ft$h2a / design$M_a, + tauBlocks = sweep(jk$h2aBlocks, 2L, design$M_a, "/"), localDf = localDf, scoreStats = .hdlCandidateScores( blockData, @@ -1682,7 +1584,7 @@ hdlUnivariate <- function( return(NULL) } lamh2 <- .hdlBaselineVar(design, ft, n, nPanel) - .shdlStratified(blockData, nPanel, annotations, design, lamh2)$scoreStats + .shdlStratified(blockData, nPanel, annotations, design, lamh2, n)$scoreStats } @@ -1784,27 +1686,84 @@ sldscUnivariate <- function( ) { M <- length(ldRef) chi2 <- z^2 - baselineMat <- .h2BaselineMat(annotations) - # Same design g-LDSC uses: an all-ones "base" annotation ahead of the - # baseline columns, so `crossprod(A)` is the annotation overlap matrix. + # Same design g-LDSC uses (.h2DesignMat()), so `crossprod(A)` is the + # annotation overlap matrix. A <- .gldscAnnotMatrix(annotations, M) - scores <- .sldscScoreMatrix(ldRef, baselineMat, M) - baseScore <- scores[, 1L] + scores <- .sldscScoreMatrix(ldRef, A) + # The weights read the stored base score whatever the design holds. + baseScore <- as.vector(mcols(ldRef)$ldScores[, 1L]) blockIdx <- .sldscBlockIndex(ldRef) fit <- .sldscFit(chi2, scores, baseScore, n, A, nIter) jk <- .sldscJackknife(chi2, scores, baseScore, n, A, nIter, blockIdx) - .sldscResult(fit, jk, annotations, baselineMat, chi2, baseScore, local, M) + scoreStats <- .sldscCandidateScores(fit, ldRef, annotations, blockIdx) + .h2FitResult( + h2 = fit$h2, + h2Se = jk$h2Se, + intercept = fit$intercept, + interceptSe = jk$intSe, + A = if (is.null(.h2BaselineMat(annotations))) NULL else A, + tau = fit$tau, + tauBlocks = jk$annotationJackknifeCoefs, + localDf = if (local) .sldscLocal(chi2, baseScore, fit) else NULL, + scoreStats = scoreStats + ) } -# The design's LD-score columns: the base score first, then one stratified -# score per baseline annotation. Stratified scores come from each block's LD, -# the same source g-LDSC uses, and take ldsc's unbiased r^2 as the stored -# base score does: ldsc applies it to every annotation column. +# The candidate annotations' score statistics, NULL without candidates: each +# candidate's stratified LD score is scored against the fitted residual in +# the fit's final weights, with the fitted design as nuisance +# (.h2EfficientScoreBlocks()). # @noRd -.sldscScoreMatrix <- function(ldRef, baselineMat, M) { - base <- as.vector(mcols(ldRef)$ldScores[, 1L]) - if (is.null(baselineMat)) { - return(matrix(base, ncol = 1L, dimnames = list(NULL, "base_l2"))) +.sldscCandidateScores <- function(fit, ldRef, annotations, blockIdx) { + candMat <- .h2CandidateMat(annotations) + if (is.null(candMat)) { + return(NULL) + } + if (!.ldScoreHasLd(ldRef)) { + abort(str_c( + "S-LDSC's candidate-annotation score test needs each LD block's ", + "LD to form the candidates' LD scores. Build the reference from ", + "a genotype panel, or with `buildLdScore(keepLdMatrices = TRUE)`." + )) + } + parts <- attr(fit, "scoreParts") + ldCand <- .h2StratifiedScores(ldRef, candMat)[parts$keep, , drop = FALSE] + blockOf <- rep(seq_along(blockIdx), lengths(blockIdx))[ + order(unlist(blockIdx, use.names = FALSE)) + ] + Ub <- .h2EfficientScoreBlocks( + ldCand, + parts$design, + parts$w, + parts$w * parts$resid, + blockOf[parts$keep] + ) + sc <- .h2BlockScoreStats(Ub) + list( + z = sc$scoreZ, + R = sc$R, + annotationNames = SummarizedExperiment::colData( + testedAnnotations(annotations) + )$name + ) +} + +# The design's LD-score columns, one per column of the annotation matrix `A` +# (.gldscAnnotMatrix()): the stored base score for the base column, and a +# stratified score for each baseline annotation. Stratified scores come from +# each block's LD, the same source g-LDSC uses, and take ldsc's unbiased r^2 +# as the stored base score does: ldsc applies it to every annotation column. +# @noRd +.sldscScoreMatrix <- function(ldRef, A) { + base <- matrix( + as.vector(mcols(ldRef)$ldScores[, 1L]), + ncol = 1L, + dimnames = list(NULL, "base_l2") + ) + hasBase <- identical(colnames(A)[[1L]], "base") + baselineMat <- if (hasBase) A[, -1L, drop = FALSE] else A + if (ncol(baselineMat) == 0L) { + return(base) } if (!.ldScoreHasLd(ldRef)) { abort(str_c( @@ -1813,7 +1772,8 @@ sldscUnivariate <- function( "panel, or with `buildLdScore(keepLdMatrices = TRUE)`." )) } - cbind(base_l2 = base, .h2StratifiedScores(ldRef, baselineMat)) + stratified <- .h2StratifiedScores(ldRef, baselineMat) + if (hasBase) cbind(base, stratified) else stratified } # Annotation-stratified LD scores sum_k r^2_jk a_k under ldsc's unbiased r^2, @@ -1935,7 +1895,20 @@ sldscUnivariate <- function( intercept = intercept, w0 = w0 ) - .sldscCoefToFit(c(step2$coef, intercept), n, A) + fit <- .sldscCoefToFit(c(step2$coef, intercept), n, A) + # What the candidate score test reads (.sldscCandidateScores()): the + # step-2 regression, with the intercept step 1 estimated as a column so + # the candidates are residualized on it too. + `attr<-`( + fit, + "scoreParts", + list( + keep = rep(TRUE, length(chi2)), + design = cbind(scores, 1), + w = step2$w, + resid = as.vector(chi2 - intercept - scores %*% step2$coef) + ) + ) } # @noRd @@ -1958,7 +1931,18 @@ sldscUnivariate <- function( xTot <- rowSums(scores) hsq <- .sldscAggregateH2(chi2, xTot, n, M) w <- .sldscWeights(xTot, baseScore, n, M, hsq, 1) - .sldscCoefToFit(.sldscWlsCoef(cbind(scores, 1), chi2, w), n, A) + design <- cbind(scores, 1) + coef <- .sldscWlsCoef(design, chi2, w) + `attr<-`( + .sldscCoefToFit(coef, n, A), + "scoreParts", + list( + keep = keep, + design = design, + w = w, + resid = as.vector(chi2 - design %*% coef) + ) + ) } # Two IRWLS passes, matching the original ldsc's `for i in range(2)`. @@ -2000,7 +1984,8 @@ sldscUnivariate <- function( coef <- .sldscWlsCoef(design, y, w) list( coef = coef[seq_len(ncol(scores))], - intercept = if (freeIntercept) coef[[length(coef)]] else intercept + intercept = if (freeIntercept) coef[[length(coef)]] else intercept, + w = w ) } @@ -2028,11 +2013,9 @@ sldscUnivariate <- function( .sldscCoefToFit <- function(coef, n, A) { nS <- ncol(A) tau <- coef[seq_len(nS)] / n - estH <- as.vector(crossprod(A) %*% tau) list( tau = tau, - h2 = estH[[1L]], - estH = estH, + h2 = sum(colSums(A) * tau), intercept = coef[[nS + 1L]], coef = coef ) @@ -2051,15 +2034,10 @@ sldscUnivariate <- function( A = A, nIter = nIter ) - jkCoefs <- exec(rbind, !!!map(loo, "tau")) - estHBlocks <- exec(rbind, !!!map(loo, "estH")) - intLoo <- map_dbl(loo, "intercept") list( - h2Se = .jackknifeSeFromLoo(estHBlocks[, 1L]), - intSe = .jackknifeSeFromLoo(intLoo), - tauSe = apply(jkCoefs, 2, .jackknifeSeFromLoo), - annotationJackknifeCoefs = jkCoefs, - estHBlocks = estHBlocks + h2Se = .jackknifeSeFromLoo(map_dbl(loo, "h2")), + intSe = .jackknifeSeFromLoo(map_dbl(loo, "intercept")), + annotationJackknifeCoefs = exec(rbind, !!!map(loo, "tau")) ) } @@ -2078,45 +2056,6 @@ sldscUnivariate <- function( ) } -# @noRd -.sldscResult <- function( - fit, - jk, - annotations, - baselineMat, - chi2, - baseScore, - local, - M -) { - localDf <- if (local) .sldscLocal(chi2, baseScore, fit) else NULL - enrichmentDf <- if (is.null(baselineMat)) { - NULL - } else { - .gldscEnrichmentDf( - fit, - jk, - baselineMat, - SummarizedExperiment::colData( - baselineAnnotations(annotations) - )$name, - M - ) - } - tau <- if (is.null(baselineMat)) fit$h2 else fit$tau[-1] - tauSe <- if (is.null(baselineMat)) jk$h2Se else jk$tauSe[-1] - jkRes <- list( - se = c(jk$h2Se, jk$intSe), - tauSe = tauSe, - annotationJackknifeCoefs = if (is.null(baselineMat)) { - NULL - } else { - jk$annotationJackknifeCoefs[, -1, drop = FALSE] - } - ) - .h2Result(fit$h2, jkRes, fit$intercept, tau, localDf, enrichmentDf, NULL) -} - # Per-variant local h2 contribution: the fitted non-intercept signal spread # over the variant's own LD score. # @noRd @@ -2194,12 +2133,13 @@ sldscUnivariate <- function( length(ldRef), glue("study '{studyName}'") ) - .h2CheckPositions(entry, ldRef, studyName) + .h2CheckPositions(entry, ldRef, glue("study '{studyName}'")) if (is.null(annotations)) { return(invisible(TRUE)) } checkGenomeBuild(ldRef, annotations) .h2CheckVariantCount(nrow(annotations), length(ldRef), "`annotations`") + .h2CheckPositions(rowRanges(annotations), ldRef, "`annotations`") invisible(TRUE) } @@ -2236,21 +2176,23 @@ sldscUnivariate <- function( abort(msg) } -# Element-wise coordinate check. Coordinates are compared rather than variant -# ids because the two sides routinely name the same variant differently -# (rsid vs chr:pos:A2:A1), while the same variant always sits at the same -# coordinate. -# @noRd -.h2CheckPositions <- function(entry, ldRef, studyName) { - same <- as.character(seqnames(entry)) == as.character(seqnames(ldRef)) & - start(entry) == start(ldRef) +# Element-wise coordinate check of `gr` (a study's variants, or the +# annotation rows) against the reference, `what` naming it. Coordinates are +# compared rather than variant ids because the two sides routinely name the +# same variant differently (rsid vs chr:pos:A2:A1), while the same variant +# always sits at the same coordinate. +#' @importFrom SummarizedExperiment rowRanges +#' @noRd +.h2CheckPositions <- function(gr, ldRef, what) { + same <- as.character(seqnames(gr)) == as.character(seqnames(ldRef)) & + start(gr) == start(ldRef) if (all(same)) { return(invisible(TRUE)) } nBad <- sum(!same) firstBad <- which(!same)[[1L]] msg <- glue( - "estimateH2: study '{studyName}' and the LD reference disagree at ", + "estimateH2: {what} and the LD reference disagree at ", "{nBad} of {length(same)} position(s), the first at index ", "{firstBad}. The estimators index by the reference's variant ", "order, so both must hold the same variants in the same order." @@ -2573,29 +2515,6 @@ h2EstimateToSldscTrait <- function(h2Est) { .lderLocalBlock(blockStats[[b]], b, N, a) } -# LDER weighted score z for candidate column `cand` under the `keep` block -# mask. -# @noRd -.lderScoreForCand <- function(cand, ldCand, lam, w, resid, N, keep) { - .lderCandidateScore(ldCand[, cand], lam, w, resid, N, keep) -} - -# LDER leave-one-block-out candidate score z's for block `b`. -# @noRd -.lderLooBlockScores <- function(b, blockId, ldCand, lam, w, resid, N, nCand) { - keep <- blockId != b - map_dbl( - seq_len(nCand), - .lderScoreForCand, - ldCand = ldCand, - lam = lam, - w = w, - resid = resid, - N = N, - keep = keep - ) -} - # One g-LDSC delete-one-block jackknife fold: re-solve the normal equations with # block `cb`'s Omega-weighted contribution removed. # @noRd @@ -2611,10 +2530,6 @@ h2EstimateToSldscTrait <- function(h2Est) { # g-LDSC leave-one-block-out standardized candidate score vector for block `b`. # @noRd -.gldscScoreLooRow <- function(b, per, U, I) { - (U - per[[b]]$U) / sqrt(pmax(I - per[[b]]$I, 1e-10)) -} - # One HDL delete-one-block jackknife fold: refit leaving block `b` out. # @noRd .hdlLooFit <- function(b, blockData, M, baselineMat, n, nSamples) { @@ -2633,53 +2548,3 @@ h2EstimateToSldscTrait <- function(h2Est) { .hdlLocalRow <- function(b, blockData, n, nSamples, int, M) { .hdlLocalBlock(blockData[[b]], b, n, nSamples, int, M) } - -# sHDL score z for candidate column `c` under the `keep` block mask. -# @noRd -.shdlScoreForCand <- function( - c, - ldCand, - M_c, - lam, - lamh2, - scoreResid, - nSamples, - keep -) { - .shdlCandidateScore( - ldCand[, c], - M_c[c], - lam, - lamh2, - scoreResid, - nSamples, - keep - ) -} - -# sHDL leave-one-block-out candidate score z's for block `b`. -# @noRd -.shdlLooBlockScores <- function( - b, - blockId, - ldCand, - M_c, - lam, - lamh2, - scoreResid, - nSamples, - nCand -) { - keep <- blockId != b - map_dbl( - seq_len(nCand), - .shdlScoreForCand, - ldCand = ldCand, - M_c = M_c, - lam = lam, - lamh2 = lamh2, - scoreResid = scoreResid, - nSamples = nSamples, - keep = keep - ) -} diff --git a/R/ld.R b/R/ld.R index 99aa904f..9ea55c38 100644 --- a/R/ld.R +++ b/R/ld.R @@ -1175,7 +1175,7 @@ resolveGenotypePathForRegion <- function(metaPath, region) { if (length(tbls) == 0L) { return(NULL) } - af <- list_rbind(tbls) + af <- if (length(tbls) == 1L) tbls[[1L]] else list_rbind(tbls) list( nSamples = as.integer(max(as.numeric(af$obs_ct), na.rm = TRUE) %/% 2), af = select(af, all_of(c("id", "alt_freq"))) @@ -2360,9 +2360,19 @@ resolveGenotypePathForRegion <- function(metaPath, region) { ) } -# Each non-empty row's span, with the row it belongs to. +# Each non-empty row's span, with the row it belongs to. A collection's +# element sits on one (seqname, strand), so its span is one range, read off +# integer vectors (.rtlFirstSpans()) where range() would take minutes on a +# genome-wide collection. # @noRd .rowSpans <- function(x) { + if (methods::is(x, "RangedTupleList")) { + spans <- .rtlFirstSpans(x) + return(list( + spans = .locusRanges(spans$first), + rows = unname(which(spans$has)) + )) + } rr <- range(x) list( spans = .locusRanges(unlist(rr, use.names = FALSE)), diff --git a/R/qtlEnrichmentPipeline.R b/R/qtlEnrichmentPipeline.R index c2903b1c..c6cb4ea3 100644 --- a/R/qtlEnrichmentPipeline.R +++ b/R/qtlEnrichmentPipeline.R @@ -23,11 +23,14 @@ setClass( #' data arguments, \code{BPPARAM}, \code{seed}, \code{verbose}, and the #' \code{alignNames} switch --- is the pipeline's own business and is not #' settable here. -#' @param numGwas Number of GWAS variants used to estimate \code{piGwas}. -#' \code{NULL} (default) estimates it from the data, which is biased unless -#' the outcome PIP vector really is genome-wide. +#' @param numGwas The total number of variants the GWAS tested (fastenloc's +#' \code{-total_variants}), over which \code{piGwas} and \code{piQtl} are +#' estimated. \code{NULL} (default) uses the number of distinct variants in +#' the outcome PIP vector and the annotation fits, with a warning; that is +#' biased unless the outcome PIP vector really is genome-wide. #' @param piQtl Per-variant prior of being a causal QTL variant. \code{NULL} -#' (default) estimates it from the data. +#' (default) estimates it as fastenloc does: the annotation fits' summed +#' PIPs over the variant total (see \code{numGwas}). #' @param lambda Shrinkage parameter, shrinking the enrichment estimate #' towards zero as in ridge regression. \code{0} applies no shrinkage. #' Default \code{1.0}. @@ -122,9 +125,19 @@ QtlEnrichmentParam <- function( #' \code{\link{qtlEnrichment}}, whose multiple-imputation threads number #' its workers. Default \code{SerialParam()}. #' @param seed Integer or \code{NULL}. Base random seed forwarded to -#' \code{\link{qtlEnrichment}} for reproducible multiple imputation. -#' \code{NULL} (default) draws a nondeterministic seed. +#' \code{\link{qtlEnrichment}} for reproducible multiple imputation; every +#' (outcome, annotation) pair is run with this same seed. \code{NULL} +#' (default) draws a nondeterministic seed per pair. #' @param verbose Logical. Print progress messages. Default \code{TRUE}. +#' @param duplicatePips How to resolve a variant to which the outcome's LD +#' blocks give different PIPs, as adjacent blocks sharing a boundary variant +#' do when each block's fit gives it its own. Copies that agree are always +#' merged. \code{"max"} (default) keeps the largest PIP. \code{"blockEnd"} +#' keeps the copy from the block whose window was given (see +#' \code{\link{genomicRegion}}) and ends at the variant --- the upstream of +#' two blocks sharing it --- and errors when no single block qualifies. +#' \code{"error"} refuses. fastenloc does none of these: it keeps the last +#' copy's PIP but counts every copy towards the GWAS prior. #' @return A tibble with one row per (outcome fit, annotation unit) pair. #' The identity columns are \code{gwasStudy}, \code{gwasContext}, #' \code{gwasTrait}, \code{gwasMethod}, \code{qtlStudy}, \code{qtlContext}, @@ -162,21 +175,24 @@ qtlEnrichmentPipeline <- function( qtlEnrichmentParam = QtlEnrichmentParam(), BPPARAM = SerialParam(), seed = NULL, - verbose = TRUE + verbose = TRUE, + duplicatePips = c("max", "error", "blockEnd") ) { .assertMethodParam(qtlEnrichmentParam, "QtlEnrichmentParam") .assertBpparam(BPPARAM) + duplicatePips <- arg_match(duplicatePips) .enrValidateInputs(gwasFineMappingResult, qtlFineMappingResult) - prep <- .enrPrepare(gwasFineMappingResult, qtlFineMappingResult) + prep <- .enrPrepare( + gwasFineMappingResult, + qtlFineMappingResult, + duplicatePips + ) gwasTuples <- prep$gwasTuples qtlTuples <- prep$qtlTuples - alignedByTuple <- prep$alignedByTuple results <- list_flatten(map( seq_len(nrow(gwasTuples)), .enrScoreOutcomeTuple, - gwasPipByTuple = prep$gwasPipByTuple, - qtlRegionsByTuple = prep$qtlRegionsByTuple, - alignedByTuple = alignedByTuple, + prep = prep, qtlEnrichmentParam = qtlEnrichmentParam, BPPARAM = BPPARAM, seed = seed, @@ -225,12 +241,18 @@ qtlEnrichmentPipeline <- function( invisible(NULL) } -# Hoist the outcome-independent work out of the double loop: per-trait outcome -# PIP vectors, the union variant-name panel, per-tuple annotation regions, and -# each tuple's one-time alignment to the union panel (errors captured as -# values). +# Hoist the outcome-independent work out of the double loop: each outcome +# tuple's PIPs with its variants, the union of those variants, each annotation +# tuple's regions with theirs, and each tuple's one-time alignment to the union +# (errors captured as values). Variants travel as variant tables +# (.variantTable()) -- chromosome, position, alleles -- and are matched by the +# matching engine, never through rendered id strings. # @noRd -.enrPrepare <- function(gwasFineMappingResult, qtlFineMappingResult) { +.enrPrepare <- function( + gwasFineMappingResult, + qtlFineMappingResult, + duplicatePips = "max" +) { gwasTuples <- .enrOutcomeTuples(gwasFineMappingResult) qtlTuples <- .enrAnnotationTuples(qtlFineMappingResult) if (nrow(gwasTuples) == 0L || nrow(qtlTuples) == 0L) { @@ -245,30 +267,27 @@ qtlEnrichmentPipeline <- function( list(gwasFineMappingResult, qtlFineMappingResult), "qtlEnrichmentPipeline()" ) - gwasPipByTuple <- map( + outcomes <- map( seq_len(nrow(gwasTuples)), - .enrGwasPipForRow, + .enrGwasOutcomeForRow, gwasTuples = gwasTuples, - fmr = gwasFineMappingResult + fmr = gwasFineMappingResult, + duplicatePips = duplicatePips ) - unionGwasNames <- unique(unname(list_c(map(gwasPipByTuple, names)))) - qtlRegionsByTuple <- map( + union <- .enrUnionPanel(outcomes) + annotations <- map( seq_len(nrow(qtlTuples)), - .enrQtlRegionsForRow, + .enrQtlTupleForRow, qtlTuples = qtlTuples, fmr = qtlFineMappingResult ) - alignedByTuple <- map( - qtlRegionsByTuple, - .enrAlignRegionsSafe, - unionGwasNames = unionGwasNames - ) list( gwasTuples = gwasTuples, qtlTuples = qtlTuples, - gwasPipByTuple = gwasPipByTuple, - qtlRegionsByTuple = qtlRegionsByTuple, - alignedByTuple = alignedByTuple + outcomes = outcomes, + union = union, + annotations = annotations, + aligned = map(annotations, .enrAlignTupleSafe, panel = union$table) ) } @@ -340,25 +359,26 @@ qtlEnrichmentPipeline <- function( !is.na(values) & values == wanted } -# The outcome PIP vector for the k-th outcome tuple. +# The outcome PIPs and variants for the k-th outcome tuple. # @noRd -.enrGwasPipForRow <- function(k, gwasTuples, fmr) { - .enrBuildGwasPipVector(fmr, .enrOutcomeIdent(gwasTuples, k)) +.enrGwasOutcomeForRow <- function(k, gwasTuples, fmr, duplicatePips = "max") { + .enrGwasOutcome(fmr, .enrOutcomeIdent(gwasTuples, k), duplicatePips) } -# Annotation SuSiE region list for the k-th (study, context) tuple. +# Annotation regions and variants for the k-th (study, context) tuple. # @noRd -.enrQtlRegionsForRow <- function(k, qtlTuples, fmr) { - .enrBuildQtlRegionsList(fmr, .enrAnnotationIdent(qtlTuples, k)) +.enrQtlTupleForRow <- function(k, qtlTuples, fmr) { + .enrQtlTuple(fmr, .enrAnnotationIdent(qtlTuples, k)) } -# Align one tuple's regions to the union GWAS panel, capturing any error as a -# value (re-raised + skipped per (gwas, tuple) below, never aborting). +# One tuple's variants aligned to the union of the outcome variants: each +# variant's index in the union, or NA. Any error is captured as a value +# (re-raised + skipped per (gwas, tuple) below, never aborting). # @noRd #' @importFrom rlang try_fetch -.enrAlignRegionsSafe <- function(regions, unionGwasNames) { +.enrAlignTupleSafe <- function(annotation, panel) { try_fetch( - .enrAlignRegions(regions, unionGwasNames), + .alignTablesToPanel(annotation$table, panel), error = function(cnd) cnd ) } @@ -368,9 +388,7 @@ qtlEnrichmentPipeline <- function( # @noRd .enrScoreOutcomeTuple <- function( gi, - gwasPipByTuple, - qtlRegionsByTuple, - alignedByTuple = alignedByTuple, + prep, qtlEnrichmentParam, BPPARAM, seed, @@ -380,8 +398,8 @@ qtlEnrichmentPipeline <- function( qtlFineMappingResult = qtlFineMappingResult, qtlTuples = qtlTuples ) { - gwasPip <- gwasPipByTuple[[gi]] - if (length(gwasPip) == 0L) { + outcome <- prep$outcomes[[gi]] + if (length(outcome$pip) == 0L) { msg <- glue( "qtlEnrichmentPipeline: no usable PIPs for ", "{.enrOutcomeLabel(gwasFineMappingResult, gwasTuples, gi)}; ", @@ -390,13 +408,16 @@ qtlEnrichmentPipeline <- function( warn(msg) return(list()) } + # Where each union variant sits in this outcome's PIP vector. + outcomeAt <- rep(NA_integer_, .variantTableSize(prep$union$table)) + outcomeAt[prep$union$of[[gi]]] <- seq_along(outcome$pip) compact(map( seq_len(nrow(qtlTuples)), .enrScoreTuple, gi = gi, - gwasPip = gwasPip, - qtlRegionsByTuple = qtlRegionsByTuple, - alignedByTuple = alignedByTuple, + outcome = outcome, + outcomeAt = outcomeAt, + prep = prep, qtlEnrichmentParam = qtlEnrichmentParam, BPPARAM = BPPARAM, seed = seed, @@ -409,14 +430,14 @@ qtlEnrichmentPipeline <- function( } # Score one (outcome trait, annotation tuple) pair -> an enrichment record, or -# NULL when the tuple has no regions or qtlEnrichment fails. +# NULL when the tuple has no regions or the enrichment fails. # @noRd .enrScoreTuple <- function( k, gi, - gwasPip, - qtlRegionsByTuple, - alignedByTuple = alignedByTuple, + outcome, + outcomeAt, + prep, qtlEnrichmentParam, BPPARAM, seed, @@ -426,7 +447,7 @@ qtlEnrichmentPipeline <- function( qtlFineMappingResult = qtlFineMappingResult, qtlTuples = qtlTuples ) { - if (length(qtlRegionsByTuple[[k]]) == 0L) { + if (length(prep$annotations[[k]]$regions) == 0L) { msg <- glue( "qtlEnrichmentPipeline: no usable regions for ", "{.enrAnnotationLabel(qtlFineMappingResult, qtlTuples, k)}; ", @@ -437,9 +458,10 @@ qtlEnrichmentPipeline <- function( } enr <- .enrRunEnrichment( gi, - gwasPip, + outcome, + outcomeAt, k, - alignedByTuple = alignedByTuple, + prep = prep, qtlEnrichmentParam = qtlEnrichmentParam, BPPARAM = BPPARAM, seed = seed, @@ -477,14 +499,15 @@ qtlEnrichmentPipeline <- function( ) } -# Run qtlEnrichment for a pair (with the pre-aligned regions), warning + NULL on -# failure. +# Run the enrichment for a pair -- the tuple's regions coded against this +# outcome through the precomputed alignment -- warning + NULL on failure. # @noRd .enrRunEnrichment <- function( gi, - gwasPip, + outcome, + outcomeAt, k, - alignedByTuple, + prep, qtlEnrichmentParam, BPPARAM, seed, @@ -494,23 +517,30 @@ qtlEnrichmentPipeline <- function( qtlFineMappingResult, qtlTuples ) { - aligned <- alignedByTuple[[k]] + aligned <- prep$aligned[[k]] + annotation <- prep$annotations[[k]] try_fetch( { if (inherits(aligned, "condition")) { cnd_signal(aligned) } - # alignNames = FALSE reuses the per-tuple alignment; it is the - # pipeline's own invariant, which is why `qtlEnrichmentParam` cannot - # carry it -- QtlEnrichmentParam() has no such formal. + nullFits <- .enrValidateFits(annotation$regions) + coded <- .enrCodeAligned( + annotation, + outcomeAt[aligned], + aligned, + prep$union$table + ) exec( - qtlEnrichment, - gwasPip = gwasPip, - susieQtlRegions = aligned, + .qtlEnrichmentCoded, + gwasPip = outcome$pip, + susieQtlRegions = annotation$regions, + coded = coded, + nullFits = nullFits, + gwasVariants = outcome$table, BPPARAM = BPPARAM, seed = seed, verbose = verbose, - alignNames = FALSE, !!!qtlEnrichmentParam ) }, @@ -572,115 +602,347 @@ qtlEnrichmentPipeline <- function( # Internal helpers # ============================================================================= -# Align one tuple's QTL regions to the GWAS naming convention: relabel matched -# pip names to the union GWAS panel via the shared matcher (unmatched names -# kept as-is). Pure -- the caller precomputes one result per tuple and shares -# it across the outer GWAS loop. +# Align one tuple's QTL regions to the GWAS naming convention: relabel each +# pip name that matches a panel variant to the panel's id, keeping the rest. +# The tuple's names are matched in one pass, not one per region, so the panel +# is read once per tuple however many genes it has. Used by qtlEnrichment(), +# whose interface is named vectors; the pipeline aligns variant tables +# (.alignTablesToPanel()). # @noRd -.enrAlignRegions <- function(regions, unionGwasNames) { - map(regions, .enrAlignRegion, unionGwasNames = unionGwasNames) +.enrAlignRegions <- function( + regions, + panel, + panelTable = .lazyVariantTable(panel) +) { + ids <- map(regions, .enrRegionIds) + flat <- as.character(unlist(ids, use.names = FALSE)) + idx <- .alignIdsToPanel(flat, panel, panelTable) + matched <- !is.na(idx) + aligned <- replace(flat, matched, panel[idx[matched]]) + regionOf <- factor( + rep(seq_along(regions), lengths(ids)), + levels = seq_along(regions) + ) + map2(regions, unname(split(aligned, regionOf)), .enrRenamePip) } -# One row's PIP vector keyed by variant id, or NULL when the row carries no -# fit, no PIPs, or ids that do not line up with them. +# A region with its pip renamed (an unnamed pip has nothing to rename). # @noRd -.enrRowPipVector <- function(i, gwasFmr) { - parts <- .fmrRowParts(gwasFmr, i) - fit <- susieFit(parts) - if (is.null(fit) || is.null(fit$pip)) { - return(NULL) +.enrRenamePip <- function(x, ids) { + if (is.null(names(x$pip))) { + return(x) } - pip <- as.numeric(fit$pip) - ids <- names(fit$pip) %||% .partsFitIds(parts) - if (length(ids) != length(pip)) { + list_assign(x, pip = set_names(x$pip, ids)) +} + +# Rows `idx`'s PIPs with their variants, read for all of them at once: +# list(pip, table, row), `row` being each PIP's row of `gwasFmr`. A row that +# carries no fit, no PIPs, or variants that do not line up with them gives +# none. The variants are the names the fit gives its PIPs, else the row's own +# when it holds all of the fit (.fmrRowsFitVariants()). +# @noRd +.enrPipTablesAt <- function(gwasFmr, idx) { + fits <- .fmrFitsAt(gwasFmr, idx) + usable <- which(map_lgl(fits, .enrHasPip)) + vars <- .fmrRowsFitVariants( + gwasFmr, + idx[usable], + fits[usable], + unplaced = function(i) NULL + ) + pips <- map(fits[usable], function(fit) as.numeric(fit$pip)) + n <- vars$n + lined <- !is.na(n) & n == lengths(pips) + held <- rep(lined[!is.na(n)], n[!is.na(n)]) + list( + pip = unlist(pips[lined], use.names = FALSE), + table = .variantTableRows(vars$table, which(held)), + row = rep(idx[usable][lined], n[lined]) + ) +} + +# @noRd +.enrHasPip <- function(fit) { + is.list(fit) && !is.null(fit$pip) +} + +# One row's PIP vector keyed by variant id (see .enrPipTablesAt()). +# @noRd +.enrRowPipVector <- function(i, gwasFmr) { + piece <- .enrPipTablesAt(gwasFmr, i) + if (length(piece$pip) == 0L) { return(NULL) } - set_names(pip, as.character(ids)) + set_names(piece$pip, .variantTableIds(piece$table)) } -# Build a named outcome PIP vector for one fit. Walks every row of the -# collection carrying that identity -- the fit's LD blocks -- extracts the -# per-row pip from each FineMappingRow, and concatenates with variant-id -# names. Errors if any single variant appears with conflicting PIP values -# across rows -- which is why the identity is the full fit tuple: pooling two -# molecular traits of one study, or two methods' fits of one trait, would -# collide on every variant they share. -#' @importFrom dplyr add_count -#' @noRd -.enrBuildGwasPipVector <- function(gwasFmr, ident) { +# One outcome fit's PIPs and variants: every row of the collection carrying +# that identity -- the fit's LD blocks -- joined. A variant several rows carry +# is resolved by `duplicatePips` -- which is why the identity is the full fit +# tuple: pooling two molecular traits of one study, or two methods' fits of +# one trait, would collide on every variant they share. list(pip, table). +# @noRd +.enrGwasOutcome <- function(gwasFmr, ident, duplicatePips = "max") { idx <- .enrMatchRows(gwasFmr, ident) - if (length(idx) == 0L) { - return(numeric(0)) + pieces <- .enrPipTablesAt(gwasFmr, idx) + if (length(pieces$pip) == 0L) { + return(list( + pip = numeric(0), + table = .variantTableRows(pieces$table, 0L) + )) } - pieces <- compact(map(idx, .enrRowPipVector, gwasFmr = gwasFmr)) - if (length(pieces) == 0L) { + .enrCollapseDuplicateVariants(pieces, duplicatePips, gwasFmr) +} + +# The outcome PIP vector of one fit keyed by variant id (see +# .enrGwasOutcome()). +# @noRd +.enrBuildGwasPipVector <- function(gwasFmr, ident, duplicatePips = "max") { + outcome <- .enrGwasOutcome(gwasFmr, ident, duplicatePips) + if (length(outcome$pip) == 0L) { return(numeric(0)) } - combined <- list_c(pieces) - if (n_distinct(names(combined)) == length(combined)) { - return(combined) + set_names(outcome$pip, .variantTableIds(outcome$table)) +} + +# Collapse variants several GWAS blocks carry, keeping each where it first +# appears. Copies whose PIPs agree (to 12 digits) merge; for a variant whose +# copies conflict, `duplicatePips` decides (see qtlEnrichmentPipeline()). +# A variant is its chromosome, position and alleles as given. +#' @importFrom vctrs vec_group_id vec_unique_loc +#' @noRd +.enrCollapseDuplicateVariants <- function(pieces, duplicatePips, gwasFmr) { + group <- vec_group_id(.variantKeyFrame(pieces$table)) + first <- which(!duplicated(group)) + if (length(first) == length(group)) { + return(list(pip = pieces$pip, table = pieces$table)) + } + out <- list( + pip = pieces$pip[first], + table = .variantTableRows(pieces$table, first) + ) + copied <- which(is_in(group, group[duplicated(group)])) + distinctPips <- copied[vec_unique_loc(data.frame( + group = group[copied], + pip = round(pieces$pip[copied], 12) + ))] + nPips <- tabulate(group[distinctPips], nbins = attr(group, "n")) + conflicting <- which(nPips > 1L) + if (length(conflicting) == 0L) { + return(out) } - .enrCollapseDuplicatePips(combined) + copies <- copied[is_in(group[copied], conflicting)] + resolved <- switch( + duplicatePips, + error = .enrAbortConflictingPips( + .variantTableIds(.variantTableRows(pieces$table, copies[[1L]])) + ), + max = .enrMaxPips(pieces, copies, group), + blockEnd = .enrBlockEndPips(pieces, copies, group, gwasFmr) + ) + # `out` holds each group once, in the order of first appearance, which + # is the order of the group ids. + out$pip[as.integer(names(resolved))] <- resolved + out +} + +# @noRd +.enrAbortConflictingPips <- function(id) { + msg <- glue( + "qtlEnrichmentPipeline: variant '{id}' appears with conflicting PIPs ", + "across GWAS blocks; the GWAS fine-mapping must produce a consistent ", + "PIP per variant, or pass duplicatePips = \"max\" or \"blockEnd\"." + ) + abort(msg) } -# Collapse duplicate variant ids across GWAS blocks: agreeing PIPs (rounded to -# 12 digits) merge; a variant with conflicting PIPs aborts. distinct() keeps one -# row per (id, rounded-pip), so a conflicting variant survives with >1 row for -# add_count() to flag. +# The largest PIP of each conflicting variant, named by its group. # @noRd -.enrCollapseDuplicatePips <- function(pips) { - byId <- tibble(id = names(pips), pip = as.numeric(pips)) |> - mutate(pipR = round(.data$pip, 12)) |> - distinct(.data$id, .data$pipR, .keep_all = TRUE) |> - add_count(.data$id) - conflict <- filter(byId, .data$n > 1L) - if (nrow(conflict) > 0L) { - vName <- conflict$id[[1L]] +.enrMaxPips <- function(pieces, copies, group) { + vapply(split(pieces$pip[copies], group[copies]), max, numeric(1)) +} + +# The PIP of each conflicting variant's copy from the one block whose given +# window ends at the variant, named by its group; a variant with no such +# block, or several, aborts. +#' @importFrom GenomicRanges end seqnames +#' @noRd +.enrBlockEndPips <- function(pieces, copies, group, gwasFmr) { + rows <- pieces$row[copies] + windows <- genomicRegion(gwasFmr)[rows] + given <- as.logical(.tupleColumn(gwasFmr, "regionGiven"))[rows] + atEnd <- !is.na(given) & + given & + as.character(seqnames(windows)) == pieces$table$chrom[copies] & + end(windows) == pieces$table$pos[copies] + nAtEnd <- vapply(split(atEnd, group[copies]), sum, integer(1)) + undecided <- names(nAtEnd)[nAtEnd != 1L] + if (length(undecided) > 0L) { + which1 <- copies[group[copies] == as.integer(undecided[[1L]])][[1L]] + id <- .variantTableIds(.variantTableRows(pieces$table, which1)) msg <- glue( - "qtlEnrichmentPipeline: variant '{vName}' appears with ", - "conflicting PIPs across GWAS blocks; the GWAS fine-mapping ", - "must produce a consistent PIP per variant." + "qtlEnrichmentPipeline: variant '{id}' appears with ", + "conflicting PIPs across GWAS blocks, and duplicatePips = ", + "\"blockEnd\" cannot choose between them: ", + "{nAtEnd[[undecided[[1L]]]]} of its blocks were given a window ", + "ending at it, where one must be." ) abort(msg) } - set_names(byId$pip, byId$id) + set_names(pieces$pip[copies][atEnd], group[copies][atEnd]) +} + +# The union of the outcome tuples' variants, and each tuple's variants' index +# in it: list(table, of). +#' @importFrom vctrs vec_match vec_unique_loc +#' @noRd +.enrUnionPanel <- function(outcomes) { + tables <- map(outcomes, "table") + if (length(tables) == 1L) { + n <- .variantTableSize(tables[[1L]]) + return(list(table = tables[[1L]], of = list(seq_len(n)))) + } + all <- .bindVariantTables(tables) + frame <- .variantKeyFrame(all) + union <- .variantTableRows(all, vec_unique_loc(frame)) + unionFrame <- .variantKeyFrame(union) + list( + table = union, + of = map(tables, function(t) vec_match(.variantKeyFrame(t), unionFrame)) + ) } -# Build the per-(study, context) list of region fits in the shape that -# qtlEnrichment expects: list(d) where each d carries alpha, pip, -# prior_variance (V). Filters on BOTH study and context so entries from -# different studies that happen to share a context label are not pooled into -# one enrichment estimate. +# One annotation tuple's region fits for qtlEnrichment -- alpha, pip and the +# prior variances -- and their variants as one variant table, region after +# region: list(regions, table, n). Filters on BOTH study and context so +# entries from different studies that happen to share a context label are not +# pooled into one enrichment estimate. Regions are named by their rows' own +# names ("study|context|trait|method"), so a fit the estimator refuses is +# reported by name rather than position. +# @noRd +.enrQtlTuple <- function(qtlFmr, ident) { + idx <- .enrMatchRows(qtlFmr, ident) + fits <- .fmrFitsAt(qtlFmr, idx) + usable <- which(map_lgl(fits, .enrHasRegion)) + vars <- .fmrRowsFitVariants( + qtlFmr, + idx[usable], + fits[usable], + unplaced = function(i) .partsFitIds(.fmrRowParts(qtlFmr, i)) + ) + regions <- map(fits[usable], .enrRegionOf) + names(regions) <- names(qtlFmr)[idx[usable]] + list(regions = regions, table = vars$table, n = vars$n) +} + +# Rows `idx`'s region payloads for qtlEnrichment with their PIPs named by +# variant id; NULL for a row that lacks a fit, an alpha, PIPs, or a prior +# variance (see .enrQtlTuple()). +# @noRd +.enrRegionsAt <- function(qtlFmr, idx) { + fits <- .fmrFitsAt(qtlFmr, idx) + usable <- which(map_lgl(fits, .enrHasRegion)) + out <- vector("list", length(idx)) + if (length(usable) == 0L) { + return(out) + } + vars <- .fmrRowsFitVariants( + qtlFmr, + idx[usable], + fits[usable], + unplaced = function(i) .partsFitIds(.fmrRowParts(qtlFmr, i)) + ) + ids <- split( + .variantTableIds(vars$table), + factor(rep(seq_along(usable), vars$n), levels = seq_along(usable)) + ) + out[usable] <- map2( + map(fits[usable], .enrRegionOf), + unname(ids), + function(region, ids) { + list_assign(region, pip = set_names(region$pip, ids)) + } + ) + out +} + +# One row's region payload for qtlEnrichment (see .enrRegionsAt()). +# @noRd +.enrRowRegion <- function(i, qtlFmr) { + .enrRegionsAt(qtlFmr, i)[[1L]] +} + +# The per-(study, context) list of region fits with named PIPs, as +# qtlEnrichment() takes them (see .enrQtlTuple()). # @noRd .enrBuildQtlRegionsList <- function(qtlFmr, ident) { idx <- .enrMatchRows(qtlFmr, ident) if (length(idx) == 0L) { return(list()) } - compact(map(idx, .enrRowRegion, qtlFmr = qtlFmr)) + regions <- .enrRegionsAt(qtlFmr, idx) + names(regions) <- names(qtlFmr)[idx] + compact(regions) } -# One row's region payload for qtlEnrichment, or NULL when the row lacks a -# fit, an alpha, PIPs, or a prior variance. The PIP names fall back to the -# ids the fit was made with when the fit did not carry any. +# Whether `fit` carries what a region payload needs. # @noRd -.enrRowRegion <- function(i, qtlFmr) { - parts <- .fmrRowParts(qtlFmr, i) - fit <- susieFit(parts) - if (is.null(fit) || is.null(fit$alpha) || is.null(fit$pip)) { - return(NULL) - } - priorVariance <- fit$V %||% fit$prior_variance - if (is.null(priorVariance)) { - return(NULL) - } +.enrHasRegion <- function(fit) { + is.list(fit) && + !is.null(fit$alpha) && + !is.null(fit$pip) && + !is.null(fit$V %||% fit$prior_variance) +} + +# @noRd +.enrRegionOf <- function(fit) { list( alpha = fit$alpha, - pip = set_names( - fit$pip, - names(fit$pip) %||% .partsFitIds(parts) + pip = fit$pip, + prior_variance = fit$V %||% fit$prior_variance + ) +} + +# An annotation tuple coded against one outcome: each region variable's +# 0-based index in the outcome's PIP vector (`outcomeIdx`, through the union +# alignment `unionIdx`), or a negative id shared by every region carrying the +# same absent variant -- the union's variant where the union holds it, else +# the tuple's own. Coded as .enrCodeRegions() codes names. +#' @importFrom vctrs vec_group_id +#' @noRd +.enrCodeAligned <- function(annotation, outcomeIdx, unionIdx, unionTable) { + absent <- which(is.na(outcomeIdx)) + codes <- outcomeIdx - 1L + nQtlOnly <- 0L + if (length(absent) > 0L) { + own <- .variantTableRows(annotation$table, absent) + inUnion <- !is.na(unionIdx[absent]) + key <- own + if (any(inUnion)) { + fromUnion <- .variantTableRows( + unionTable, + unionIdx[absent][inUnion] + ) + for (nm in names(key)) { + key[[nm]][inUnion] <- fromUnion[[nm]] + } + } + group <- vec_group_id(.variantKeyFrame(key)) + codes[absent] <- -as.vector(group) + nQtlOnly <- attr(group, "n") + } + regionOf <- factor( + rep(seq_along(annotation$regions), annotation$n), + levels = seq_along(annotation$regions) + ) + list( + fits = map2( + annotation$regions, + unname(split(codes, regionOf)), + .enrCodedFit ), - prior_variance = priorVariance + unmatched = NULL, + nQtlOnly = nQtlOnly ) } @@ -783,16 +1045,33 @@ qtlEnrichmentPipeline <- function( #' @details Uses output of \code{\link[susieR]{susie}} from the \code{susieR} #' package. #' -#' @param gwasPip This is a vector of GWAS PIP, genome-wide. -#' @param susieQtlRegions This is a list of SuSiE fitted objects per QTL unit -#' analyzed -#' @param numGwas This parameter is highly important if GWAS input does not -#' contain all SNPs interrogated (e.g., in some cases, only fine-mapped geomic -#' regions are included). Then users must pick a value of total_variants and -#' estimate piGwas beforehand by: sum(gwasPip$pip)/numGwas. If numGwas is -#' null, piGwas would be sum(gwasPip$pip)/total_variants. -#' @param piQtl This parameter can be safely left to default if your input QTL -#' data has enough regions to estimate it. +#' As in fastenloc, the variants the estimate is taken over are every +#' variant of \code{gwasPip} plus every QTL variant \code{gwasPip} does not +#' carry. The latter have GWAS PIP 0, so each one sampled in an imputation +#' round counts as a QTL variant that is not causal for the GWAS trait. The +#' variant total is \code{numGwas}, raised to the number of those variants +#' when smaller; \code{piGwas} is \code{sum(gwasPip)} over it and, unless +#' supplied, \code{piQtl} is the fits' summed PIPs over it. The intercept is +#' derived from \code{piGwas}, \code{piQtl} and the unshrunk enrichment, +#' and the coloc priors from that intercept and the shrunk enrichment, both +#' as fastenloc does. One difference remains: fastenloc's EM keeps the +#' previous iteration's intercept at convergence where this one updates it, +#' which changes only \code{sd (intercept)}. +#' +#' @param gwasPip A named vector of GWAS PIPs, one per variant, ideally +#' genome-wide. +#' @param susieQtlRegions A named list of SuSiE fits, one per QTL unit +#' analyzed (e.g. a gene), each with \code{alpha}, a named \code{pip} and +#' \code{prior_variance}. +#' @param numGwas The total number of variants the GWAS tested (fastenloc's +#' \code{-total_variants}). It matters whenever \code{gwasPip} does not +#' carry every variant tested, e.g. when it covers only fine-mapped blocks. +#' \code{NULL} (default) uses the number of distinct variants in +#' \code{gwasPip} and the QTL fits, with a warning; a value below that number +#' is raised to it. +#' @param piQtl Per-variant prior of being a causal QTL variant. \code{NULL} +#' (default) estimates it as fastenloc does, from the fits' summed PIPs over +#' the variant total. #' @param lambda Similar to the shrinkage parameter used in ridge regression. It #' takes any non-negative value and shrinks the enrichment estimate towards 0. #' When it is set to 0, no shrinkage will be applied. A large value indicates @@ -802,12 +1081,13 @@ qtlEnrichmentPipeline <- function( #' the multiple imputation runs on when they run on this machine #' (\code{SerialParam}, \code{MulticoreParam}); any other backend gives one #' thread. Default \code{SerialParam()}. -#' @param alignNames Logical; when TRUE (default) QTL pip names are aligned to -#' the GWAS variant-naming convention via \code{matchVariants}. Set FALSE when -#' the caller has already aligned them (e.g. \code{qtlEnrichmentPipeline} -#' aligns each QTL tuple once against the union GWAS panel rather than -#' re-aligning per GWAS study); only the cheap per-study unmatched set is then -#' recomputed, skipping the costly \code{harmonizeAlleles} pass. +#' @param alignNames Logical; when TRUE (default) a QTL pip name not spelled +#' as any \code{gwasPip} name is matched, allele-aware (id format, ref/alt +#' swap, strand), to the GWAS variants at its position, and takes the name +#' of the one it matches. Set FALSE when the caller has already aligned them +#' (e.g. \code{qtlEnrichmentPipeline} aligns each QTL tuple once against +#' the union GWAS panel rather than re-aligning per GWAS study); the names +#' are then matched to \code{gwasPip} exactly as given. #' @param doubleShrinkage Logical. Apply the double-shrinkage correction to the #' enrichment estimate. Default \code{FALSE}. #' @param besselCorrection Logical. Apply Bessel's correction when estimating @@ -822,42 +1102,48 @@ qtlEnrichmentPipeline <- function( #' \code{sd (intercept)}, \code{Enrichment (no shrinkage)}, #' \code{Enrichment (w/ shrinkage)}, \code{sd (no shrinkage)}, #' \code{sd (w/ shrinkage)}, \code{Alternative (coloc) p1} / \code{p2} / -#' \code{p12} and \code{Effective MI rounds} -- plus -#' \code{unused_xqtl_variants}, the QTL variants of each region that no GWAS -#' variant matched. The names are the original fastenloc's; -#' \code{\link{qtlEnrichmentPipeline}} is what renames them to a tidy table. +#' \code{p12} and \code{Effective MI rounds} -- plus diagnostics: +#' \code{Missing proportion per MI round}, the share of each round's sampled +#' QTL variants that \code{gwasPip} does not carry (they enter with GWAS +#' PIP 0); +#' \code{EM converged per MI round}; \code{EM iterations per MI round}, +#' how many EM iterations each round took; \code{Null QTL fits}, the number of +#' fits with no effect of positive prior variance, which contribute no +#' sampled variants; and \code{unused_xqtl_variants}, the QTL variants of +#' each region that no GWAS variant matched. The estimate names are the +#' original fastenloc's; \code{\link{qtlEnrichmentPipeline}} is what renames +#' them to a tidy table. #' #' @examples -#' -#' # Simulate fake data for gwasPip -#' nGwasPip <- 1000 -#' gwasPip <- runif(nGwasPip) -#' names(gwasPip) <- paste0("snp", 1:nGwasPip) -#' # Simulate fake data for a single SuSiEFit object -#' simulateSusiefit <- function(n, p) { -#' pip <- runif(n) -#' names(pip) <- paste0("snp", 1:n) -#' alpha <- t(matrix(runif(n * p), nrow = n)) -#' alpha <- t(apply(alpha, 1, function(row) row / sum(row))) +#' set.seed(1) +#' # GWAS PIPs for 2000 variants of a GWAS that tested one million: mostly +#' # near zero, with two strong signals. +#' ids <- sprintf("chr1:%d:A:G", 1000 * seq_len(2000)) +#' gwasPip <- stats::setNames(stats::rbeta(2000, 0.05, 100), ids) +#' gwasPip[c(300, 1200)] <- c(0.95, 0.6) +#' # A SuSiE-like fit per gene: two single effects over the gene's variants, +#' # each concentrated on a few of them. +#' simulateFit <- function(idx, hits) { +#' alpha <- matrix(1e-4, length(hits), length(idx)) +#' alpha[cbind(seq_along(hits), hits)] <- 1 +#' alpha <- alpha / rowSums(alpha) #' list( -#' pip = pip, #' alpha = alpha, -#' prior_variance = runif(p) +#' pip = stats::setNames(1 - apply(1 - alpha, 2, prod), ids[idx]), +#' prior_variance = c(0.4, 0.1) #' ) #' } -#' # Simulate multiple SuSiEFit objects -#' nSusieFits <- 2 -#' susieFits <- replicate( -#' nSusieFits, simulateSusiefit(nGwasPip, 10), simplify = FALSE) -#' # Add these fits to a list, providing names to each element -#' names(susieFits) <- paste0("fit", seq_along(susieFits)) -#' # Set other parameters -#' impN <- 10 -#' lambda <- 1 -#' library(pecotmr) +#' susieFits <- list( +#' gene1 = simulateFit(251:350, c(50, 10)), +#' gene2 = simulateFit(1151:1250, c(50, 80)), +#' gene3 = simulateFit(1601:1700, c(20, 70)) +#' ) #' en <- qtlEnrichment( -#' gwasPip, susieFits, lambda = lambda, impN = impN, -#' BPPARAM = BiocParallel::SerialParam()) +#' gwasPip, susieFits, +#' numGwas = 1e6, impN = 10, seed = 1, +#' BPPARAM = BiocParallel::SerialParam(), verbose = FALSE +#' ) +#' en[["Enrichment (w/ shrinkage)"]] #' #' @seealso \code{\link[susieR]{susie}} #' @useDynLib pecotmr, .registration = TRUE @@ -878,20 +1164,67 @@ qtlEnrichment <- function( seed = NULL ) { .assertBpparam(BPPARAM) - piGwas <- .enrEstimatePiGwas(gwasPip, numGwas, verbose) - piQtl <- .enrEstimatePiQtl(susieQtlRegions, piQtl, verbose) - .enrValidatePi(piGwas, piQtl) .enrValidateNames(gwasPip, susieQtlRegions) - # Align each region's pip names to the GWAS convention + record unmatched. + nullFits <- .enrValidateFits(susieQtlRegions) + # Relabel each region's pip names to the GWAS convention, then code every + # variable against the GWAS vector, so the kernel works on indices. aligned <- .enrAlignPipNames(susieQtlRegions, gwasPip, alignNames) - unmatchedVariants <- map(aligned, "unmatched_variants") - susieQtlRegions <- map(aligned, .enrStripUnmatched) + .qtlEnrichmentCoded( + gwasPip = gwasPip, + susieQtlRegions = susieQtlRegions, + coded = .enrCodeRegions(aligned, names(gwasPip)), + nullFits = nullFits, + numGwas = numGwas, + piQtl = piQtl, + lambda = lambda, + impN = impN, + doubleShrinkage = doubleShrinkage, + besselCorrection = besselCorrection, + BPPARAM = BPPARAM, + verbose = verbose, + seed = seed + ) +} + +# The estimate from regions already coded against the GWAS PIP vector +# (`coded`: the kernel-ready fits, the number of distinct QTL-only variants +# and each region's unmatched ids). Shared by qtlEnrichment(), which codes +# by name, and qtlEnrichmentPipeline(), which codes by variant +# (.enrCodeAligned()); `gwasVariants`, the PIPs' variants, is the +# pipeline's and only informs. +# @noRd +.qtlEnrichmentCoded <- function( + gwasPip, + susieQtlRegions, + coded, + nullFits, + numGwas = NULL, + piQtl = NULL, + lambda = 1.0, + impN = 25, + doubleShrinkage = FALSE, + besselCorrection = TRUE, + BPPARAM = SerialParam(), + verbose = TRUE, + seed = NULL, + gwasVariants = NULL +) { + # As in fastenloc, the variant universe is every GWAS variant plus every + # QTL variant the GWAS vector does not carry, which has GWAS PIP 0. + totalVariants <- .enrTotalVariants( + numGwas, + length(gwasPip) + coded$nQtlOnly + ) + piGwas <- .enrEstimatePiGwas(gwasPip, totalVariants, numGwas, verbose) + piQtl <- .enrEstimatePiQtl(susieQtlRegions, piQtl, totalVariants, verbose) + .enrValidatePi(piGwas, piQtl) # cpp11 requires exact integer types for int parameters. en <- qtlEnrichmentCpp( - rGwasPip = gwasPip, - rQtlSusieFit = susieQtlRegions, + rGwasPip = as.numeric(gwasPip), + rQtlSusieFit = coded$fits, piGwas = piGwas, piQtl = piQtl, + totalVariants = totalVariants, ImpN = as.integer(impN), shrinkageLambda = lambda, doubleShrinkage = doubleShrinkage, @@ -899,45 +1232,73 @@ qtlEnrichment <- function( numThreads = .bpLocalThreads(BPPARAM, "qtlEnrichment"), seed = if (is.null(seed)) NULL else as.integer(seed) ) - list_assign(en, unused_xqtl_variants = unmatchedVariants) + .enrCheckRounds(en) + .enrReportDiagnostics(en, nullFits, length(susieQtlRegions), verbose) + list_assign( + en, + `Invalid MI rounds` = zap(), + `Null QTL fits` = nullFits, + unused_xqtl_variants = coded$unmatched + ) } -# piGwas = sum(gwasPip) / numGwas (estimated from the data, with a warning, when -# numGwas is absent). -# @noRd -.enrEstimatePiGwas <- function(gwasPip, numGwas, verbose) { - if (!is.null(numGwas)) { - return(sum(gwasPip) / numGwas) +# The variant total both priors are taken over: fastenloc's -total_variants, +# which may not fall below the number of distinct variants the data carry (the +# GWAS PIP vector plus the QTL variants it lacks). Without numGwas that number +# is used, with a warning, since a GWAS PIP vector covering only fine-mapped +# blocks makes it far smaller than the variants the GWAS tested. +#' @importFrom checkmate assertNumber +#' @noRd +.enrTotalVariants <- function(numGwas, universe) { + if (is.null(numGwas)) { + warn(glue( + "numGwas is not provided. Using the {universe} distinct variants ", + "of gwasPip and the QTL fits as the variant total, which biases ", + "piGwas and piQtl upward unless gwasPip is genome-wide. fastenloc ", + "requires this total as -total_variants." + )) + return(universe) } - warn(glue( - "numGwas is not provided. Estimating piGwas from the data. Note ", - "that this estimate may be biased if the input gwasPip does not ", - "contain genome-wide variants." - )) - piGwas <- sum(gwasPip) / length(gwasPip) - if (verbose) { + assertNumber(numGwas, lower = 1, finite = TRUE) + if (numGwas < universe) { + warn(glue( + "numGwas ({numGwas}) is smaller than the {universe} distinct ", + "variants of gwasPip and the QTL fits; using {universe}, as ", + "fastenloc does." + )) + return(universe) + } + numGwas +} + +# piGwas = sum(gwasPip) / the variant total (reported when the total was +# estimated). +# @noRd +.enrEstimatePiGwas <- function(gwasPip, totalVariants, numGwas, verbose) { + piGwas <- sum(gwasPip) / totalVariants + if (is.null(numGwas) && verbose) { piGwasR <- round(piGwas, 5) inform(glue("Estimated piGwas: {piGwasR}\n", .trim = FALSE)) } piGwas } -# piQtl = total signal / total variants across regions (estimated, with a -# warning, when piQtl is absent). +# piQtl = the QTL fits' summed PIPs / the variant total, as in fastenloc +# (estimated, with a warning, when piQtl is absent). # @noRd -.enrEstimatePiQtl <- function(susieQtlRegions, piQtl, verbose) { +.enrEstimatePiQtl <- function(susieQtlRegions, piQtl, totalVariants, verbose) { if (!is.null(piQtl)) { return(piQtl) } msg <- glue( - "piQtl is not provided. Estimating piQtl from the data. Note that ", - "this estimate may be biased if either 1) the input susieQtlRegions ", - "does not have enough data, or 2) the single effects only include ", - "variables inside of credible sets or signal clusters." + "piQtl is not provided. Estimating piQtl as the QTL fits' summed PIPs ", + "over the variant total. Note that this estimate may be biased if ", + "either 1) the variant total is not the number of variants tested ", + "(see numGwas), or 2) the single effects only include variables ", + "inside of credible sets or signal clusters." ) warn(msg) - allPips <- list_c(map(susieQtlRegions, "pip")) - piQtl <- sum(allPips) / length(allPips) + piQtl <- sum(map_dbl(susieQtlRegions, .enrPipSum)) / totalVariants if (verbose) { piQtlR <- round(piQtl, 5) inform(glue("Estimated piQtl: {piQtlR}\n", .trim = FALSE)) @@ -945,27 +1306,44 @@ qtlEnrichment <- function( piQtl } -# Neither prior probability may be zero. +# @noRd +.enrPipSum <- function(x) { + sum(x$pip) +} + +# Each prior probability must lie in (0, 1), and so must their sum: the EM's +# starting cells and its intercept are only defined then. # @noRd .enrValidatePi <- function(piGwas, piQtl) { - if (piGwas == 0) { + if (!(piGwas > 0)) { msg <- glue( "Cannot perform enrichment analysis. No association signal found ", "in GWAS data." ) abort(msg) } - if (piQtl == 0) { + if (!(piQtl > 0)) { msg <- glue( "Cannot perform enrichment analysis. No QTL associated with the ", "molecular phenotype." ) abort(msg) } + if (!(piGwas + piQtl < 1)) { + piGwasR <- signif(piGwas, 3) + piQtlR <- signif(piQtl, 3) + msg <- glue( + "qtlEnrichment: piGwas ({piGwasR}) and piQtl ({piQtlR}) must sum ", + "to less than 1. Supply numGwas, the total number of variants ", + "the GWAS tested." + ) + abort(msg) + } invisible(NULL) } -# Both gwasPip and every region's pip must carry variant names. +# Both gwasPip and every region's pip must carry variant names, and gwasPip +# one PIP per variant: the variant total counts its names. # @noRd .enrValidateNames <- function(gwasPip, susieQtlRegions) { if (is.null(names(gwasPip))) { @@ -975,6 +1353,14 @@ qtlEnrichment <- function( ) abort(msg) } + dup <- anyDuplicated(names(gwasPip)) + if (dup > 0L) { + msg <- glue( + "gwasPip names variant '{names(gwasPip)[[dup]]}' more than once; ", + "give each variant one PIP." + ) + abort(msg) + } if (!all(map_lgl(susieQtlRegions, .enrHasPipNames))) { msg <- glue( "Variant names are missing in susieQtlRegions$pip. Please provide ", @@ -991,64 +1377,196 @@ qtlEnrichment <- function( !is.null(names(x$pip)) } -# Align each region's pip names to gwasPip (relabel + record unmatched), or -- -# when the caller already aligned (alignNames = FALSE) -- only recompute the -# cheap per-study unmatched set. +# Every region fit must be one the kernel can sample from: alpha a finite, +# non-negative matrix with a column per pip variant and a row per prior +# variance, and each effect of positive prior variance a distribution (its row +# sums to 1). A malformed fit used to read out of bounds in the kernel (a +# null_weight fit has one more alpha column than variants) or slip NaN past its +# row-sum check, so it is refused here, by name. A fit with no effect of +# positive prior variance is a null fit: it samples nothing, but a tuple made +# only of null fits has nothing to estimate from. Returns the null-fit count. # @noRd -.enrAlignPipNames <- function(susieQtlRegions, gwasPip, alignNames) { - if (alignNames) { - return(map(susieQtlRegions, .enrAlignRegionByMatch, gwasPip = gwasPip)) +.enrValidateFits <- function(susieQtlRegions) { + problems <- compact(imap(susieQtlRegions, .enrFitProblem)) + if (length(problems) > 0L) { + abort(c( + "qtlEnrichment: malformed QTL fit(s):", + set_names(utils::head(unlist(problems), 5L), "x") + )) } - map(susieQtlRegions, .enrMarkUnmatched, gwasNameSet = names(gwasPip)) + nullFit <- map_lgl(susieQtlRegions, .enrIsNullFit) + if (length(nullFit) > 0L && all(nullFit)) { + abort(glue( + "qtlEnrichment: none of the {length(nullFit)} QTL fits has an ", + "effect with prior variance > 0, so there is nothing to sample." + )) + } + sum(nullFit) } -# Relabel a region's matched pip names to the GWAS convention via the shared -# matcher, recording the unmatched variant names. +# The first problem with one region fit, or NULL. # @noRd -.enrAlignRegionByMatch <- function(x, gwasPip) { - mm <- matchVariants(names(x$pip), names(gwasPip)) - nm <- replace(names(x$pip), mm$idxA, names(gwasPip)[mm$idxB]) - aligned <- list_assign(x, pip = set_names(x$pip, nm)) - unmatchedIdx <- setdiff(seq_along(aligned$pip), mm$idxA) - list_assign( - aligned, - !!!compact(list( - unmatched_variants = if (length(unmatchedIdx) > 0) { - names(aligned$pip)[unmatchedIdx] - } +.enrFitProblem <- function(x, label) { + alpha <- x$alpha + priorVariance <- x$prior_variance + if (!is.matrix(alpha) || !is.numeric(alpha)) { + return(glue("{label}: alpha is not a numeric matrix")) + } + if (ncol(alpha) != length(x$pip)) { + return(glue( + "{label}: alpha has {ncol(alpha)} columns for {length(x$pip)} ", + "pip variants" )) + } + if (nrow(alpha) != length(priorVariance)) { + return(glue( + "{label}: alpha has {nrow(alpha)} rows for ", + "{length(priorVariance)} prior variances" + )) + } + if (!all(is.finite(priorVariance))) { + return(glue("{label}: prior variances must be finite")) + } + if (!all(is.finite(alpha)) || any(alpha < 0)) { + return(glue("{label}: alpha must be finite and non-negative")) + } + rowDev <- abs(rowSums(alpha[priorVariance > 0, , drop = FALSE]) - 1) + if (any(rowDev > 1e-6)) { + return(glue( + "{label}: an alpha row of positive prior variance does not sum ", + "to 1" + )) + } + NULL +} + +# TRUE when no effect of the fit has positive prior variance. +# @noRd +.enrIsNullFit <- function(x) { + !any(x$prior_variance > 0) +} + +# Relabel each region's pip names to the GWAS convention, unless the caller +# already did (alignNames = FALSE). +# @noRd +.enrAlignPipNames <- function(susieQtlRegions, gwasPip, alignNames) { + if (!alignNames) { + return(susieQtlRegions) + } + .enrAlignRegions(susieQtlRegions, names(gwasPip)) +} + +# Code every region's variables against the GWAS names in one pass: the +# 0-based index of the same variant in the GWAS PIP vector, or a negative id +# shared by every region carrying the same absent variant. One match() over the +# concatenated names hashes the GWAS panel once, where a lookup per region +# would rehash it for every gene. Also returns each region's absent names and +# the number of distinct absent variants. +# @noRd +.enrCodeRegions <- function(regions, gwasNames) { + ids <- map(regions, .enrRegionIds) + flat <- as.character(unlist(ids, use.names = FALSE)) + idx <- match(flat, gwasNames) + absent <- is.na(idx) + qtlOnly <- unique(flat[absent]) + codes <- idx - 1L + codes[absent] <- -match(flat[absent], qtlOnly) + regionOf <- factor( + rep(seq_along(regions), lengths(ids)), + levels = seq_along(regions) + ) + unmatched <- map( + unname(split(flat[absent], regionOf[absent])), + .enrNullIfEmpty + ) + list( + fits = map2(regions, unname(split(codes, regionOf)), .enrCodedFit), + unmatched = set_names(unmatched, names(regions)), + nQtlOnly = length(qtlOnly) ) } -# Record the region's variants absent from the GWAS name set (cheap membership -# test; names already aligned by the caller). # @noRd -.enrMarkUnmatched <- function(x, gwasNameSet) { - unmatchedIdx <- which(!is_in(names(x$pip), gwasNameSet)) - list_assign( - x, - !!!compact(list( - unmatched_variants = if (length(unmatchedIdx) > 0) { - names(x$pip)[unmatchedIdx] - } - )) +.enrRegionIds <- function(x) { + names(x$pip) +} + +# @noRd +.enrNullIfEmpty <- function(x) { + if (length(x) == 0L) NULL else x +} + +# One region in the form the kernel reads: alpha (double), prior variances +# and the variables' integer codes. +# @noRd +.enrCodedFit <- function(x, codes) { + alpha <- x$alpha + if (!is.double(alpha)) { + storage.mode(alpha) <- "double" + } + list( + alpha = alpha, + prior_variance = as.numeric(x$prior_variance), + codes = as.integer(codes) ) } -# Drop the transient unmatched_variants field from a region. +# A round whose (not QTL, not causal) EM cell came out non-positive had a +# variant total too small for its data; its estimates are NaN. # @noRd -.enrStripUnmatched <- function(x) { - list_modify(x, unmatched_variants = zap()) +.enrCheckRounds <- function(en) { + invalid <- en[["Invalid MI rounds"]] + if (invalid > 0L) { + nRounds <- length(en[["EM converged per MI round"]]) + msg <- glue( + "qtlEnrichment: the variant total is too small for the data in ", + "{invalid} of {nRounds} MI round(s), leaving the EM no variants ", + "that are neither QTL nor causal. Supply numGwas, the total ", + "number of variants the GWAS tested." + ) + abort(msg) + } + invisible(NULL) } -# Relabel one region's matched pip names to the union GWAS panel (unmatched -# names kept as-is). +# The kernel no longer prints from its worker threads; its per-round +# diagnostics come back and are reported here. A round whose EM ran out of +# iterations is always worth a warning; the rest is progress, shown only when +# verbose. # @noRd -.enrAlignRegion <- function(x, unionGwasNames) { - if (!is.null(names(x$pip)) && length(unionGwasNames) > 0L) { - mm <- matchVariants(names(x$pip), unionGwasNames) - nm <- replace(names(x$pip), mm$idxA, unionGwasNames[mm$idxB]) - return(list_assign(x, pip = set_names(x$pip, nm))) +.enrReportDiagnostics <- function(en, nullFits, nFits, verbose) { + converged <- en[["EM converged per MI round"]] + if (!all(converged)) { + warn(glue( + "qtlEnrichment: the EM did not converge within 1000 iterations ", + "in {sum(!converged)} of {length(converged)} MI round(s)." + )) + } + if (!verbose) { + return(invisible(NULL)) + } + if (nullFits > 0L) { + inform(glue( + "{nullFits} of {nFits} QTL fits have no effect with prior ", + "variance > 0 and contribute no sampled variants." + )) + } + missing <- en[["Missing proportion per MI round"]] + inform(glue( + "Proportion of sampled xQTL variants missing from the GWAS PIP ", + "vector: {signif(mean(missing), 3)} (mean over {length(missing)} MI ", + "rounds); they enter the estimate with GWAS PIP 0." + )) + iterations <- en[["EM iterations per MI round"]] + if (length(iterations) > 0L) { + inform(glue( + "EM iterations per MI round: median {stats::median(iterations)} ", + "(range {min(iterations)}-{max(iterations)})." + )) + } + removed <- length(missing) - en[["Effective MI rounds"]] + if (removed > 0) { + inform(glue("Outlier filtering removed {removed} MI round(s).")) } - x + invisible(NULL) } diff --git a/R/tupleSelectors.R b/R/tupleSelectors.R index 6b370a4c..cafa2ee1 100644 --- a/R/tupleSelectors.R +++ b/R/tupleSelectors.R @@ -1209,16 +1209,127 @@ first <- idx[[1L]] new( "FineMappingRow", - variants = .rtlGatherElements(x, idx), + variants = if (length(idx) == 1L) { + .rtlGatherElements(x, idx) + } else { + .fmrGatherVariants(x, idx) + }, susieFit = md$susieFit[[first]], cvResult = md$cvResult[[first]], - fitVariants = .mdFitVariants(md, idx) + derivedColumns = .mdDerivedColumns(md, idx) ) } -# The variants the fit of rows `idx` was made with, in its order: the first -# row's, as the fit payload is, since rows split from one entry repeat both. -# None for a collection saved before rows recorded them. +# The credible-set columns rows `idx` record as derived: the first row's, as +# with the fit. None for a collection saved before rows recorded them. +# @noRd +.mdDerivedColumns <- function(md, idx) { + dc <- md$derivedColumns + if (is.null(dc)) { + return(character(0)) + } + as.character(dc[[idx[[1L]]]]) +} + +# The elements of rows `idx`, concatenated, each with the columns its own fit +# gives back restored (.fmRowRestoredVariants()) -- before they are joined, +# since a joined entry keeps only the first row's fit. +# @noRd +.fmrGatherVariants <- function(x, idx) { + gr <- .rtlGatherElements(x, idx) + if (length(gr) == 0L) { + return(gr) + } + pip <- mcols(gr, use.names = FALSE)$pip + recorded <- mcols(x, use.names = FALSE)$derivedColumns + anyRecorded <- !is.null(recorded) && any(lengths(recorded[idx]) > 0L) + if (!is.null(pip) && !anyNA(pip) && !anyRecorded) { + return(gr) + } + restored <- .fmrRestoreAbsentColumns(x, idx, gr) + if (!is.null(restored)) { + return(restored) + } + pieces <- map(idx, .fmrRowVariantsAt, x = x) + suppressWarnings(exec(c, !!!unname(pieces))) +} + +# The joined elements `gr` of rows `idx` with their pip and credible-set +# columns restored in one pass -- each row giving plain vectors, inserted +# once -- when no row stores any of those columns and every row records the +# same ones as derived: a trimmed collection, the genome-wide case. NULL +# otherwise, and when some row's fit cannot give them, for the row-by-row +# restore (.fmRowRestoredVariants()) to handle. +# @noRd +.fmrRestoreAbsentColumns <- function(x, idx, gr) { + md <- mcols(x, use.names = FALSE) + records <- if (is.null(md$derivedColumns)) { + rep(list(character(0)), length(idx)) + } else { + map(idx, function(i) as.character(md$derivedColumns[[i]])) + } + if (!all(map_lgl(records, identical, records[[1L]]))) { + return(NULL) + } + record <- .fmRowCsRecord(records[[1L]]) + csCols <- c(record$labels, str_c(record$labels, "_purity")) + cn <- colnames(mcols(gr, use.names = FALSE)) + if (any(is_in(c("pip", csCols), cn))) { + return(NULL) + } + pieces <- map(idx, .fmrRowDerivedColumns, x = x, record = record) + if (any(map_lgl(pieces, is.null))) { + return(NULL) + } + joined <- map( + set_names(names(pieces[[1L]])), + function(nm) unlist(map(pieces, nm), use.names = FALSE) + ) + out <- gr + if (length(record$labels) > 0L) { + out <- .fmRowInsertColumns(out, joined[csCols], .fmRowCsSlot(cn)) + } + .fmRowInsertColumns( + out, + joined["pip"], + .fmRowPipSlot(colnames(mcols(out, use.names = FALSE))) + ) +} + +# Row i's credible-set columns `record` names, then its pip, as its fit gives +# them; NULL when the fit gives no PIPs or not those sets. Positional for a +# row holding all of its fit, so no id is rendered. +# @noRd +.fmrRowDerivedColumns <- function(i, x, record) { + fit <- mcols(x, use.names = FALSE)$susieFit[[i]] + pip <- if (is.list(fit)) fit[["pip"]] + if (!is.numeric(pip)) { + return(NULL) + } + n <- length(x[[i]]) + cols <- if (.rowHoldsFit(n, length(pip))) { + seq_len(n) + } else { + .fitColumnsPlaced(x[[i]], fit) + } + cs <- list() + if (length(record$labels) > 0L) { + cs <- .fitCsColumns(fit, record$labels, record$tag, cols, n) + if (is.null(cs)) { + return(NULL) + } + } + c(cs, list(pip = as.numeric(pip)[cols])) +} + +# @noRd +.fmrRowVariantsAt <- function(i, x) { + .fmRowRestoredVariants(.fmrRowParts(x, i)) +} + +# The variants the fits of TWAS rows `idx` were made with, in their order: +# the first row's, as the fit payload is, since rows split from one entry +# repeat both. None for a collection saved before rows recorded them. # @noRd .mdFitVariants <- function(md, idx) { fv <- md$fitVariants @@ -1245,7 +1356,7 @@ # @noRd .fmrPartsTopLoci <- function(parts) { - .fmeTopLociFromElement(variants(.asFmRowPayload(parts))) + .fmeTopLociFromElement(.fmRowRestoredVariants(.asFmRowPayload(parts))) } # ---- per-row views ---------------------------------------------------------- @@ -1347,7 +1458,13 @@ # @noRd .fmrRowCredibleSetSummary <- function(parts, coverage = 0.95) { - .csSummaryFit(.fmrPartsTopLoci(parts), susieFit(parts), coverage) + fit <- susieFit(parts) + .csSummaryFit( + .fmrPartsTopLoci(parts), + fit, + coverage, + .partsFitIds(parts, fit$alpha) + ) } # @noRd @@ -1437,26 +1554,172 @@ # describes the run on all of its variants, so reading it from a row that # holds fewer warns. Nothing is rescaled: intersectVariants() is the explicit # way to restrict a fit. +# +# A fine-mapping row is built from its fit, holding the fit's variables in the +# fit's order (FineMappingRow()), so a row as long as its fit is read off it +# by position, with no id compared; only a row narrowed since -- shorter than +# its fit -- is found in the fit by the names the fit gives its variables. -# The variants a row's stored fit was made with. +# How many variables `fit` was made with: the length of its PIP vector, else +# the columns of `mat` (one of its matrices) when given, else of its `alpha`. +# The PIPs come first because a null_weight fit's effect matrices carry one +# more column, the null, which is no variable. NA for a fit that gives none +# of them: no fit, or a merged entry's list of per-region fits. # @noRd -.rowFitVariants <- function(parts) { - if (methods::is(parts, "TwasWeightsRow")) { - return(.twRowFitVariants(parts)) +.fitWidth <- function(fit, mat = NULL) { + pip <- if (is.list(fit)) fit[["pip"]] + if (is.numeric(pip)) { + return(length(pip)) + } + if (!is.null(mat)) { + return(ncol(mat)) + } + alpha <- if (is.list(fit)) fit[["alpha"]] + if (!is.null(dim(alpha))) { + return(ncol(alpha)) } - .fmRowFitVariants(parts) + NA_integer_ } -# The fit's variables in its own order: the ids the row recorded when it was -# built, else the names the fit's matrix `mat` carries, else -- an unnamed fit -# of a row saved before rows recorded them -- the row's variants as they are. +# The names `fit` gives its variables: those of its PIP vector, else of the +# columns of `mat` (one of its matrices) when given, else of its `alpha`. +# NULL when it gives none, as a trimmed fit of a row not narrowed does not +# (trimFineMappingResult()). +# @noRd +.fitVariableNames <- function(fit, mat = NULL) { + if (!is.list(fit)) { + return(colnames(mat)) + } + names(fit[["pip"]]) %||% colnames(mat) %||% colnames(fit[["alpha"]]) +} + +# Whether a row of `n` variants holds all of a fit of `width` variables. A fit +# of unknown width is taken to describe the row as it is. +# @noRd +.rowHoldsFit <- function(n, width) { + is.na(width) || n == width +} + +# For each variant of `gr`, its column among the variables of `fit` (or of +# its matrix `mat`): positional when `gr` holds all of them, else found by +# the names the fit gives them (.fitColumnOf(); NA for a variant it was not +# made with). NULL when `gr` is narrowed and the fit names none, which +# leaves nothing to place the variants by. +# @noRd +.fitColumnsFor <- function(gr, fit, mat = NULL) { + n <- length(gr) + if (.rowHoldsFit(n, .fitWidth(fit, mat))) { + return(seq_len(n)) + } + fitted <- .fitVariableNames(fit, mat) + if (is.null(fitted)) { + return(NULL) + } + .fitColumnOf(.grVariantIds(gr), fitted) +} + +# The fit's variables in its own order. For a fine-mapping row holding all of +# them, its own variants; for one narrowed since, the names the fit (or its +# matrix `mat`) gives them -- an error when it gives none. For a TWAS row, the +# ids it recorded when it was built, else the names `mat` carries, else the +# row's variants as they are. # @noRd .partsFitIds <- function(parts, mat = NULL) { - recorded <- .rowFitVariants(parts) - if (length(recorded) > 0L) { - return(recorded) + if (methods::is(parts, "TwasWeightsRow")) { + recorded <- .twRowFitVariants(parts) + if (length(recorded) > 0L) { + return(recorded) + } + return(colnames(mat) %||% variantIds(parts)) + } + fit <- susieFit(parts) + n <- length(variants(parts)) + width <- .fitWidth(fit, mat) + if (.rowHoldsFit(n, width)) { + return(variantIds(parts)) + } + .fitVariableNames(fit, mat) %||% .abortUnnamedNarrowedFit(n, width) +} + +# The variants of the fits `fits` of rows `idx` of a fine-mapping collection, +# in each fit's order, read for all the rows at once as one variant table +# (.variantTable()), row after row: list(table, n), `n` each row's count (NA +# for a row placed nowhere, which contributes none). A fit's variants are the +# names it gives its PIPs; else, for a row holding all of its fit, the row's +# own variants, read off its ranges without rendering an id; else, for a +# narrowed row, the names the fit gives its variables, or `unplaced(i)`. +# @noRd +#' @importFrom purrr map2_lgl +.fmrRowsFitVariants <- function(x, idx, fits, unplaced) { + n <- unname(lengths(x))[idx] + named <- map(fits, function(fit) names(fit[["pip"]])) + holds <- map2_lgl(n, map_int(fits, .fitWidth), .rowHoldsFit) + fromRows <- map_lgl(named, is.null) & holds + for (k in which(map_lgl(named, is.null) & !holds)) { + named[k] <- list(.fitVariableNames(fits[[k]]) %||% unplaced(idx[[k]])) + } + len <- ifelse(fromRows, n, lengths(named)) + len[!fromRows & map_lgl(named, is.null)] <- NA_integer_ + if (all(fromRows)) { + return(list( + table = .variantTable(.rtlGatherElements(x, idx)), + n = as.integer(len) + )) + } + counts <- replace(len, is.na(len), 0L) + offset <- cumsum(c(0L, counts))[seq_along(counts)] + at <- function(ks) { + unlist( + map(ks, function(k) offset[[k]] + seq_len(counts[[k]])), + use.names = FALSE + ) + } + total <- sum(counts) + out <- list( + chrom = rep(NA_character_, total), + pos = rep(NA_integer_, total), + A2 = rep(NA_character_, total), + A1 = rep(NA_character_, total) + ) + fill <- function(out, where, tab) { + for (f in names(out)) { + out[[f]][where] <- tab[[f]] + } + out + } + if (any(fromRows)) { + out <- fill( + out, + at(which(fromRows)), + .variantTable(.rtlGatherElements(x, idx[fromRows])) + ) + } + byName <- which(!fromRows & !is.na(len)) + if (length(byName) > 0L) { + out <- fill( + out, + at(byName), + .idsVariantTable(unlist(named[byName], use.names = FALSE)) + ) } - colnames(mat) %||% variantIds(parts) + list(table = out, n = as.integer(len)) +} + +# The fits of rows `idx` of a fine-mapping collection, as a list. +# @noRd +.fmrFitsAt <- function(x, idx) { + as.list(mcols(x, use.names = FALSE)$susieFit[idx]) +} + +# @noRd +.abortUnnamedNarrowedFit <- function(n, width) { + abort(glue( + "The row holds {n} variants but its fit was made with {width}, and ", + "the fit does not name its variables, so the row's variants cannot ", + "be placed in it. Narrow the row before trimming it ", + "(trimFineMappingResult() keeps the names of a narrowed row's fit), ", + "or refit on the variants kept." + )) } # How many of `fitted` are gone from `held`. A variant whose alleles @@ -1476,6 +1739,11 @@ # has none), matched the same allele-aware way. # @noRd .fitColumnOf <- function(held, fitted) { + # The usual case, a row holding exactly its fit's variables in order, + # needs no hashing. + if (identical(held, fitted)) { + return(seq_along(held)) + } col <- match(held, fitted) miss <- which(is.na(col)) if (length(miss) == 0L) { @@ -1485,19 +1753,36 @@ replace(col, miss[m$idxA], m$idxB) } +# How many of the variables a row's fit was made with the row no longer +# holds, with the fit's size: a fine-mapping row is short by however many +# fewer variants it holds than its fit has; a TWAS row by the recorded ids it +# no longer holds. +# @noRd +.partsLostFitVariants <- function(parts) { + if (methods::is(parts, "TwasWeightsRow")) { + fitted <- .twRowFitVariants(parts) + return(list( + width = length(fitted), + lost = .lostFitVariantCount(fitted, variantIds(parts)) + )) + } + width <- .fitWidth(susieFit(parts)) + n <- length(variants(parts)) + list(width = width, lost = if (is.na(width)) 0L else max(width - n, 0L)) +} + # `parts` unchanged, after warning when its row holds fewer variants than its # stored fit was made with. # @noRd .fitCoverageChecked <- function(parts, caller) { - fitted <- .rowFitVariants(parts) - lost <- .lostFitVariantCount(fitted, variantIds(parts)) - if (lost > 0L) { + short <- .partsLostFitVariants(parts) + if (short$lost > 0L) { warn( c( glue( "{caller}: the stored fit was made with ", - "{length(fitted)} variants, {lost} of which this row no ", - "longer holds." + "{short$width} variants, {short$lost} of which this row ", + "no longer holds." ), i = .fitCoverageHint(parts) ), @@ -1539,20 +1824,31 @@ } # The labels of the rows of `x` that hold fewer variants than their stored -# fit was made with. None when `x` records no fit variants, or is not a -# collection at all: an optional input left NULL, or one the caller has yet -# to validate, which this advisory check must not pre-empt. +# fit was made with: for fine-mapping rows, those shorter than their fit, +# which needs no ids; for TWAS rows, those missing some of the variants they +# recorded. None when `x` has no fits to compare, or is not a collection at +# all: an optional input left NULL, or one the caller has yet to validate, +# which this advisory check must not pre-empt. # @noRd .narrowedRowLabels <- function(x) { - if (!methods::is(x, "RangedTupleList")) { + if (!methods::is(x, "RangedTupleList") || length(x) == 0L) { return(character(0)) } - fv <- mcols(x, use.names = FALSE)$fitVariants - if (is.null(fv) || length(x) == 0L) { - return(character(0)) + md <- mcols(x, use.names = FALSE) + if (.isFineMappingPayload(x)) { + if (is.null(md$susieFit)) { + return(character(0)) + } + width <- map_int(as.list(md$susieFit), .fitWidth) + short <- which(!is.na(width) & lengths(x) < width) + } else { + fv <- md$fitVariants + if (is.null(fv)) { + return(character(0)) + } + lost <- map_int(seq_along(x), .rowLostFitVariants, x = x, fv = fv) + short <- which(lost > 0L) } - lost <- map_int(seq_along(x), .rowLostFitVariants, x = x, fv = fv) - short <- which(lost > 0L) if (length(short) == 0L) { return(character(0)) } diff --git a/R/variantId.R b/R/variantId.R index 0a585bfe..a937b574 100644 --- a/R/variantId.R +++ b/R/variantId.R @@ -61,10 +61,17 @@ canonChromLabel <- function(x) { #' @return Character vector of UCSC-style chromosome names. #' @noRd withChrPrefix <- function(x) { - bare <- str_remove(as.character(x), regex("^chr", ignore_case = TRUE)) + # Worked out once per distinct label: a variant table has millions of + # rows but a few dozen chromosomes. + labels <- unique(as.character(x)) + bare <- str_remove(labels, regex("^chr", ignore_case = TRUE)) canon <- canonChrom(bare) standard <- is_in(canon, .STANDARD_CHROMS) - str_c("chr", if_else(standard, str_replace(canon, "^MT$", "M"), bare)) + out <- str_c( + "chr", + if_else(standard, str_replace(canon, "^MT$", "M"), bare) + ) + out[match(as.character(x), labels)] } # The chromosomes withChrPrefix() spells as UCSC does, in canonChrom() form. @@ -147,7 +154,17 @@ chromOrder <- function(x) { #' @param x Character vector of variant IDs. #' @return Character vector with build suffix removed. #' @noRd -stripBuildSuffix <- function(x) str_remove(x, "(:|_)b[0-9]+$") +stripBuildSuffix <- function(x) { + # The regex only where a suffix could be: nearly no id carries one, and + # a fixed-string scan costs a fraction of a regex over millions of ids. + candidate <- which( + str_detect(x, fixed(":b")) | str_detect(x, fixed("_b")) + ) + if (length(candidate) == 0L) { + return(x) + } + replace(x, candidate, str_remove(x[candidate], "(:|_)b[0-9]+$")) +} #' Test whether allele pairs are single-nucleotide (SNP, not indel). #' @@ -308,11 +325,7 @@ parseVariantId <- function(ids) { return(.parseVariantIdDf(ids)) } convention <- detectVariantConvention(ids) - # Normalize: convert underscores to colons, strip build suffix. - normalized <- stripBuildSuffix(str_replace_all(ids, "_", ":")) - # Split into exactly 4 fields via a single vectorized regex match; a - # non-matching id yields an all-NA capture row (mirrors strcapture). - m <- str_match(normalized, "^([^:]+):([^:]+):([^:]+):([^:]+)") + m <- .variantIdFields(ids) data <- tibble( chrom = withChrPrefix(m[, 2L]), pos = as.integer(m[, 3L]), @@ -322,6 +335,16 @@ parseVariantId <- function(ids) { `attr<-`(data, "convention", convention) } +# The fields of variant ids as every parser reads them: underscores read as +# colons and a build suffix dropped, then exactly 4 fields split by a single +# vectorized regex match. A non-matching id yields an all-NA capture row +# (mirrors strcapture). +# @noRd +.variantIdFields <- function(ids) { + normalized <- stripBuildSuffix(str_replace_all(ids, fixed("_"), ":")) + str_match(normalized, "^([^:]+):([^:]+):([^:]+):([^:]+)") +} + # `[[<-` rather than mutate(): callers hand this frame straight through from # a user-supplied table, which may carry NA or "" column names -- and # dplyr refuses to transform such a frame at all. @@ -412,7 +435,14 @@ formatVariantId <- function( } # UCSC style is pecotmr's own; the bare form is for a consumer that wants # it (canonChrom keeps X/Y/MT as strings). - chromOut <- if (chrPrefix) withChrPrefix(chrom) else canonChrom(chrom) + # Over the distinct labels only: millions of variants, a few dozen + # chromosomes (withChrPrefix() does the same). + chromOut <- if (chrPrefix) { + withChrPrefix(chrom) + } else { + labels <- unique(chrom) + canonChrom(labels)[match(chrom, labels)] + } str_c(chromOut, ":", pos, alleleSep, A2, alleleSep, A1) } @@ -448,8 +478,19 @@ normalizeVariantId <- function(ids, chrPrefix = TRUE, convention = NULL) { assertCharacter(ids) assertFlag(chrPrefix) assertList(convention, null.ok = TRUE) - parsed <- parseVariantId(ids) out <- as.character(ids) + # An id already in the canonical form re-formats to itself, and a + # genotype panel's millions of ids usually all are: one regex finds them, + # where parsing and re-rendering every one costs several times as much. + todo <- if (chrPrefix && is.null(convention)) { + which(!str_detect(out, .CANONICAL_VARIANT_ID)) + } else { + seq_along(out) + } + if (length(todo) == 0L) { + return(out) + } + parsed <- parseVariantId(out[todo]) # Only re-format ids that parsed into a chrom + pos; leave unparseable ids # (e.g. rsIDs) unchanged rather than emitting "chrNA:..." garbage. ok <- !is.na(parsed$chrom) & !is.na(parsed$pos) @@ -473,9 +514,15 @@ normalizeVariantId <- function(ids, chrPrefix = TRUE, convention = NULL) { chrPrefix = chrPrefix ) } - replace(out, ok, reformatted) + replace(out, todo[ok], reformatted) } +# The ids normalizeVariantId() returns unchanged in its default convention: a +# UCSC chromosome, a position without leading zeros, and two alleles, with +# no build suffix and no underscore. +# @noRd +.CANONICAL_VARIANT_ID <- "^chr(1[0-9]|2[0-2]|[1-9]|X|Y|M):[1-9][0-9]*:[^:_]+:[^:_]+$" + # Complement a DNA allele string (A<->T, C<->G) for strand flipping. # @noRd .strandFlip <- function(ref) chartr("ATCG", "TAGC", ref) @@ -521,8 +568,10 @@ normalizeVariantId <- function(ids, chrPrefix = TRUE, convention = NULL) { #' @param flip Whether the alleles must be flipped: A <--> T & C <--> G, in #' which case corresponding `colToFlip` are multiplied by -1. Default is #' `TRUE`. -#' @param removeStrandAmbiguous Whether to remove strand SNPs (if any). Default -#' is `TRUE`. +#' @param removeStrandAmbiguous Whether to drop a strand-ambiguous match (A/T +#' or C/G alleles, where a strand flip and an allele swap look the same). +#' Each target-reference pair is judged on its own, whatever else is being +#' harmonized; an exact A/T match is kept. Default is `TRUE`. #' @param flipStrand Whether to output the variants after strand flip. Default #' is `FALSE`. #' @param removeUnmatched Whether to remove unmatched variants. Default is @@ -680,19 +729,47 @@ harmonizeAlleles <- function( list(targetData = trimmedTarget, refVariants = trimmedRef) } -# Inner-join target + reference on (chrom, pos). +# Target + reference rows paired at the same (chrom, pos) by the matching +# engine (.variantPairs()), laid out as an inner join on (chrom, pos) lays +# them out: the target's columns, then the reference's other columns, the ones +# both carry suffixed ".target" / ".ref". # @noRd +#' @importFrom dplyr bind_cols .harmonizeJoin <- function(targetData, refVariants) { - inner_join( - targetData, - refVariants, - by = c("chrom", "pos"), - suffix = c(".target", ".ref") - ) |> + pairs <- .variantPairs( + .frameVariantTable(targetData), + .frameVariantTable(refVariants) + ) + keys <- c("chrom", "pos") + left <- targetData[pairs$query, , drop = FALSE] + right <- refVariants[pairs$subject, , drop = FALSE] + right <- right[, !is_in(colnames(right), keys), drop = FALSE] + both <- setdiff(intersect(colnames(left), colnames(right)), keys) + colnames(left) <- .suffixed(colnames(left), both, ".target") + colnames(right) <- .suffixed(colnames(right), both, ".ref") + bind_cols(left, right, .name_repair = "minimal") |> as_tibble(.name_repair = "minimal") |> .sanitizeNames() } +# `nm` with `suffix` appended to the names in `which`. +# @noRd +.suffixed <- function(nm, which, suffix) { + hit <- !is.na(nm) & is_in(nm, which) + replace(nm, hit, str_c(nm[hit], suffix)) +} + +# The variant table (.variantTable()) of a parsed chrom/pos/A2/A1 frame. +# @noRd +.frameVariantTable <- function(df) { + list( + chrom = as.character(df$chrom), + pos = as.integer(df$pos), + A2 = as.character(df$A2), + A1 = as.character(df$A1) + ) +} + # Empty-match early return (warning + zeroed qcCounts). # @noRd .harmonizeEmptyResult <- function(matchResult) { @@ -748,90 +825,56 @@ harmonizeAlleles <- function( .harmonizeMatchFlags() } -# Exact / sign-flip / strand-flip / INDEL / ID-match indicators, consuming the -# uppercased alleles and strand complements from the earlier pipe stages. +# Exact / sign-flip / strand-flip / INDEL / ID-match indicators, as the +# matching engine decides them (.variantPairFlags()), on the uppercased +# alleles from the earlier pipe stages. # @noRd .harmonizeMatchFlags <- function(matchResult) { - matchResult |> - mutate( - strand_unambiguous = if_else( - (.data$A1.target == "A" & .data$A2.target == "T") | - (.data$A1.target == "T" & .data$A2.target == "A") | - (.data$A1.target == "C" & .data$A2.target == "G") | - (.data$A1.target == "G" & .data$A2.target == "C"), - FALSE, - TRUE - ) - ) |> - mutate( - exact_match = .data$A1.target == .data$A1.ref & - .data$A2.target == .data$A2.ref - ) |> - mutate( - sign_flip = ((.data$A1.target == .data$A2.ref & - .data$A2.target == .data$A1.ref) | - (.data$A1.target == .data$flip2.ref & - .data$A2.target == .data$flip1.ref)) & - (.data$A1.target != .data$A1.ref & - .data$A2.target != .data$A2.ref) - ) |> - mutate( - strand_flip = ((.data$A1.target == .data$flip1.ref & - .data$A2.target == .data$flip2.ref) | - (.data$A1.target == .data$flip2.ref & - .data$A2.target == .data$flip1.ref)) & - (.data$A1.target != .data$A1.ref & - .data$A2.target != .data$A2.ref) - ) |> - mutate( - INDEL = (.data$A2.target == "I" | - .data$A2.target == "D" | - str_length(.data$A2.target) > 1L | - str_length(.data$A1.target) > 1L) - ) |> - mutate( - ID_match = ((.data$A2.target == "D" | .data$A2.target == "I") & - (str_length(.data$A1.ref) > 1L | - str_length(.data$A2.ref) > 1L)) - ) + f <- .variantPairFlags( + matchResult$A1.target, + matchResult$A2.target, + matchResult$A1.ref, + matchResult$A2.ref + ) + mutate( + matchResult, + strand_unambiguous = f$strandUnambiguous, + exact_match = f$exact, + sign_flip = f$signFlip, + strand_flip = f$strandFlip, + INDEL = f$indel, + ID_match = f$idMatch + ) } -# Strand-ambiguity resolution: disable the A/T-C/G guard when the caller opted -# out, and when no unambiguous strand flip survives (ambiguous variants then -# fall through as exact / sign-flip cases rather than being dropped). +# Strand-ambiguity resolution: the A/T-C/G guard is off when the caller opted +# out. Otherwise each pair is judged on its own: an ambiguous pair is not +# rescued by the rest of the batch having no strand flip. # @noRd .harmonizeResolveAmbiguity <- function(matchResult, removeStrandAmbiguous) { - relaxed <- if (removeStrandAmbiguous) { - matchResult - } else { - mutate(matchResult, strand_unambiguous = TRUE) - } - if (any(relaxed$strand_flip & relaxed$strand_unambiguous)) { - return(relaxed) + if (removeStrandAmbiguous) { + return(matchResult) } - mutate(relaxed, strand_unambiguous = TRUE) + mutate(matchResult, strand_unambiguous = TRUE) } -# Compute the keep flag (strand-flip vs non-strand-flip rules); drop indels when -# requested. +# The keep flag, as the matching engine decides it (.variantPairKeep()); the +# strand guard is already in `strand_unambiguous`. # @noRd .harmonizeKeepRule <- function(matchResult, removeIndels) { - ruled <- matchResult |> - mutate( - keep = if_else( - .data$strand_flip, - true = .data$strand_unambiguous | - .data$exact_match | - .data$ID_match, - false = .data$exact_match | - .data$sign_flip | - .data$ID_match - ) - ) - if (!removeIndels) { - return(ruled) - } - mutate(ruled, keep = if_else(.data$INDEL, FALSE, .data$keep)) + keep <- .variantPairKeep( + list( + strandUnambiguous = matchResult$strand_unambiguous, + exact = matchResult$exact_match, + signFlip = matchResult$sign_flip, + strandFlip = matchResult$strand_flip, + indel = matchResult$INDEL, + idMatch = matchResult$ID_match + ), + removeStrandAmbiguous = TRUE, + removeIndels = removeIndels + ) + mutate(matchResult, keep = keep) } # Reduce the join to at most one reference row per TARGET variant. @@ -856,36 +899,16 @@ harmonizeAlleles <- function( # the rule. # @noRd .harmonizeResolveTargets <- function(matchResult) { - tidx <- matchResult[[.haTargetIdx]] - hit <- which(matchResult$keep) - # Fast path: one reference row per target is the overwhelmingly common - # case, and it needs no grouping at all. - if (anyDuplicated(tidx[hit]) == 0L) { - return(matchResult) - } - conflicted <- .harmonizeConflictedTargets( - tidx[hit], - matchResult$sign_flip[hit] - ) - resolved <- hit[ - !is_in(tidx[hit], conflicted) & !duplicated(tidx[hit]) - ] # Named apart from the column it replaces: `keep = keep` inside mutate() # reads the column, not this vector, and silently changes nothing. - resolvedKeep <- replace(rep(FALSE, nrow(matchResult)), resolved, TRUE) + resolvedKeep <- .variantPairResolve( + matchResult[[.haTargetIdx]], + matchResult$keep, + matchResult$sign_flip + ) mutate(matchResult, keep = resolvedKeep) } -# Target indices whose reference matches disagree about the allele-swap sign. -# @noRd -.harmonizeConflictedTargets <- function(tidx, signFlip) { - tibble(tidx = tidx, signFlip = signFlip) |> - group_by(.data$tidx) |> - summarise(nSigns = n_distinct(.data$signFlip), .groups = "drop") |> - filter(.data$nSigns > 1L) |> - pull("tidx") -} - # Named per-row conditional column transforms for the harmonize across() calls. # The `flip` condition vector is bound with purrr::partial() rather than passed # through across()'s `...`, which dplyr deprecated in 1.1.0 -- partial() fixes @@ -1104,6 +1127,192 @@ harmonizeAlleles <- function( } } +# ============================================================================= +# The variant matching engine +# ----------------------------------------------------------------------------- +# Variants are paired by position first -- overlaps of width-1 ranges, so a +# window (`maxDistance`) costs nothing extra -- and their alleles decided +# second, pair by pair: exact, ref/alt swap (sign -1), strand flip, the I/D +# codes. matchVariants() and harmonizeAlleles() both decide through it, so the +# two cannot disagree about which variants match. +# ============================================================================= + +# A variant table: canonical chromosome labels, positions and both alleles, +# from a GRanges (A1/A2 metadata columns), variant ids, or a chrom/pos/A2/A1 +# data.frame (parseVariantId()). Chromosomes are relabelled over their distinct +# values only (withChrPrefix()), so a genome-wide GRanges costs one pass. +# @noRd +.variantTable <- function(x) { + if (methods::is(x, "GRanges")) { + mc <- mcols(x, use.names = FALSE) + if (!all(is_in(c("A1", "A2"), colnames(mc)))) { + abort("A GRanges of variants needs A1 and A2 metadata columns.") + } + labels <- withChrPrefix(as.character(GenomeInfoDb::seqlevels(x))) + return(list( + chrom = labels[as.integer(seqnames(x))], + pos = start(x), + A2 = as.character(mc$A2), + A1 = as.character(mc$A1) + )) + } + p <- parseVariantId(x) + list( + chrom = as.character(p$chrom), + pos = as.integer(p$pos), + A2 = as.character(p$A2), + A1 = as.character(p$A1) + ) +} + +# The pairs of variants of tables `a` and `b` on one chromosome at most +# `maxDistance` bp apart, as list(query, subject) indices, in query then +# subject order -- the order a join on (chrom, pos) gives. A variant with no +# chromosome or position pairs with none. +# @noRd +#' @importFrom IRanges findOverlaps IRanges +.variantPairs <- function(a, b, maxDistance = 0L) { + levels <- unique(c(a$chrom, b$chrom)) + levels <- levels[!is.na(levels)] + ra <- .variantPairRanges(a, levels) + rb <- .variantPairRanges(b, levels) + hits <- findOverlaps( + ra$gr, + rb$gr, + maxgap = as.integer(maxDistance) - 1L, + ignore.strand = TRUE + ) + q <- ra$rows[S4Vectors::queryHits(hits)] + sbj <- rb$rows[S4Vectors::subjectHits(hits)] + o <- order(q, sbj) + list(query = q[o], subject = sbj[o]) +} + +# @noRd +.variantPairRanges <- function(x, levels) { + rows <- which(!is.na(x$chrom) & !is.na(x$pos)) + gr <- GenomicRanges::GRanges( + factor(x$chrom[rows], levels = levels), + IRanges(x$pos[rows], width = 1L) + ) + list(gr = gr, rows = rows) +} + +# `x` upper-cased, over its distinct values (alleles are few). +# @noRd +.upperAlleles <- function(x) { + u <- unique(x) + str_to_upper(u)[match(x, u)] +} + +# The allele relationship of each pair of a target variant (alleles `a1t`, +# `a2t`) with a reference variant (`a1r`, `a2r`): exact; a ref/alt swap, or a +# swap of the complements (`signFlip`); a strand flip; an indel; an I/D-coded +# target meeting a reference indel (`idMatch`); and whether the target's +# alleles leave the strand undecidable (A/T, C/G). Case-insensitive. +# @noRd +.variantPairFlags <- function(a1t, a2t, a1r, a2r) { + a1t <- .upperAlleles(a1t) + a2t <- .upperAlleles(a2t) + a1r <- .upperAlleles(a1r) + a2r <- .upperAlleles(a2r) + flip1 <- .strandFlip(a1r) + flip2 <- .strandFlip(a2r) + differ <- a1t != a1r & a2t != a2r + list( + strandUnambiguous = !((a1t == "A" & a2t == "T") | + (a1t == "T" & a2t == "A") | + (a1t == "C" & a2t == "G") | + (a1t == "G" & a2t == "C")), + exact = a1t == a1r & a2t == a2r, + signFlip = ((a1t == a2r & a2t == a1r) | + (a1t == flip2 & a2t == flip1)) & + differ, + strandFlip = ((a1t == flip1 & a2t == flip2) | + (a1t == flip2 & a2t == flip1)) & + differ, + indel = a2t == "I" | + a2t == "D" | + str_length(a2t) > 1L | + str_length(a1t) > 1L, + idMatch = (a2t == "D" | a2t == "I") & + (str_length(a1r) > 1L | str_length(a2r) > 1L) + ) +} + +# Whether each pair matches: a strand flip only when the target's alleles +# decide the strand (each pair judged on its own), an exact pair, or an I/D +# match; any other pair when exact, swapped or I/D-matched. Indels are refused +# when `removeIndels`. NA where an allele is missing. +# @noRd +.variantPairKeep <- function(flags, removeStrandAmbiguous, removeIndels) { + decided <- if (removeStrandAmbiguous) flags$strandUnambiguous else TRUE + keep <- ifelse( + flags$strandFlip, + decided | flags$exact | flags$idMatch, + flags$exact | flags$signFlip | flags$idMatch + ) + if (removeIndels) { + keep <- ifelse(flags$indel, FALSE, keep) + } + keep +} + +# `keep` with each target settled on at most one reference variant. A target +# whose kept pairs disagree about the swap sign is undecidable and dropped -- +# its effect direction would depend on the reference's row order --; one whose +# pairs agree keeps the first. Unchanged when no target has two. +# @noRd +#' @importFrom vctrs vec_unique_loc +.variantPairResolve <- function(query, keep, signFlip) { + hit <- which(keep) + target <- query[hit] + if (anyDuplicated(target) == 0L) { + return(keep) + } + distinctSigns <- vec_unique_loc(data.frame( + target = target, + sign = signFlip[hit] + )) + nSigns <- tabulate(target[distinctSigns], nbins = max(target)) + resolved <- hit[nSigns[target] == 1L & !duplicated(target)] + replace(rep(FALSE, length(keep)), resolved, TRUE) +} + +# The matched (a, b) pairs of variant tables `a` and `b`: paired within +# `maxDistance`, decided by their alleles, each target settled on one +# reference variant, and each reference variant (its alleles as given) +# claimed by the first target only. list(idxA, idxB, sign), by idxA. +# @noRd +.matchVariantTables <- function( + a, + b, + maxDistance = 0L, + removeStrandAmbiguous = TRUE, + removeIndels = FALSE +) { + pairs <- .variantPairs(a, b, maxDistance) + q <- pairs$query + sbj <- pairs$subject + if (length(q) == 0L) { + return(.matchVariantsEmpty()) + } + flags <- .variantPairFlags(a$A1[q], a$A2[q], b$A1[sbj], b$A2[sbj]) + keep <- .variantPairKeep(flags, removeStrandAmbiguous, removeIndels) + kept <- which(.variantPairResolve(q, keep, flags$signFlip) %in% TRUE) + claimed <- kept[vec_unique_loc(data.frame( + chrom = b$chrom[sbj[kept]], + pos = b$pos[sbj[kept]], + A2 = b$A2[sbj[kept]], + A1 = b$A1[sbj[kept]] + ))] + list( + idxA = q[claimed], + idxB = sbj[claimed], + sign = as.numeric(ifelse(flags$signFlip[claimed], -1, 1)) + ) +} + #' Allele-aware variant matcher (match by chrom/pos/ref/alt, not id string) #' #' The single matching primitive for the package: given two sets of variant @@ -1116,14 +1325,16 @@ harmonizeAlleles <- function( #' classification to \code{harmonizeAlleles}): an allele swap is matched and #' reported with \code{sign = -1} so callers can sign-flip a paired effect / z / #' weight; strand flips are resolved; and strand-ambiguous (A/T, C/G) matches -#' are dropped when \code{removeStrandAmbiguous = TRUE}. +#' are dropped when \code{removeStrandAmbiguous = TRUE}, each pair judged on +#' its own. #' #' When ids cannot be parsed into chrom/pos/ref/alt (e.g. rsIDs), the matcher #' falls back to exact string identity with \code{sign = 1} (no allele awareness #' is possible without alleles). #' -#' @param idsA,idsB Character vectors of variant IDs, or data.frames with -#' chrom/pos/A2/A1 columns (A2 = ref, A1 = alt). +#' @param idsA,idsB Character vectors of variant IDs, data.frames with +#' chrom/pos/A2/A1 columns (A2 = ref, A1 = alt), or GRanges of variants with +#' A1/A2 metadata columns. #' @param allowFlip When TRUE (default) match by (chrom, pos) with ref/alt swap #' and strand handling, reporting \code{sign = -1} for a swap. When FALSE, #' match on exact alleles only (canonicalized format; \code{sign} always +1) @@ -1131,6 +1342,9 @@ harmonizeAlleles <- function( #' @param removeStrandAmbiguous Drop strand-ambiguous (A/T, C/G) matches. #' Default TRUE (mirrors summaryStatsQc). #' @param removeIndels Drop indels. Default FALSE. +#' @param maxDistance Largest distance in bp between the positions of two +#' variants that may match; their alleles must still agree. Default 0: the +#' same position. #' @return A list of three equal-length vectors describing the matched pairs: #' \code{idxA} / \code{idxB} (indices into \code{idsA} / \code{idsB}) and #' \code{sign} (+1 exact, -1 allele-swap). At most one pair per \code{idsA} @@ -1141,9 +1355,11 @@ matchVariants <- function( idsB, allowFlip = TRUE, removeStrandAmbiguous = TRUE, - removeIndels = FALSE + removeIndels = FALSE, + maxDistance = 0L ) { - if (!allowFlip) { + ranged <- methods::is(idsA, "GRanges") || methods::is(idsB, "GRanges") + if (!allowFlip && !ranged && maxDistance == 0L) { # Exact-allele matching: canonicalize the id FORMAT (chr-prefix + # separator, rsID-safe) but keep allele order, then match by exact # string identity, so a ref/alt swap does NOT match (sign is always +1). @@ -1152,9 +1368,9 @@ matchVariants <- function( .matchVariantKeyOf(idsB) )) } - dfA <- parseVariantId(idsA) - dfB <- parseVariantId(idsB) - if (.matchVariantsUnparseable(dfA, dfB)) { + tabA <- .variantTable(idsA) + tabB <- .variantTable(idsB) + if (!ranged && .matchVariantsUnparseable(tabA, tabB)) { # rsID / unparseable ids: exact string identity only (no allele # awareness). data.frame inputs have no string form to fall back to. if (is.data.frame(idsA) || is.data.frame(idsB)) { @@ -1162,7 +1378,32 @@ matchVariants <- function( } return(.matchVariantsExact(as.character(idsA), as.character(idsB))) } - .matchVariantsHarmonized(dfA, dfB, removeIndels, removeStrandAmbiguous) + if (!allowFlip) { + return(.matchVariantTablesExact(tabA, tabB, maxDistance)) + } + .matchVariantTables( + tabA, + tabB, + maxDistance, + removeStrandAmbiguous, + removeIndels + ) +} + +# Pairs with exactly the same alleles in the same order (sign +1): the first +# reference variant for each target, within `maxDistance`. +# @noRd +.matchVariantTablesExact <- function(a, b, maxDistance = 0L) { + pairs <- .variantPairs(a, b, maxDistance) + q <- pairs$query + sbj <- pairs$subject + same <- which(a$A2[q] == b$A2[sbj] & a$A1[q] == b$A1[sbj]) + first <- same[!duplicated(q[same])] + list( + idxA = q[first], + idxB = sbj[first], + sign = rep(1, length(first)) + ) } # The empty match result. @@ -1186,53 +1427,188 @@ matchVariants <- function( # TRUE when either parsed side lacks usable chrom/pos (rsID / unparseable ids). # @noRd .matchVariantsUnparseable <- function(dfA, dfB) { - nrow(dfA) == 0L || - nrow(dfB) == 0L || + length(dfA$pos) == 0L || + length(dfB$pos) == 0L || anyNA(dfA$chrom) || anyNA(dfA$pos) || anyNA(dfB$chrom) || anyNA(dfB$pos) } -# Allele-aware match via harmonizeAlleles, reading the matched pairs + swap sign -# back out of the injected sentinel columns. +# The variant table (.variantTable()) of variant ids, read as parseVariantId() +# reads them (NA fields for an id that does not parse). A canonical id +# ("chr1:100:A:G") is split on its separator, at a fraction of the cost of the +# regex every other spelling takes: a genome-wide panel holds millions. # @noRd -.matchVariantsHarmonized <- function( - dfA, - dfB, - removeIndels, - removeStrandAmbiguous -) { - # Inject sentinel index/sign columns so the matched pairs and the swap sign - # can be read straight back out of harmonizeAlleles without re-deriving - # them. - tagA <- mutate(dfA, .mvTidx = seq_len(nrow(dfA)), .mvSign = 1) - tagB <- mutate(dfB, .mvRidx = seq_len(nrow(dfB))) - res <- suppressWarnings(harmonizeAlleles( - targetData = tagA, - refVariants = tagB, - colToFlip = ".mvSign", - matchMinProp = 0, - removeDups = TRUE, - flipStrand = FALSE, - removeIndels = removeIndels, - removeStrandAmbiguous = removeStrandAmbiguous, - removeUnmatched = TRUE - )) - h <- res$harmonizedData - if (is.null(h) || nrow(h) == 0L) { - return(.matchVariantsEmpty()) +#' @importFrom stringi stri_split_fixed +.idsVariantTable <- function(ids) { + ids <- as.character(ids) + canon <- str_detect(ids, .CANONICAL_VARIANT_ID) + canon[is.na(canon)] <- FALSE + if (all(canon)) { + return(.canonicalVariantTable(ids)) + } + out <- list( + chrom = rep(NA_character_, length(ids)), + pos = rep(NA_integer_, length(ids)), + A2 = rep(NA_character_, length(ids)), + A1 = rep(NA_character_, length(ids)) + ) + if (any(canon)) { + fields <- .canonicalVariantTable(ids[canon]) + for (nm in names(out)) { + out[[nm]][canon] <- fields[[nm]] + } + } + p <- parseVariantId(ids[!canon]) + out$chrom[!canon] <- as.character(p$chrom) + out$pos[!canon] <- as.integer(p$pos) + out$A2[!canon] <- as.character(p$A2) + out$A1[!canon] <- as.character(p$A1) + .unparsedAsSpelled(out, ids) +} + +# A variant table's rows whose id did not parse (an rsID), each made a variant +# of its own: on a chromosome named after the id, at position 1, with the id +# as its A2 and no A1. Such a variant pairs only with the same spelling, and +# matches it exactly, so an id without coordinates is matched by its spelling +# while the rest are matched by their variants. +# @noRd +.unparsedAsSpelled <- function(tab, ids) { + bad <- which(is.na(tab$chrom) | is.na(tab$pos)) + if (length(bad) == 0L) { + return(tab) } - # One row per A id, sign-conflicting ids already dropped: harmonizeAlleles - # resolves that (see .harmonizeResolveTargets), so there is nothing to - # decide a second time here. + spelled <- !is.na(ids[bad]) + bad <- bad[spelled] + tab$chrom[bad] <- str_c(.UNPARSED_CHROM, ids[bad]) + tab$pos[bad] <- 1L + tab$A2[bad] <- ids[bad] + tab$A1[bad] <- "" + tab +} + +# The chromosome-name prefix of the variants .unparsedAsSpelled() makes. +.UNPARSED_CHROM <- "" + +# The ids of a variant table's variants: rendered from their fields, or the +# spelling of an id that did not parse (.unparsedAsSpelled()). +# @noRd +.variantTableIds <- function(tab) { + ids <- formatVariantId(tab$chrom, tab$pos, tab$A2, tab$A1) + spelled <- which(str_starts(tab$chrom, fixed(.UNPARSED_CHROM))) + replace(ids, spelled, tab$A2[spelled]) +} + +# The number of variants in a variant table. +# @noRd +.variantTableSize <- function(tab) { + length(tab$pos) +} + +# A variant table as a data.frame keyed by every field, for hashing variants +# (vctrs) without rendering ids. +# @noRd +.variantKeyFrame <- function(tab) { + data.frame(chrom = tab$chrom, pos = tab$pos, A2 = tab$A2, A1 = tab$A1) +} + +# Variant tables joined, in order. +# @noRd +.bindVariantTables <- function(tables) { + fields <- c("chrom", "pos", "A2", "A1") + set_names( + map(fields, function(f) unlist(map(tables, f), use.names = FALSE)), + fields + ) +} + +# The fields of canonical ids, split on ":". +# @noRd +.canonicalVariantTable <- function(ids) { + m <- stri_split_fixed(ids, ":", n = 4L, simplify = TRUE) list( - idxA = as.integer(h$.mvTidx), - idxB = as.integer(h$.mvRidx), - sign = as.numeric(h$.mvSign) + chrom = m[, 1L], + pos = as.integer(m[, 2L]), + A2 = m[, 3L], + A1 = m[, 4L] ) } +# A variant table subset to rows `i`. +# @noRd +.variantTableRows <- function(tab, i) { + map(tab, function(col) col[i]) +} + +# A panel's variant table, computed on first use: parsing a genome-wide +# panel's ids costs seconds, and when every id matched against it is spelled +# as a panel id, none is needed. +# @noRd +.lazyVariantTable <- function(panel) { + tab <- NULL + function() { + if (is.null(tab)) { + tab <<- .idsVariantTable(panel) + } + tab + } +} + +# Match variant tables `query` to a `panel`: each query variant's index in the +# panel, or NA. A variant with exactly a panel variant's alleles takes that +# one; the rest are matched allele-aware by the matching engine +# (.matchVariantTables(): ref/alt swap, strand), once per distinct variant. +# Strand-ambiguous pairs are matched, since the callers carry orientation-free +# values such as PIPs. +# @noRd +#' @importFrom vctrs vec_match vec_group_id +.alignTablesToPanel <- function(query, panel) { + qf <- .variantKeyFrame(query) + idx <- vec_match(qf, .variantKeyFrame(panel)) + unmatched <- which(is.na(idx) & !is.na(query$pos)) + if (length(unmatched) == 0L) { + return(idx) + } + group <- vec_group_id(qf[unmatched, , drop = FALSE]) + first <- unmatched[match(seq_len(attr(group, "n")), group)] + m <- .matchVariantTables( + .variantTableRows(query, first), + panel, + removeStrandAmbiguous = FALSE + ) + hit <- rep(NA_integer_, length(first)) + hit[m$idxA] <- m$idxB + idx[unmatched] <- hit[as.vector(group)] + idx +} + +# Match variant ids to a panel of variant ids: each id's index in `panel`, or +# NA. An id spelled exactly as a panel id takes that one; the rest that parse +# are matched by their variants (.alignTablesToPanel()), and an id that does +# not parse (an rsID) only by its spelling. `panelTable` supplies the panel's +# variant table (see .lazyVariantTable()). +# @noRd +.alignIdsToPanel <- function( + ids, + panel, + panelTable = .lazyVariantTable(panel) +) { + idx <- match(ids, panel) + unmatched <- which(is.na(idx)) + if (length(unmatched) == 0L) { + return(idx) + } + rest <- .idsVariantTable(ids[unmatched]) + parsed <- which(!is.na(rest$chrom) & !is.na(rest$pos)) + if (length(parsed) == 0L) { + return(idx) + } + at <- .alignTablesToPanel(.variantTableRows(rest, parsed), panelTable()) + idx[unmatched[parsed]] <- at + idx +} + #' Classify variant type from allele strings #' #' Determines whether each variant is a SNP, insertion, deletion, or diff --git a/Rplots.pdf b/Rplots.pdf deleted file mode 100644 index c11f7f2a5227ed212d2754209fcc1cef516f81a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235381 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
}gpWxTfV|9s_qBWPqnGtBzj3?)Qq=+x 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%0DBb)9Zmg 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 diff --git a/data/gwasFineMappingExample.rda b/data/gwasFineMappingExample.rda index 5c7db01a09c1ed9e7962d4347cc32e139d95195e..cc1de8a1f971dc096bae32412b5da284a8fb92b7 100644 GIT binary patch delta 200946 zcmV(jK=!||+$X%-C$J�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 delta 201062 zcmV(#K;*x?+b6KxC$J�spfi@HsbsstU-r*WlG8&7)x%X)|vTeOHpWtX@aqk9M8K z^Z@X5fvO`Y5W9oE@rg@-UBI;7bz7&vH)vMjJEW9@Rq}y?{p^g)g;Iv-B5Q)r@)=b5J&_0+ylaB{N$6D?ycGn&5!zXp6ae`P^J0Qs6#+j#Jw7CVI{IEK0nPB4 zK6ZH|;k`0Qp9|~{LY0TD%E^Op(aWyDVpZdR{*QaY*~I_a2yba${fPzBz4<` z(d29?b*WdZ9ln}}vfPcX2bVogvtIusM$LpnLuv=pZC+t}3-TK~$-iOIzp# ziHh#t`yc{(6f&QQS9hR^iAd>%mu`fbID4j;tfv+c`wP3+o1A%@XMxP~sI?pnU+wQY zXc*sXH=KI;W@jk6#ymx&5z(fl3Ie=!^xpO`fNEW?tOrJa|4mE&25tGPCnG##9!6%Z zv{_F&J9JvD@Ak=#W$*zx!niE?-YZ(h)3B4QgiwY%FF6W~Ba3Rvk@l!Y{ft8E2{E`K za2K>|T{QY=ucw8X{xL6OJxxT!Ez+BA{Aks68e8*#s3~rR^d7Pp&2a6eF8jKAMg-*6 z|Ctpet?%%EF&1ug(Uf&=d4iX*`kb2X*5&f>lYuy9Wn2B`)`0mLI554xU3q((f!c{y zZWE7)T8x?`%%zF3it^gpV?7|HR+g(oU8LwKf5 zwU1nJJyLZ#3Ct^kkIblGUz%$Rzwbcn zRLD|yT$uZzfV~PLai%zYwM^I1ZO^lZ!%h7HXmu-b23+ja_Bm7^M-1yIt-D{uycQJn z@-xSO-YOhMsw&a~utjRu@@Cbi$EDR4ydjOL^NK$CGUEX>kM$RbCpS>L{~pdIMU9c2 z@v5VgTH~z7=^%)sS~fvB6-NIBEf_P^L+b}dS3a_mhHxW z+4w~HRKf02KdmqJzWG@J>4@fH!Ln70jK}JHKpb&E6sX;R_pP|D-IpZR0?Arl-(skHix0Aj6EwY-k?+j^7@4=tEQ(Tq9wnk{f3%RzF7e+DfSLNOs?yY+D{qI%?Pyk>c~`*pf;* z-(Cfh9PhuIR6Au8{hFR{sLlvrphF}UdtAWhS}#%r`WP_cV>;?+7%?^OmQP1Zy!nnJu`*#j+Gd?_EADCGg+rrr3YPtpAxS1^n%Y!&Oa zR%RKrC@MC}5K2W|l-yWxof(yACpTS zb73EzlqJ)-CZgWqz!TTRAl7-~`D7f6=jWjdUB}|zVeL($-OPNs^&y+w=hMIB*`)!5 z270;QU{F2>yZ#lRnD5nH-|Jls0hyr1X}l|-OFHbqI4T_El(lw(>1S+zwfgEIr~Byy zMZ~n*CC!-qRAdzCJK|gAE7dh5`x?S2l!cvvRr6U~e#L}wBD!L)y-ud8gREW zc@-u2N6EU-sT(G=l)H-P@m!1AJ;jvK5;v$VlR6T+G_$Z+f1~s=HhQo+R-fBi?Yh8!hTt{H zUcjH=&jul%pl`ISIk~pg1O_ihj%tuS(9^Rj5iNt@&9q)T5eakGZ=8`wB=yew_c2PFyNwL5c{56dIjCRH{bz&aDqSkMxm%M@;&2ttJx;?GVCf z`#UXxWeP5@iC#p1lm)sRTcA0$pqN7YS1GLK?%O4B64_>6z&vaislgQL4-P!HXUKc? ziyp}+rk7$xJCGfazYF?>NzrCwBBv4T7LoJjHf)hv$9I|`5P-?2+nZkPocS|WY^!F5 zcr_=Wk|BRDS@_V6=yGb#2xdN3FDF-;Z2T#pm4Npjh0HsDs;RI=?h5VG&Pes}ZqbDR z_RZ&vSE#=t@pn6~{?Ggf7-jM?!NMg~+C9sR4rO(15Jlnh#IMBBe%tXxsXJH@fg>p4p<{?bf!K~Y9mu6XNMzI`dhu! z*cPznQgKFz#tiP&;2`c`gz&tTX+;`;=^iHu<)9FM{E>0ir;iGoo6n@bIOTa2wbE&E9djt^IWOzSLfg}p^u z;}l+h(W#A;qw)*T1LAUbit9;~FIjPm;2WKL$7K^*0cHWAVwv4(ro&xQ5+1mfa*urX zUo6q1F5+v%4Pd(YbkDRG^8HcK)(evMEa-gIav8b+csto=!{@WfHxWa)0J_}~GFz{0JTp-RF@55S-R0?L33g zyC&)8-hBaK#N^=bk?64tDa5z4#`C`2!y3_h=QKJ>x-^!_kB*Lj8JA*)k)PVnoVz3= z)kWDXGTxhRCu;*iOCH`}0%7K2jh||2Z{1SkPzSJ+AeHxm5>u>?WtU^Y32_$HB-m1clRK=uDtBI9J9YHWeGblDC>l=sUMv+h+P=DP(!+>MEU8iqfjj(%|D%O-0 zGEmugjg2pb8$5na6p(6hWZU=vih9tSwe=fCOhZycvejnbof(TdU73#~BPZH_$1p+T z2S(#lBiz%v{nxMzZouyiekq}y(3v{crRK}C1pW=m*R3JRApg30>^emJzgN)A;h{c@ z&zAmhYN0KUEx)kDb6mD*-S%3JwwsF)jvC=S)_Eeogxplt1h~2#WFskrR<2+(A$`et z>;{aq{ZnsZ-aDPvBhtM`OX%x=mtd?#M&_d`=Qw#$v%x0aX$g2Em;v6iBh5;N$x*&I zH*?T2k0rJ9`f;S31BCF4rJQ{2?amy2K?8|avxvX~P`j_Be;7CGCC0O4OwzS!A<3dV zevNDG9Pbu4h=6ok{A}p}5#3twb|8|mG6H)^dp0&lZ#R}d=M4d$6AfQ~f{!Jc>6!yo z+On)@S8kLfc@Sw@Ga#3bY=`=sJZ`~5gOt<^BVB^?$8P8gr^n$uAjiBAwTYoX#C~cz zK|a4^aCec$8;TtEt#g2IV=l^^Kk1W6Ig9!^9TeNy_q%n3-#j+Wp&}k(T@v|D^+5}|iWGBy^diZFvggJks~gw$0Cgij-O@Mncgf-#HG5@TKqZ~Rq6rz- z@hL8GO`pP9n|}aLD7qi16L5$jwOV_y$HnaTAHofTbk%Q&b4kG*%>u zYNwOP(TP0713);{>mKXGzZevzRnCudIy=564tG#*8`(Uwh)T_W)Px6BhmV?QN4noa zSHuvDy6=$*seciBwMF^O@#@ry!T`P4JXs-U;D|mAZ(eNszSoaHTe=VR#fw^hit^4N z8*_7LsyH`Ci!{O&sL)h)?WHb46Cb?sCs_obfdh}iiq9~)(Q^zmuNBq0 zy%^?IbG}CzBiYG+$VxdcMrR?_c=jIqsvOUu<`aP#Nv|lc+quy8!fyTMn8veN9=Ks_ApdaixxnVkRnl5 zltD7mzZM2vgw%W=&qAw{)Ak9Ok*zSeO6$R#?zM$q+DO2E@=IX7Vh!am35Hx7fidW& z9gj(-qgk6=;|HHmQ0D4OjPE=N^Wg@$C~;R+BSWf(&x|BNJ|U$+D-m0V&W_tCV=1A- zBNh8!^xi>ZJLTVTnxd25Ppho_qMKG*r^=Tk>!DVc@X+WPUIlpO_vByQ`Cn$U1>325 zdQ|Mz0t3;1kihJgBDz*fiN2A}%pG8vo5_$WGX{?ZjNyB8(@E73qY~{Ww`oOMtDwUJ zjQ=CGVQFL+6clBXGQSb|m+4rdORxUty_%xyb1~M2iRP-wnzUNl8?9*fKi9?Ezrd}H zJNzWf38-AUrc=ho;!+kb5?!=P_sCDsR^81=y1cG`vjh6XjiDES@}#bzdqT$S@sun0 zD0&Mb&$jY8H&1U{}%ygj?r-eaxF?UL<{%%r~)}c*mvfcsOD=9VD4fHww>|LbPRn zkuOXQ5>;-Hf>fdIVX2CaKVSbA;{EIA{Cj<Y z?e<+UPl(B*=pBpv0FZH+x@48etBi_&2{MA?P8^9S?pq;b%?+YJ*{3*O<}S&jre8&g zWZ4~v&BdbB5b)~9Px)ndq0EvW|5h6HL!rR$X2t3?9NrAqw|CN}aG8e?Se5s?WloV% z0&Gq-3K6YNr|u5s#doP9+7ck#;>v}<%V3I;8$G$DODfX2EZd1G%4mj~DgEAmZ963q zV~C8lyw*)!h5NZgB?E-QWT&FKfvaiGB|)@uwMz1>tZ!WoED*GQ)2jvxM-*%fb?~N4 z&u0L(ohx|b@9=o)XZ4YQ zv)S(nB}MpQBV_%`?+>^49%NChHph&$#i*&1jgxS?`tKbCzkByuyjh~G`veC^WPma> z74`_LDOa+TqA@uwhNsxSs%J$Fqx>tZI(_W;`C+a0jXA+P>m{v&-aM0n|vc z%KLdaR;rcmuEk&Pb{Az9ak_HVijDX8JQ&)8c0T;t(iy;kidpWj9)#7g zz%6=FzFI2u>AvTwUBdN&0gjw0>#Xlg1}(=iD8GQaSP{A(nx`tRgiw5E;vLKRr1~%i z$J##%-6%>7nxS)V|5F%$>v!51N#ct8meR_VywH0Fg%I9Kva3KvPMIz|k?18yRMdF?podoJH&X2HSI$6Q6$1CiB&r~;mnUXE^gmKfnD5~Wu zezxqsS7h9PTz`v^<+OS8Way2|qD}FHHa##Ej4hW6*1dZ3rIXh@<-`Kap_tJ39J?~z zOtq&IM1}()i7`SATTzh3Z6yDDT+J~7z{~`-hRa>drBm39dIqhqdcFs9|F#V}Xnuq6^)Nu#-W3Pl+yltU{Ky{?}wc9gLRB*70l@4w2#=vKJIv|0VBQ5zp zWEcRvT~p0is>?~UD{m1|@6}VToNic5^qjH}Tww$1#M1t~Uev?>g!nE+Rp6)NYQfH~ zEJrax^z4^7G)WW#8E!f*E4hZBv!ePWdH;CYVs$cqXu})vNj_yOS3|k{E)+V=wQ4S= z1}n1)La%y>Zd`WQ^hr_CdrmYBQvPc4^HRO8-y@wrffh6CiUG80u zFZ8v46u$r_2WL+4!O?b%Ghwmrv+3{a3EyUs<1?ABs7RcJIjl*@3{gRxc4gR%a^h0A zthDF7`2TA=?y+)0QuE9$6<7_q%@I%sv(Ev-uBzy({2>##v)%K>ad+^BlEY(lOdF52CH84 zb)6=}wF3m>#xTsVclMgC*jdHv)0J!?|FXXX5BP{5&0(;;{Jy;MWeB{z(|_VDnOnV( zu@Rw}&J?P;(d##ZHw6WB%F3f&zWmi&%b<)M!e5IFxG`=mDPFnS8f~cJQ9XcdR?gU|@x^Yo$(8X=j5L|; zCA8k8z=FjskyHMTu3wuuc$g75;D&NFzcNKxHGZt+g_P1(-g%s78rg+~^o~22AP2X_ z24_(cO|NG`CW>e^V>Kv6lOzNZY*eIw^;QF=884klVA(J*qR?aDy7nBx9ChCk$<(Kr z3E$&*$>al#pd$EW(|!QpiwB*pgSFAV?ZpW^AJP0iQD@kr+YgLpzkZ!x#rsnMTcnl1 zZDSe|VOG|i`7Ylql-JexX6*LMne4;DYqpO2_P$Zd0dz~08doJ8vqI1u65nlqSC{co z0fdvGj87Z0>WXbogb}i0ufFB?^_V626y~mkcq8U;PEkirX&b zk!co-$yItHVL-7ujy}6r?!HKWuRe`x(ym5Kf|9eU(fNIcD&wouqc4&%>2QBO1w`~8 z1F_j(gg!<&E>I0MRO_h~m#HwK|1jF9oOFEVoB7HA`NzzEX^Tgr+Cea!wmH zv)SSC7DI}1K%jp)J3Q!U@!}u$5c5xby`Q`8B-=E;SC80leQ)#75>5 zf_!(XUw3=Pa&mhvJd_UO@k^ZP8cgANx3ebr$6xK~hd92j4puk4>{E&0041dp&lZNOo8%nig=K$d7J! zGsLk989mB>WkqD^)A6l)_aG0P68=xnkW)~r_;`)O1sv=2ef}Lh-BC5 zbXYF^6T(g;D>IJWaIGrzX-t^wFwZsFs~cmwE&h=HOv|!nVuA>WsJs>U8-BK6^y!4V zpP*L^Ziflf;;vv%3)OH?3kN?0+CCHLgk+!q(GbeDy&d~dAqQCE(faw>dv_%7m8m+} z*?|-}l()=(=rY6{V#yfl zTyATLJ6wVCx7{DT!~iE@Bj=V2wJsCKguQ;h70=!R15~YEu9eVH1?VypNQR%G&VEpa zR*BD1PdbNq&&%`mQn-!`k85cT^#7`ww*shxV#^YL78l{vT*G&+@ZAZrRBH9bM!j;_ z*LXKM{s|rU%CT|ZIhUcfJ5%MY>5`yW7Yjfwi^vsJc)lZiLxF$TLf6_XW9O_1uv(2F zXv|YPCI&Iy9aX(WmQu2Iht>joV(-43PDUh5*;~^&^_UsYEXIDv^nIKm!8kTS-l1sI zs2vG^A=XEvPr@%69Bkbs1*HdOzB1ANjY93N4gm|X1jqS2m;9s^^2XbbU@#B)7X+WP z?gv|Joio_H?_9pq3tKZf&vTX2zvFi!YI7m+b(6|*!eZ%0`q#mJb4$5N_5W_Mgx?8i zY%D6f(V9RneTC*R6+wvuw=I?BOUPp4tyKko4$2D^eUX3IHEza@4r9tFUb5&$`Meu< zd#L|D2oh%tG+X>UP26$`cY8(nBqk2FKZ(o2yMGamqamY9kV-ZU^>M&b`lXKo*VWU? zE`k<_PM1tFceBlpsqzjzzR_|1&uZ^AGX3Oza+=&B5gSi}$DgQT?NQz*V1{K)qA0R| z(-mMt_3ZC#H?-mBnBs}NzZUp3Wy*yB<(}}dwqTykh!?;QJ6~A(Te`?fBk(`dV{D-54uF3&ey{I;hzz7K zqc2qQ#Igz-RgdOOT9Ub32GeTy7*h{sM3A>wv4X6}DpT6W78 z_-*-jPUtu=*~k_Pr==C-1Y!wy7a?Q0njCkidLnIoY`aQOoguIeaVmSlS%4Nwz*ns%?n?g(i#$c z2`2fIPM-Llv95z?R_(W=?+X4H=+B|!i;h5M#X>o{K+kR?&<<}gMAIVU%~b&cS}rB9)hR2iYz;V7!$RTH-{~a_4*6Y1 zAi-f*;svAp7Vz zE5AE3LSQS+Tx7BBfA(Oqr=y}R%U;gYH5q71m1&!s z*W;yp*g^ywsx%D^)d;ej4TTf#K7*#^bAPjZDyf$V+V^b&TVpRgpu9V9-KT+A3l>cE zfYQCe{xCJW`yfnz_|Fm#YGGJ({clOod|ZNl6aUvmluPGu>suNH<*eytJgqV++9c9u z&Df-0;p7n2x`m8oKEKXS4H|!lwuX+qViEctpAMujScaRG3g~ZQ49C09{S6w^z&a!r z;Y_DP`w;W&MScs^yMyIp;D5QfqKh5YT-|5WZ=!8TZSEC+DGid-ARAXiAr zPO_LqnlxeQF&l3CDuD|~T((BjyG5cGua#d8gLRNM$4;}7DNBToI6jPMV0G5HPjZ4R zq%%~m-Ki%wIf1J3MX-@19nu2drA-9V=&IW#L`RSrwHJcP#saMGV$b<+aD_ag>BVw? zL7-FWjG2Fb0Ncr4J6n)&i3e(vMOFGF)>&*K!jV0dQUL3HRUlKoH&akuj0xYq3oG8~ zY*CNnZ!*?@x;7}6C21aRaQX;7Tz9)zM<_f$IX$U){U-Aykt9MSssImEVKPym#)><> z0fUnqEjhhd)}Z8TmH+s5ZpCgCi@dPcke-%Ui`Gbgjmqy~M_=S`rVsdOdf&hu{eSb+ z&gwT+Jtn#TmqWCoKP`8L>=DPNZ%rbC3loq+A3LGh)`Q3RDVS_?ur_#UegMpVjVE-o z4Kol?@R$pYXHP<%ay#i+^n64MhN_f4&cj>ylTe!j#y%q*=xITu)A@{nwJvrgGjvDw z+aLjdWs zLS^2R0RWU+eD2}p$nswR4c3%vZ&TbC0KwXSsCoNIK#eyTiR;|#;}|M5x^a4_4nBn) z1(^b7pP91{7sZ6$dI<}fP8PMi5wD|c zA?B$jc7le=-7-~Y-WcY6g42N-dA40O3+UGdCp*?A^bFv61~F$RC6SK-^QQ3j_8s;X zUt60Rjc%6;*07>tSX-A~66~tn=)M{j-|LZL0ZRc);~1ea%K4}1<#qi6qyue#!1T`n zgAtkoL-3e~)ChX=#fuukS=E4~W)GxeMMjDncu=|m&mKEr9H$aR)uFfIe68FR9|R_d z!?fsb=Au3W_wEnv9hNdo=hrG3m|(7=6MFQPq?c1Sg+RgU#EKMSLuP8Z*hV9xnO(?o zyTSKvTIzd}MGD{0A5ww|FT${YUOhP$<0kd{tQ$-aP4a7DAROK~jrzpqzKcL$;Om#4 zO)a(J+}JkomiqGs)ao35T`$n4dae%EZ_ARE4WI>(Qeq0(Tnl6#x%szulx){UXI>M! z@32&b-Is#puDa#zHoBCdkzw#;DD-~vPET|yqkll>b%Tu|TJQFQ)a$~3oCMT!t;ryql1%s4ak~mBUYtZgPfsq> z=dh!M56Go*jiHh%*ejG7@@Hhrok9dogTZHDr&n|qN6s38weiR3g& zUd438JHbaM1>iF3kjS7zqHu&)Inu-MLmO_VL5C!>0MV0;qcUQYH~-Mr@5fyHnNB)? zDY@^ynGO(bT4ld0kQz^u>^-v(1g=#>KF+PoikEzqBB*8jUl$yIFoP^S`Pn-?eaV{> z8VZi*uGiqb=#(f;aeu){b_#_KLCi&GL!q^7Z8I~->n=NM=#i5#&m_M_dFc#jm8)kZ z!-iI?Xa_g`bp8s-f)GYw{pYApzYCI$?D=}SHIdGsRfreeVG9ipX~Q=>6G#8T&NxQ1 zBoD9#R0{1|8=KmHIXXiWGotjMD(j1@)qot+gbGzR6(P<_bmR=b+3Pg)6Ea(%Umub3vGevtqFeCJ=;z5zb@pDKX$(&n9Ui zJiANxlgm&sDcacnV-$jmNk?Rvdm5eE%)z<(y3ab%_L7c&7vmbr|E<{Hk=zk#uiN&Y zZ&3&$#uTG$qB!!|P?-&#|F&UfsidGJK+DQY13M1VRHo+D{e72w$Dt!MME;z>+53hf>u`qLRykVv5ARJKAA4R1-D+e*?Lak{a_jm~ApNvRrOH!1p7b^6)|?bBe%$uRmuqDt~BJ%V^x zCU1a+=dK8VQ=R84{zL-3j1v`z2q zPbKxy#a7?I2XVE<(X%L?19UTl}L?K|G{)j%Df;BIU z!fx?#__P_Wuq#i7k|ymd30p^DJG9eL=tx29U#pyaj}0SH)e;20>a#b8;SN%-6p3Ne zs&rj8dW30jo)Mb9RNszLiUL(dCpM;kPO(gDK&gcah>|-ks-Gc2mx_d5to*FwI;60;B!gD_kiHmlQdosIpxKfB?O;zPkKi8bM$aIo-TJW1D6 zZAS7`l0QgFQNE7lUTtQm`(^f{GLN5N!Gh~f4&gz^r_L8NY#mlgzyGV+Q|zvPL1)zd zVu;N}z|1bIhdUR57n{MI4GD|dvR5N><_ZSZT0rc!@0$N@WVfkRviwm8PBKueHYV?N;maO zee3?(602emevUS9QYf#?hJOH{b@rCSCJhq7q`cq4!i#Ro_PI}dXjvI)zv7rOwZtmqg z*VBvKEoWj|Dr9Y|7Hc&X(D<+(7umRHX?RC_bAhjRHkq&&FImkaYsT9g*lpUbfhc<( zxn&z~_Vw*Fgh0_z_~@tedC)t(%I>rm3c}EAeo6!@S6DG$vWmCN z`INS;Rtk@89!$fw;IsUVsmN1FLN*r2@vGxdo`@&ql(gb=pv+zWox?yAEstcvE$!+V zGkHYe4l}@E;mPupKz}p0&Fi~CnBBGio|M?iGtp=6(DB%~)(%d8)8Ks;Y$v|#(4rZj z(sOQa$NZVA*R5l{xpiP?Ya94l1z&=J9Wz7lfa&34w0UfG<`?WR98QuYb*y-xo$ys| z{dpit0%Z8YEd@VHmy7gt13T&HK%g-q6B?ClHki`(F8L(g!^6H#H7kVZ^r(v;5y*h! zNyFj*qJ@UbNK!a|P4S6+l*eljjg0Zr(y=4>uwwq->dQ^<8|Y8$He^F&KTlIuPK8X+ z$vH@yrooA23FBR8LPl^E_*^v(J1UWq&xoCL@L?<0wQc+v@{_V4Sf39l85Mm(I$3cyM)FpV-i7JNWmi;zM2p&L_ zW!Hp;Q#;T&OH@d=ltbA1o&3VRTJND*37G>WF{pQLYqXaZ3bNT)_e zCINf(EK)9ioM_*-xRS=^BztVXj2Sb3X;PC82G3$j&!W+Bf5yTHq;s((504?X(O19c z6%ZD>I^7;>v~`K`vu&}jkacdPklR?Z+nh)A9$$j4;15C`@Mw^p0} zl?o_i;Z!PNHXKuh(Nht|M@nyA}Ct`;dKlpRkH*&_p_JGe$HoM$fs-YXcT{s%@Px3sp@TL;MYA0&Z}i8 zWOk;fe4by(mGGF(Pv_gIWx}0P%_Y|I;DX;-BuXKWfc;F4T2lPDei?pj@UiR4r>IB$W<-+n3WP)M`}IUyh6Fl1Eu@O!g?rKoXkw zb_84E+!%vHr)5ygLbB`gXPcC$8Ou;&Ng+_hgWG>WfzhW|v`XS4Ffp(9ut<(}GN_6o zs=o6pTbv2<7Tn+RZEp2RGa?WOn+j#g=}}dAXHfu7EKHHC!!JBc&-Vq!>!Kren!G!I z-NR-J?%D1YvKC+#XqipdW6*x{FMWBr!2mte|DB6B_SyN)PS}}-;wwJFq{3t8Z9EhA z4U1`G??)+6xzZr9g{+3Fjv2M4Ee~+Mgr_!vRk|bF(6(f(eaxI{u)g0V;+%_7V|_ObuK66?~#=<9@m|nSmiwt@Pt}XZ<7zE@@{uLRnv*Yd9l|oYBd?jxE{&% ztT!|Z2Yq{kGSdMIIA}X%dd-5X`OqKPbwZs>h2kL^HzxGZ!Mc8igx*u^s*<@8Smn)Jcb?}Y-j06x+ z968Wp!oyGEu`h9m?8Hpf(>4lRJT2)SNzK>Zw<))~0_uk|T)+Zb_2s00%*YChlm_?j zQsN#P4FJ+0w<66sGT(jnAJfB|?JJGvh|U?+HxuXE1IeEggZv5zfa5kJXzq@~wPlgv zp`5MOYD?~`b+}+(TK@uZpz^xF{UTMlAz79QG`+CMrvck~Y z(9gH48eFw(JY+|#C&<}%zgSa6vrLtE3zR6H1 zY}SdP9DQk=PG$RHis6P-ik~-oEn10pRU2DWqhF@e?d@dWlA}|ziALB3r&q3yDeyvF zanpeMBP@3CIdvm{=MLgCdKUz~vvT99U`7tD?^_Db_z0cp?M@Wa(0>%T2`I*TsaD+6 zQvd6v;(I!{2g)$*cOl%<9HadTeB}Y@0-h8J%~v^OY5?_noCF!f>I1gHn(QwZzKgw$YvP$1GL%`9cIuR~=Qi>*y@ z3x+&CMJO9^O&K!0H~|}4IBQPdidYvDKu#Be)ip>ixLZ)ot9Nh!=@;li3KQH2eir9v zysmH!mi9lMGJi@kT`bB>1;S3t+x7=7!zev!{g$n(S=nHc`Cr$CpV{kk)6HPc{4>(?KlOR#P-P-=y5nunwZKyRo; zny5$47h2kyV%elVE7JAtYgFeKSJI{ZbJiT6FVu)d{JHdu6AgPS(oH;LaG_;g>kGx; z8zCQm5^|w9ebag%ulqOzk05LQ<_5Mu<25hFLK`L+G$lsD(jgJ>hz@sn^ief#D)Ws}D6si8*p zJ#Ki4o5701K~)M!HXyb2oaBlELTd>^xsiZ>bSjP%37rshIxS(`Zk-0I4txEjw%d42 zkq%!|l`%KhjYJs*@zlgA=FE+BAFAB24;yx5!h_lk*(7i|j2F=8`UVu9?bJ96peVpy?irMNE?cYnXzQI&4b(2^d15d(78 ztaZ|$2<^W&xOj0Qo&WF{=cP9s{7n9`rT{JGe_EDj+r~ChbD^}b%Xqc|H-KooEDEqM zlIt4pm%>Vf)7~j|{~jnRpXwgJzX8qzYOCDHC_tU$t38+*qJ{_D1Uci72s?@Gk|3VM zWYxz;IuW164&R2UtSfeOJbp0upYINQrsF$zs z$qf;U<*;D@!$~h5AwJzL9J$ggcYP7Z&8KcnCa_A=5uTb;*ZOP=;9n7c{r5wcKZ3{v zg|%knS~0Szs__ljg~!Wz&$JKc$>h4{U-O@%7jKVArfpBBPVchKw5ZeUB~T4Fcd}I# z5L}D50iy0dYhX2pIvKV#FVUZO^brM$@0+aC3oK=?Y}B5^<`10fGMk5U{`9|7WJ`Jw z;Ib1qbZ*7f0Ljh%WnKw?+d5fZ`=SNC#HG;k9l~#ah}nASK#Z_D`5-g1DdAV`meLVq zOw38zY!x$8I`WEK3>sCL+2AyQdK}qZ4HOk2iI6g0b7Q~*$HIit*SSXzR zy50vcqry5iJ0?AuR+|n%si}+H0s_e2S*aa3J6yUU*I8!1p;!xhh?eiIRNLQ0&qnVl*#q&c zU&D;0`5&_-7AhluEd#+ud7>FAFhT`Vrm4X{5A}cG^}!zASz{%s=Mgeya{EqdeG4$Y zk-ONPifB>u2oLEm0+NveG6p4pc1!I#iTl`~*sJ1usnwSzP&}HAOb*iohQsmW zZaaCE;O20(g*XMHI=?3D+pYUNe=yPQ>g^^XFNl*^QV!@YObP*WUj$&ENKR@x zHE4W)JDC|@LrtVLI&1oRCaTuC$j@Ll+mO`BygzviA^uQw1+1jCx0N34+Ae zvmM>z!SVybZmghEAxtH-D(PdYE#=Idf2&$r^IaGGQEm;JD5GT z!p>}ppB3JD{!I{iU^{W-903|cpn5+u3p9GDj^jSbB_QB~m7w=Qu+lMqTL4d-!8#jg zXSF^!S{MY*2{I$SGGsGunu{7D3~Vvu;8Y(oUtHqRQ$B=@rf zhW$BzFHabov6lPinQ~&YePMYXfz{hg8bY8jLc~|!2%Pc(``UyEEu|9+`^{2ghN%*h zce|)*cH|tW$pMV`53{@x0LWzNOQ%ZQ9WD#YKw(`DXJdf=zsMCr<2*!Esc`~St0f$; zg)j%`tq3LwXgs(Z9i;y#fpT7{Mn zGxdx)A_bqY8^6YVoFJjVr?zKiAY8_(uxF;%>U_EP6x7BML=hrua1D5=lQk22tI$Jgx=he>uy&r}A$*>9UOEfO6ae@52JbzMja)fmCcyZID!ZvB zDof82W%rouRWz11O#!$`k#{bTB9`YVTe6W&67?M_W^hq}@i~n&z(P9mH5gM|tIjv7 zT8X0Z)Z(IrZ(jm;#2yqpxrqtVuUh~uK@oNOe{`AcWcPP4;dz%!1kdT%!q_gl#S0hL znMT)5NOJgqz$9|7D`9RB^K=f6X=AsG@0HozHK8T}qAkm^wQP`StWfjkY4a;|T+OLd zit&$GXLj9q;-!~*&-bj6MzMPvzo7zY{dQ|<&10j=mdJ+Yqgs3nEZD0Y!-4-u$c;I^ zf29%C!-FUPu9>1PBm%Kj1P5zvzA--NM3xNHVBBa@5SZIev_jptn)$fk023Lt?fVjT(dX2E$`Yb`9hX1 zmu*bIwjnnL58Pyls{EIRwglm2bGL7&WrUi?Bg$onUy^dtv`LWzENK? zLu`pL4&f8PB=!o9FCDxJOmOA zUy}7+G7vlDkx-8|ergX3Dn#%O2ZduUODm!*^G?P{s)?Ln(xG0De>OPwLO_jUN>{*| zdUNeGs~dqgtsX$|Ztma|-S2-X(2;G{&4A?6w=HlC<*&&icOHFghxeQpGDlZA&8=nb zE}wu$MgHXW&IDV{%)TBm&Z~)N*=-($L;E_c<#JZz;{Sq@M3o^pji2Z)=<%qi?%Mk* zfik;j06so*`ntG?e*}wu<^@VI)yMjHIi~natluydbn%sL9ldOxa`CIs{>gkZ%Ps6j zhpR9oEsxNPD=SjJSp5?`ELW;vyFQ7{yo{B|C94omy%Xf}OPM8lCpg9RVuNGt!T*P9 zvZLKYShPniD#O*tOnenI9d}RG zlfEOCImf%2zvnY)r-ugV!s(JY1r5BYVKXXpAYk|-#3tg<1{2qZVA+1V@Z~NELK#gp zl$3Y#zBGj}>@7RKTeoXcALgoZ%i(*iMc_YKMd0abF`Nc19+=|VUCm7Fl&7830AnO#X# zf7n#wZu`xqb5L{`fpkL&=8i6)7xjYTJn-r4s9-(TR6=G%e^o>0E@e---{wmQj9`-Tmv^oYw7oJ zwG7d0wbB5WvmO|nQeniWa}HaO%+i4%6Adu>qByi|w|u6NfTBUuWXnB$&?e?y`tk&I z*Qc*CFu85_LNJf=W=xg~d7}{==cZ~4G3nG6g49eaX=vSfs3g_TK$&t1BuTEF_@toc zz|!Fre-x6w)DV9c<RgqQSKQJ~YM~>ff)epZ}J<2s~_LR_{KV-%Bl?J;i-S^A)!t z+29|&2-*DV$4gaU+BF)76dz$^syMfa53Gw)kCai^0D$R1I&i%o=Aq=IQJP8qJtOka z&MadJx-sa;Xcql$fYOiR?FFL5g;V z->4eZIexiHl$HetIhzOMs{#+=LIe(q9|>2M_We&&aL7!VpvvE}+|XB7<3E8X%8b2# zxiZ{^i-{!dV*{9$?|2MSm%1zwRk-N}Sd;5g5dbEd5_@H)4R%$cO&z6#t2_-Zc5eRL ze~HC-Cf>=~aY)tbDmQwQ1MwFs)8$eTYSCBVhnuc=q`R4NQ3=n~Xv;d0Y5R5({e{`q z!XG+-^f{|w>%cGYQ6FZN*3@H&+Dt&Ajn?uNp~!eu z7XWg5FO;1orPftzPv!(QVdQ)C)mG{Z4qB04V$Q>q?a2KCufKviW>K$F6`$^Uf8K6x zQuG}^r}MVa1W_j_Kav$gUs{xdfyMWBL#CKeKL4@QQKapD5FCmjW(VX*80}_um1fxc zh^^dqclrXl#3Y+&FQtaCHx{vwI6yeK57HFifBEaSFm^+#m;gg7X1~yEjz(A2IwC$Ssh|ueBqCQUqNrH+dwD@+DORqWtE5D=a zTUi<1$EdMcBM3ATMS%2^n#-gDiZ|ThMSo7ugwBY7O0ETE*mC68yi*{5aIwGfBhaAX z&HkK#XD+M7gOvh2U^^agg{EcFA@FD-eK8uDgRp%MJ4)ucBZcp-E0v+Ne^fH|EY#fv z?-CslG*_F}UM+>m{YQIPfV^b`cQdm={`4)JJz361F9UBx9=#U#$DNoq%Q zTy=(tZv#*%;mn=oWt{{%ogeYrwk8KaYr>1Q4u?B$Cz~@~C1`ynf1PE9&}ZZ%JBlzp zcn4&PNgdkgdO>N7S_X%k3S$^LI;UG)?CNc-({zVj=9BMetk99B{k}`^*27kl{7iuB z%t4D8bC2P|NQ}z7oizTAa2{|W1?la;sMI3Ex<&Wq*p6-T9MRFZIg64=xYO8+2AaHP zRA!UO)!>lxEF{Yoe^IHGn(+?T7Al4-WxUUpv;;u-D$e+o&))2siUqm_12h%3X@&Zx=;w8{x9){%vO+DuBlEe}x`xsIFs~^%(I-XfLRc z!`yfPY2YkXV~A<3*#P$0gQv71&P!4#YL)Yo@}(Csy{=*) zEM*|rLwnnLe{|8;ml<%N@bRH&HO^i>Kbn<^^8sR<^+I)&uib|r2_M)k;8klbegA<< z?FX)Py?IBpUlD66WX+|nU8|XO@RM3(x6kQK@;oCgpmwg|MA}P=DIf^NQ3C3Ut3VAj zX#2%6uhL2l=d;5Fm4dK{EVzBc6UZ!ytJFE9VmrOZe|i{j^d!3*3t=|&v*|<$_TgrK zfB^)I9D7t#PvQ&4051}L%f%Qmxns$(O){AnO&QHmO_@ni%yejZb%h6T-57tGk#SXs zN1#i(Gs9X_rcMXpKgkZW-eC0YirVbhX{g4Ifd!;DfowteP!46j!|HGn1*u5qj)hdl zSyKiOf91{3n&`}XwSH2(pip;-)_VM1`eZxT#3V^}l))5>@79ZP!RX!(AR&c8>vt0n zbzeaOBYGnLN2pnhJp!C|phnwMtZ|^ShR>o1_ z+^_d18jBY7w(*}Q^;yeM3yHAKbmg@(8=e=Nf5wJ_iQRS(0(@5N9B=~e zy&e0}bjRHW2}h9q8Xdey$f6^lfF?a=sMNaCAF_N6;|@bgB}W4_Ppw#n#kjQOm`r)i z9+u6t&+8ax@!+dEbIRFqr>no$lhXwfiU??>O5z^=WCm>~;HKKDgnX6WgA?$i?-nP3 zf258OM$=ll_UtomV7iP4}wF4~ipWPN{GImi}7e`PNSs11*#z$)=$belAKjn4_~=et@b_Sdu| znWPd0!JpV+Q19^E5%kw&<%`JM3KwNH6!9O!b8zjmK2m5Xyi3aSpAQ;M_RsHb8{^ev z@7qglmK2tzb)gkCfks$=?%8XH!D}^v9C;SNX`hS5XylFW1}KEUdmaDepZ>Oxe*tLg;d({X#a;~^7|!iUCgIW-yj|M4+#!lZ zTgE5+M;hc30IRXJz#N%C)K0AAg)xk{;(2*=L-NP9xSJCL zl*M>7kVxsz{8{$1R5zw)f;#ooe}y615@Sc>jsFi&!bM0(_#gp@B@|VdxW|7rfu`DO z*3}l}VZ0^G5&R+G?K`KfS_UG?E1G!HB&^1pP*Pxmq9FgJ)f$bR8@ZxI06UByWFFDW z>9Vbv0o)r#V9rl0^Kx-Cte0FC56-9PH0n^`OdFA}n~;*=&YN$dcx|?Nf8_F0z`jv$ zf**aH&vnpaG>!A@mf0((Dt!_@Qg0pZ9OJd9Q@Tc_A9t)Ws_N=R+7EFiOWC9|@pATl zN2H>f=|*X^W$F1Qo(ETJVZ=dgr;&S{ZCRuU*N0JWOC^L}c$Z(QnjB4cvIxQiF3Tnq zWOfsB_7EMosp}ibNX_SDf9j|{WU!K}6P)=+2g>p00i@Gxek`2$gLbEU^vkHQ;#TZp zLe{bQ%B`IF%uF2gm|wR7&1~JrH@n)I!re#y9zD^A{Jw~X^$CMl1UF$nhENs-X-suN zMCv&-=UhWH9sokF`~{+k+nVj*-Wbs(%EoaR2w0A2o!Xumkp7D$f9yHl!u}&$P^y%J zGaE~?FQzRwwf}P33b#s?o8tc1jKveZ7HiT8W66zbg5Y%r2gbgJI*2w!6cDdYCO`Ba z;7u*xbvnbC#*lif>kn&G?Tn6~l=B#@m`r#;UvcSB`3K~exZXzxdVVNZgQxq;7Pzvo zu#ZXEQ}JCnuu!&`f0{$_?cx_!6RtvY+3PGhUCKT6CY2X^=P|Ym?kqt~Cd6!IUu}IN z0tYsq;P4}49^}PFT&aZ1OHFcaPbjBQE)QCpyXw=}KP;1qgVXeSCc;K6VY2&cByc!% zZ6C+u)1?O5+ZUQR?!JCq&IxMgttsOf2?ORjFi^#PPk5r}f9Ne9ehw~}qIu-d6=NZ| zO9C{}J2qbGn>z#3A|~V*p^!xg>}6(iEm<9hP@@J=!o1F^yTi(}JZ2EK8QoFI-&yms z8%P?t{`s-ykIdwWod>e4Aptz{OT>kKN#qf__a|;;^KjfiUOeU*_U;0s_Nk+DN~LDH zv-d37UIqR<@e3UuSYPx=xk_Q|s1|NWAxU|EKW%e)D=3&AX5YRdV?|y! z$rlGfqn7k( z6tZip9Wa^`UsYnHOFMV3UhgJ+hRj?(1y4%11|cXOOZnq@VB)^R6mqHzChS*9@lb!| za+~~w4>;Ur==LxK2{)EXL&eZOo?8CIl)?R`Y@1sS4$V$P)NB>_1!&8xT(cf46%Ek` z0W&Q^!Y#isN=qD15WpOnzJ;VRA;F@6b9c9QFGOrgbh!*d%tFdO%M4?V_B?}eoD{~tzAD=E-BB%gQHvj5KFn;`OgRqrH2$O2oS3|`7ZDA)1UMS4Mv`uTTFD9 zZ7&Sx#jI!YpWNOgxLIk6c51xUrL5(^g0@X^lZ3IR2W$vBk~Hc8?O+r0_tnM(fdp6pDA+-Gyewh8Gy-_vR@l$pk zi`vuV`SBh)|N4_Pt00-&T%z7EawOhpj(pHf=?LmNaW>0R zxXFkSp64$H=JF@9qP0oEr5bdRfAK)F`Lr=4+KRO5ABg}P!zV3d0bNzDi$4*zQQl8- zppVyH^DJrl?>Cgv@_8xSd@oGQT1`XVtx=79$MUky@=o?om6^nmX#g0dD!KPUQXXE6T+|vV zbFDkHtcUO4yoWX(-B_Ucephi>BBjtPpUd4}J)0YQZN)&i9sBj(M`<+~R!ge%A+;%- z-wSE7rHBETC+DCDu3{dhvH001G;Q`|Qq4zg`%H<@J~7Hvf#)zUt?N=cDOA|R3Y7sX zQ7FIcH&-CjM_Z-uugq+Ef8gbV!*N#@5$mS+IX5Y?Q(IDt(>WYbpCYocVj-n9jqD)O z#_%`jNobfi*}W7hBC<8h%K)n$c}#*v_Uwd)NaBnY@hjsz4`e;MvEXnTt;?pt~Z zxL~%=X75_PiP`garJVd| zK;!#mcsS?s;X@Is`Bu)tk)5 zs6CGg=AKKvalqGuJzDtGGD_H7ABQ25bOVeuGQN}qUH5@#iw00pze)aofsOBw9(3SK zq==BLe`*ER6;z52I|!Tk^UCpyR+70obXjJsmHtdJ`D%!&OLegagC;4}WGMP?Z2Rer zU~tVKp`x+p=+|pjW-N&{T`3PU+A?tSuf&> zA5 zXX@dv-@p~Tu|witlr6_}+K3q-;d4#akN7#c#N(dox`91SbpUiIzS_V=^t@~Pi=R25`~{2lYrx!o z62GFwGhV}3Ya@SmC{?YzFnpM$gtlE?JZ&=9J9`FtReO*$)nI?^&85*96FW|975H-I z+af$G5k#V_3p8NHc>kP3yQ@J-ml*JOGMpc`XvYkGR~3YgX@&L%mZaU&j_ZOo5^9PV{D z3?Z-4w4#tx_yd>gfiF`%MOH|hs$(=uH+G@%1QLuv0{5WiJu$^*Z!RdNPLNPU-m$X+ zAzNrKH6sR`lZq4GJt@*PT26Wi{1;r(t*^B&0g#r074v4P0Pw3u{CKdSf7aC{$12FfO$uS1~RvB;>~;cs?wz22pN6I!C}-wjU?9f0mQbXU$rq6H!)k zBI1|8oV}_O$t_Fkc}h$}jw{M>-lFZ99Rnc$R(()P3z`dLvUXQC8l|ebYn^#7An5^t zV+aD;B=&~vvIgjanpJNt@$wIW*Jxr9F*CGlbpM0M)4#&8b{`zo0|Vho6QOP;`|ihG z-PK4sga&x6x!+07e{+AH-jrc=)_ih^Qhqw$NUKJ!iR}5Z@D$Cj5Hg?5zB7T=;uSI3 z!XQMaB^S#%80&;M;e?vGz3%7e-T5qxX&&nsfhO^#FNWFBwZd3_I9s#7?k!%k%yBfl z)5fu@q*CGNG5i?KOUNIIZ{YKr-q!6%!heD3GvW%NpvfC}f8R>tZKKU_u@jEW!_@Yd zMko(aS&c>3e5(#c!o%4eI9-m|Yk0r0V66K7+1~l-`KH2?&r0p872@ zKG+iEX`ij6u*XedoK+U$-eV`M`T8GWLLhsrW8NP|T;4y7VGo#yH%5!aF;KZWRd|~Z zbe;v;k9!E?f72;peFNqRa*6K( zr2P*cCs=giGHrNJ3~$XGG}ai9{WHdH`7JY9UT^LHC0A~{^U`eyu$1HTfof+J5DCB_q-!k@5&PLSHtV!y*I%SSOwio z(nJ|Pe;c*Qzg*l_ji21D;$$tz5z!7sGf0M9nM+YEKQQgI-b*w@Uk|;Kw%&67=+Fsg zq&cmQE}HE^D^iQDg2t3vIGK3!IeIZM@bc3{A3kNWLrj&^@72iNtPb&Pl*Cci?9|MY~2 zAs(Xpf0Uxu|Bt~@=41x9x;&X1A}rSX&P~F>yz@OqgThS$pnwu1NRsgxbNwR#-d%iG zf2Deiabp#8R&U{4DE#g_1KfE^m|M(w=IVm7_eZWyR^*7&66EH!PskQz$ogo{>{V0u zgLC_^e6&{4&^)$U{*Mz@`|shPy~>K;HA2f>5}F{?+lMUN;<@d8bWk$SdZO||<$2dF z9k@6oHHaGtJu5wX$WAdt#TUC`c-0aw(B8 z=}A6ewfc?mvnO%?49Au_ev~^-kdua)GD{%K@(}pV1ae1<-*Xt{V8CLwEUu35?9bBI z)A(-pPC!t?8ljcg4BjFNu|#D@6~L-s)-;joF1s*bjdvtGJ`XhD4>@8iMsH!4f6U0l zG8(d>sy}c&R-loNX{Gi48b83%=|)p+@W@|=<1CXzj-`{BH_!b+CtmX3@YLD;39tFC z=q_w?EeXqfmKmT+?aB^>$Cw>kt_O{IHBMG znmm;99Bvjnh)jcb`5ZmGgaO)L|ED(DX!hy4{^OKQv*?=c5&ca2zrM63Z@liQak3NX zdaOuFUOb3u97Dj0_>T#rf!V(i^hRr(9IdhHGG%Ww{yW&@Kj5=&Xxn3Pe~$KgVZF|~ z6@kFF;Ht%6RWbK=e#3rfumyMSGS>w`&pndCsK0R6r;PVafo%M+Q4n6`DS{0mB%$4c zbKog?qWN@7^NAs38p@K}cK0^;BySmH+bB{en2$+B^T;`C+S25-XfE3(s$=ZwItu z?e}lNjmSWpc!1rbr_n{8s$>T#z<;5aV;})FzYT+>!iTH~wR@vaf0gpHNQ+L_6GE$8 zp^BtsH$dA&6cLUqKak%t>89tMCRHDz;7c zSa4Qh9F^r17c9e(SgSWvg{{sCZ7ajo@ic_Z#%p2&|N8oD`8Nu6`izridnQyTPC z+m<#Zs*~ zc3M*sk2k}af4DDG5i>uYxPI(DS@43FK4($&`Y@j(FrCQ79m(Q%9zxt z4)hGC6&V--73Aj`EIBxg65WAaRh4C690MA+h6~6t9Z@4lwZPXv=1b?Yqd2CV?A+;i zXCy`GoEWM*hiVFZ527{vC&^=-R%%`ScEn;o)K;)$e?&v(kCH)ojtdWHT5BY7kwexZ zxcR4KhoR_Is9u!}%^E-M%-3=d5NR2E6b;9*oJ<3)G2TN=Z41SrrjgO3g`~f_6LkKI zrD@U&WOBECU~(F7U6byO8vs{ez?Cea;@nMazV_U(V1BbZtTe~b=-s4=bi+AZW#T;{Pe?Tj(NPhd5Cf*4*+qZi#es1BucKZ__ zaQBqb24XL4#ZTE?l}Z0tOiiZ`cK(JrW*pUSX}=f&$xWi*pngJX=^tn zf21lyP+13=OtX&2s5y`zX9aX*lo6c8aLc#q+;u<~XdP z>aH3+7L%c4?C@c)FBiRNSRs2TehzeRf9kVq&}e;ec8C$HT?(+KAug@)ZQDq9z93B~ zF=eC$s{_L?9t{@-APk};c~fy?l#GkpKOq43PD6Jl(`#KqG0+NmhtXDmkR{In}v zjmdG-=IwVFNp^|P02z<@Q#rIDCq)58zVfwnSt`pATCstw}#YFn_ z;Mw4Dcf|5ND(4luLA&Tuo+m~CLXH3NLKTk|nViR;fbWA4>Rrt#^mRSee}Lj2)Rb?P z=d{GsF4i!ZaEDTH>okz|E_%rum|PL7HWxr`S(zaSJ*(*RP|h)+Vj-Vd7&T%T*APGB#9(m5>p>ar)^)Y$eMQylEirBebyJt>HXgF}|sbMg- z^Its>LVjJ0vSbC0ZnzZncC@lSkfjiwGi!;5Rn&WjJIsFuuPJ92G4BLL# z)|q>?pS*JbjV3ae`r$Kb+n$!e`50|Vvl9~gzr=i`u8G0_jG|{y!k2!xs>(hjjwig0p*kaMr=mi zXi)`Imp4JU%1_UDdJ(mktdT_5-(V=2crgDh%WR%K2uF1>S*m-1MVgEw*3R`DBRkJ8qe-<&&mk%Hgk5gpb*dQBl zA@pOV8(t5CGfqK*zLgpL*Yf3(2<5Iv>fTI*nGQo*+SQOp!US4zPNgN!`xU|!YR(GW zE~f0*ssZN2&OZl^4{rdrYkGpIB_59=%DXTNL)eSuChKRc15g|5&{T?F5 z7zIB^atJEeI-7yr%s2MwzAkP3;!1By$t~vkHvsFSfBuUXhyT(Tu-=H$hc^m!wni;Vt(^_>29~u9O;1+u zuK7C{f4|cnPBX=ev|p8__he&hB{jrog?0z>Y!D^n-P$yNsR*YiYxg6JYTMl_m5cFQ z!@M#1v#P`}|Dq&?ZWev^i({Ee9%Gh^yVaeC28&SxzIR>&kQ@PHaQXDf_P{W@J*QF` z&*-DlR%3xAEUyG7ySmDw^T=SyysG?uzz`1Lf1c6WhFMTkewQiiffqc9G{3YIWX(%5 zkY`AE*$Vii=;9^PVq8Fb=Fc9x%5QT?Fuck5<+zDp4RHA-Hy5y(_#Vz)MM$ZUp~R0g zbszGSKH%`IqM|7$x-6owHB7AE0AAAcTf@%n6tUJ&CcdGv1M2i_x9p4_U44kE0Yy=R zf4K7By72nGHZ4;tK|WwSMEv`xMoh<&2|6^5kFVyIl6q21mWSLhtd(b7^BzD)1$~qsqJ;`xGnUSTy|%ZIf*FEjvije0hxVpa&CJrP z5G)%cZ!Oe=(oDF~*K{Wv1HJ=Z>KT~Zvj_ZYeoEDLeGyDq zsl4?S_xsQkH|Lqb1(>;7<^oyrMxt|yA9SC!C@3gfezsckVaTw_-DHAa>?aI8f4BEj zYLM~oN<-UrK|y&perohR%&aOx8V?DOv$j0Y2#@k|gllt?_At0*WD+?X1IA~-5$%s% zqEcx46%JNvnv>*6{ug7k&l(AU-B;99hLIlA8DABh#0v$Nl;3^m)2-wQoozd$?n{8O zffI1W7Pq3SpxV$lEd)S4+Yy;$e;vf3oxgo!>C6}wqyD0xcS!$u=GJA^cE{cI0$8zG z2SBaHT>YOC@X*m<*A**NmJ^LkLvUaovdbEs%s|_0$m<#rZldPMV-Myl*a0No%@AsM zC-=&lKeSL0YIE3I6_SsO6F%l(E9%1s*@K_rck-ZN)S`HlI`H6&h8=1efAT@u^>*;P zxYic|rt$!82hKN8EXU=AB9+pY+bTYmQ(0}7H{DTQ^h6E}oAghGS-u3XHX}S}`(Hcy zJ(fnR4?EAD%g?~=I4s5tk7=cMR9yx5B#cKh(tgHpRy#4s$!am*+UvSRY}G{$od>J6 z8{h~q)Z;l{eQv9hu@|@*F}E*8T8+WAcz_F62ATNhfk$IVf4Ck5L!`CKB*zju zvBuKu9D&!ogV)jpuSV``651sIBoNu=P*KW}U9b=$h*U(JFXg~}_PLjm+~1s72KSkN z?>>#OwENoc$ztIGT->WBu|ELKt=Ck(R#JvPRFrdmB?J8OiK5U!_-!F2iYRO*2L&)E zm!*lfKDHes^d6R^e|STPk>h))tQvfQoRcf|^j!YlC396jfr=v_3j^4yqakFy+>g;B zSncIHyj$<3t6Z0!(@}#o9M%ZOb8q1rB{F?hB8US<&@v5&WUa7Zg5j`ml#!zHhvT@xAlVZCFUj5rd~ASugFO6r1zE{Ld*|YIB-mGj2c(F zka3$iU=B23e=C~!?|(?2LV6`oT) z<*fVJriC;=2YLM1Fy*fxCxv7c-ado`))u4 zl5_$Z$GdMUQuZC6cu0w6CI5$KzJm3$Wai;82HbIKy_-E0484u~SF|v(VXNJPi3DjamC2yq zP~|3N_i2B&0##i}C~&Si}&|e<*|I z^1_qbACEIetLx${61v-Qhmk~3@(QhTR~MtvUJu{7qzOqYEd$%o;?Y$GqW1yP0)SvS zFFGXAC3)Y~$H& zHJC=@p%(h!Aw}jfq)73=cC(8Te>;qQk)&pB+Ec{p+bB+=CkT5Fyrl^_C_N)Q&-S?1OriKW)zy@s7ei4VoZCvGT0px(`ce*32SL0%Ub?9qt zhZo7PAJy2_j?y-1;%G&F3Bh80er3JM$)3hq1L95gGw#fYhGz~LJVeOA_Ug5z1kX7md%^e2)4uj+2MuZ>h451Rqe##y$Rko%;X#Tt2hQ6h2oxa#bv0h4+jyEBb*n}&`Uz>IAEf8{}ab4eAWv`4Mn_PSUW zEzbd}PEem+Xf2-j<~TQsb=nZhP6-8#(q6xkfaKMP(adkV<9*3CRYEKI9v`tH3&Ehl z9oU*AAeVvc-!;-L=7-%H?=nc*VcU;*j1Zh(_!a(G8a?kI9(srUh3q+7V9dTOuE}63 zR`|}>nRh)#e>-KNfuJVDqUxlhn#T{a9ua;8)=>s*4jQ(ihJhV@BtbG!JAKW_^KY3& z`pmv;`$N>y!2Y80fkT2BiE$UC2n*p05DRcOVAa%9!U{@qybjNS_U!O$R=t`B9(^3J z1QXq4k$bI$V|(4wIyHFLMwovSdTZIhLkhv75cHTmfBm0omG=q(t$MK|$&C5{;0+xw zr^l4cA76_uh9y~OoPp6DWAxx@-UU6im-LkA4vVL}#0Y=&H5vk^u9)8(7^ZcquE`I* z5Xe0pNA*HA@npV?$58x#7bO%LwszKW`J@(1iczJJCFw{tsp^ecfsaXykV;BHjSne| zL;mr^fAvMPuC`3D#-HN~swI73>nwqBwwDuNjba?eCS&7c9p=tPfi!BS7xZQ#PLpd_u#Uz2dY_)vNI1wuyPJy@N>j z288=L(~wC(dTt8!nAc1ejeR(dR?!kr8bG&Fy5ES49 z{*OP6K2MixP~)r)RR$JYtP03a|EwS=Q74Yes9w3eTr%x8j@m!J4^OZzwU)j{4G&j| zf4#Eh7gZS?-Y)LI>^a{ibq!+`3MdbUmK*FPVd*YIFZ(v4P&tb=XSmV#V zmZFy>zk~Lab(>@PHBEpw?aAyHFn&P4=#VHf@rWl2ms(BqvJRh_))AnmNt~I|lg1~` zwm_HN*X}7OD>1i)*Kc@oec&;fu?L1>f1|ktys@5B5m7zy2F@$e?vlq#d4sVmHGM~5 zcvf$;!mn(FT9GQ}y@?RAYeMV}yb;;NzeQ5qgA%8Vd zO?am1f2hJWT63N%vintpq{mb%L_)?H5>^a$C4dHK;ASs$VET5gYj~c&Y;}Q>f97DN z;%Je1ZH_bJt>4_y-eNz&N&GlX`~OF$Cm6^!&PeIYDBvJtmQ*gw*aqQH>49x;VDza5 z#HmQ7KXg(MuDDn=I~KW=(jGKku~S8QwgH0eK_5khdt?cc%8wVZ_&)%;7vhHat?``4PHy1gf{m3(N5l z!}Zly%i>;}&e{%3d$AG&nVrF8hFP}H8YrKK35lpdoHfco&2AI=n?$mObM2aA9ZOC}>jn4mI(Z_JFGs;gJhr#1gPie}A4{2_CAU zs^qjbgRH5OLurz^E^QFJ!0u#DOry5p6$edgHC~liEHcfaJhZW{hb3wxDtHGJdxq8x zkuP+mlNqaL{sY#1#8ommPc%A=i(dUq3i$YgyqdwQX-ohrGn3ag5|?(Y8<1pLy2iEZ zD2v)4Zfe!ieG`}^YTvjRe`2lH2DZzEcn0-8!BAnt>I8O=EeDx|Q@I+X1kwT!_c8@D zEB%-=FRAD2c7aNI(N0IY5l<-EDBa?9YVO#!GyoeJj`u{7a|Rjb{r54f8k8V5RUZz-+cpb z^cyOV41Ji7 zhQ{jXu-?oS@tlj)w-gH>7Kx%vY>@P-3tHmPNZ1QzdO0kK7xYww7X{iR zA&t!7B*-x7WO*4(LwA1{Mi~=Sf`E%(3t^q`ML!408MJJqUvPo ztFSDxB!&Kt16q57aBnF6_`QCcxV-J`^`A;AN6>t7yWc4**+c9o#|v>V9(HfqA!y=sy_fkK)b*AF#RL*$u}N-T4j1`bxHyo zo1*!&SizQbh>=0-=8qlgQPBgoE!#4+hZb>awQu)9E(sz+i9plF%$aaZ5YRVHzVw6R z5R-6r=Wl$Xp4no4Wq%PskX-(e)BwXoUvlw~`6jFG_eD{+;j$;kgAk>3Q4bwHyqz!_ zrDF1NQXB#!*VybBE|K`n8!MmU`C}b63f~=8nmY^tNU+)Y`XMdqqxIiW2C_ak*UU^% zZXsrz>M8V9i!T-SO$3eghDWFM=p2GKwG9IfHY3l8I!j};Gk>dG$V`nGP}j=fN3%jA z!lJSI&@A?UEh83dvpD^vwhAVj*9H07Ee)c z*Oji=<_4j}FDkKbmr8ykxMsD1PIB65{@Ga;l)0oYIU(_Mj9n%ErE6SBfbDxJ(=u2w zW7qhKFYOkqq%2!dcTY&$cL;eRGZf!-oZMZ1-{+^MxM2S{AE z{j;pWIaL+IEy16A2~uF6w2Q#*+{u6YIAp!fU$&UL)Rq7f;EG16t|=hpI1Kz4yVn%L%GRyJEUvAqdDV%*c}D&jNR!Ki_cKY zOeGPuP=6SJal!E*QcQ;0Xl`$P8E17#Oc~;`5w;DFxeY z7)90hvkeZ%nAm!8qAd2_IyJqZcq$RN09G`e+L2#zYV$>|k55wEbD|4s+R(fd;_$0Q zs^y1;_GG}heHBV62E6(o_=t{Ex>Mvdi+>_=W!K?sdZj)9EVs%y#f4^RD{oJrfXvXY zYTKkplhPP5YN@`S1+MWzVcG?s{aoFI4{*v)(yO%p!Wy-zjw?%Hig>@)Vj%bq&lJ=R zo2k0}Fu(q$Fex)nO|lobeZ0@Uw8WTU`|7v>8|SI@&-cqtj42XmZPc#oZItoDkAJ1* zgKdz9g2Xr{4K9QoTwMN9if^)~#j@L~w}A<%U%f8jc2kXF+>mX*ql%jMLCBsqEhoa?kF))o|7cBlok$=Ik3qB+o z6+kWMelq*)+=#hq|HP+L$)iobS2xC&TE*+6i10C8bXR>!R$==o?QTa+7@dGQ_78op zAjLO<>GbI*X_cmNc0B(2-&bT~%|-cXr*${(0Q41Ydg>7|m-=Y;9kje}g!x8GvXmbf z*-mpSx=vcvKut1W=JZt6%zqxmZk92}MU~t(PB`Ay!gi9#@j{M$zLaIW6rw5~%!ykHO z`R}>WPf3#1FAcDvgLB_;54VIvff~Tv)t1Lo$EK}!mjggWbPrK(y!oOw|NYUrc@aZ! zb&5^ZYzakcYM$!yh<`{0gLw#`ye5PfNh!@>ga`Latrwt`;%(^6{G32l+~QO?)|`}5 z1>>Q_FbMN~MnOg@(aEuBg#0Djslis2N>D2{1~8m6Hs=V`ve8T?k+2Ky*%U7z^=Jkh zTaP~2kjr)^vCzvOenQM!pEBRpe}u1w8TtkwPL9rJbXTp-ynj#HLs}Cg!81_T{@#it zs<9^W;y0ePmrZV4Hn;UuuSU5t90urFcYH)nSI6@o68=LGr&^(@rf4`G_7!XXV)R%c^i0@NI9-Yo+4o0h! z*8gtO!6Xfe=%_ z?0-I<8M#_NX673pw~jfJER<`~IU6>rvlT&eP{;fgP>!BJ>X9$w&l1<3!#YzFNdnzY zhIBY5%2={*SVI3+B5nn8PMN%@Z}0ChNFN6b+`oGvH)4PNacQQ-2Q}Pt87kz|h#gC?a+&OG{V42R|+{lKvxx zczb7Q(EY=*y1r=u*J8AEZ9&-z(7su#u};p*+XmCu2MA)3I-*>Pw9|?v8<^2~(N9x! z*abZ31=^?VcllG>pvh7dhPY(SIREgutx{O{imK{!L#(z)EX?Ug^T=?g<#KGcf3< zXlIEnNBMsU#`^N+lihx&lbSJWzwmo_|zSe4`RU1K9o~rY-2* z75BTH!L0RPMix%k2URTT=e>l6&-(mJPxt5rSMJzVl=vx;S2&#z!?pXUQ>0^q~^q?{AfG)FR^7WGPY@qiTQ&qehp5Eg+Lb zV3|!VP)MXK-e2ZZH@dFIL-Cta z-;^Z9ai`^8nAP;j+;J0KNtI5nm`R_^iHB z^UW9|P|&+=2=|-r+GN6FHcU(-Uyjj%fBBI8Z+_zK104+e(69ZuN!O^w(nety^q>)> z_Mio~PCfWbLv*AN`GVJ_V=s^1qB(KY`igIz> z10QdxghUt5q&EtfZg^i;bWw~!Mr=8#II@rU&q3J|1WA<|!-s8h09ec;^*er(x}-B_ zaC`Mm@HiEbClJ!#x@SG8wPgH&myrN77?;otP31 zM5!-+__+5$5MEUl+&$CjHSw;b% zFeTaJ*cGs*i%)){ZvILGv_E@&HmSqtz+%~H!oLXSv7PyK%#u29^}okQ4uZj%nFcLFxaW08A&hx?msjzt*Nyqpl|YM_cvt(2}2gz?C? zfi)4;+kg7pMxA<0{Sjl66IQUO3i(~!#Web4TmnqUyIg%z>W4$h0O`Zi47^U$Q>`vL z_kiZ)*>>FzD$Jb`$=BcAMHZrQCrWaC6=JshGBZJirgJ7HBldQ8rl+A~wa+v?AzrBl z#l9|vLjdTAu7yG1p$Z^cZb?^i_~$BK1AKyQxqmEDs4pf>f92~dsM$E3Cm>%CULn@P z6q&SLo;YJ#xLffEFq8?2B<3Y1yuwGLgRPWCO>Z!)0Ci-!ygBJM9P9jOb0kd`VW9@A zG_vQn4qmcLrR8CM9VCMp$^%V|LoN<0kry4)WOoy5yUzgU0F>6YaUb*bN00YT-E3BS-B2; zhV<|iB&<3CWu#H?FC`Dv;Uyzf;m8TJ0kpGDx)o4r*H`1&-d@j6erec3i@iFj=|kpt zJh|!0Nd>-Lm+O(JKj-xANkVKUut~UN27jL-lXX$2sbKWeQD~K2RBdgd1^u16n8iyp zT5Xzvw%QLAGAgcY8WTUJ8)h=AfJ*H}9{xE&FU@z(LmWU6YW7gcZlM?|fB*hgjYXrYr<5qRWzkf8; z6fGz^ST6`8MEi80dS+(Uo_E*&X!Wv6^Jq(7HpXtADsOoPmEjM7Rwq8dl(VPQsiUI) znr`asM)-;PQgD*>;J;`eHVAsa8xk$MFb?Vwp;j8BtP~)HV8E-+R7h6hb&u+Mpwv)W z&ADN@*m{ZYw_f_^MsCKY5C+xGaDO)sgU$P1O!b)AxRgDv_uJ3WU`&U8S^hpNbf6AK z{SNSvY)wC%YB2XvzP$%%iO`*gkH^K@$I|ADkUja8iYo)Sfm{7+UJZlfEwYU2G4mG> z@&f%R*r0W)3TTw{_Vc!&N(+gY@4WNo6*J5;c$|)w1(qSsnz!{$&oV%aV}ESU*;^uM z8RAiSA)D;0fD-P)JM^Qbh!8=Wia(anI8`s;69}en2k*T+%gM0$z=cana8|3!UcO%9 zBE;G8wzT2#mtY-A_fCSzqrp86$$4`%r;_*02mb%4OXv%OI0J;zF5vWs^QQ93ms?4* zVNr~vZitP5wZ5)>`B%V>;(rIlMmcY(}I!rg@sR;mLv^Xn_nx!MHp`>77zI21zz-&@6_ED7z}5!ZfCa zoZf(^K~f20JesHPL*?;HUa|(8T(~Sf^9i*9;Z&*V=M|2cbn$;=(tmt=RCRS)N{jL_ z2`h);1dS?{;?BMlu(5+X5IbV>+`Z(}YR%NKe;je;$4`Z7^H8U9S0!67oOeo(2w8|S zkfBVY#ib>|sBGK_B`il7=>Zwm0+-h$w4Wkt~B-7ZAIk(hT-Z~W~iQ&*89;xM{sAwbrI zq5C(X8N;v-g%UQZ=fza>Y()|}70$+q^>sP%^FYa6%G>QpDSynS)lDs>vDCVm;KnP` z-Y6X-V+{;hxCjQEQCh4OWtD`)oMIZdk0uLgtHy@y557i_2-h*OdQ?GHCBg4q1E9@+ zRpTCyFGZjzzm!Z8f#9H=lbS`mZm>Zr6e>#%+o_V27;u-8h?=jyC_TAn`n?-f9_ z39Z(MHzJfw8ngfAfi_JZGw^kr&9MG*`*z4L%?}3S$f>Xt%n4KKOhgcE0()r)EAD2z zY#%?VAcA`0FLx1(0v@2%nydULeNCp^74j%<#^e)6bblz@YmeGOY*}oej)DlRLg{G+ zdsAbJ)GkgE9$sd@uwBO$->@n~n2R2=WK!61FHzoYu7Rl0nJd7DFA z6p}kO7e|%`e0axQ$(0V6IJ0EhRd6JYQAfTjY=2MuY8keOoxaMU*r{H;@Ze60k#->Z zp`o*OIg<(Kg^Shs_CFOJe`j|5B~XMCYMtAz8Z}TCM--CS?_HUNJC~M_IhkaC1k?ZU zDX&X=`jJo?Fs;1TKOotdLphBoO#=+u^Do?44tKcX)rzn_IsFtq1nN;QBsA=g;oy-K zGk++CQYcn?m^}7)D}SkA;luuBgJpbklwCRx7$~Sbxj3-7p{ERIS_`jmIGB?gTGdgc zQf#bsouXSP#N9lIRoKgEUn`9Ux&oSMzql9iSAN&Gfg0TbW+YMVRl5j}vMF}mHU(@~Z@w@qp zMrYT#>@}`S(65(WT8os<3MEIb1X_zyAv#gQ$Yj%->*G28NRg$XJrq>VV*WPpihn*I zVqATWoSwfRMCy-@lF2>_hnJ(U?h4u1K)1j1mnnu(tXsW|8hgg$H0>R{vWw4cef2Td zqm{z!1{{6_R%*dPKtgR=`!0XQp8qR0!(zg+HrTuO!n-)TytnJ-R!QMe`H{Xgn))W) ztzkS&TX3ra4%8n4S~&vQMNotE5`Q$jX1S10M5j%{uy~H6ASMK$v!i)_m#7b-sZ)pC?9?NRfYd-L>)TC+)6}v zcw)?#0%!9NH4#U2HZ>!2!TbGhk(jX0tJuz#^zjzbr#0Ki7kn?oCkRZ<5`U8e1S1bp zw{a8K70#q7NAnL<9O;;Vo({}k`@|Yj94EiiT>B!7)8x zBGG)VYKPXD{2(~aGpkdO6%;t)mlnZ(wxT~copMwrv#>@0ysY%-SAT*Xb^qnAx4a0c zPavPcaOARRsXE5$ud&s~Yn5|X6b0g{JVTS!s`RU9VeQH|L=CAA()KpOxh+#M=w_X7 zJ1tIUgNzAkma!tnfSz}c;DDNGQn*qU`Y}Gj&^<_(>ByYCt+cai(iDe%WDEoqvDA1#tPWW=JBEEt;FTiW^8E ztWR%?lq@d_E|F^(HJU{w1ao_OV-S7%5Zvrs}1!h@W6hlvjXjr5|h(yKsYDg?6!M^GW=F1gey}ybrUB|wn=bKadk={5S>$UfU;ZcJGU_Z8H;?%?bIq>K~IKm?} zV1LEo4kcjJ-CxqVx^sWQ^<#|yV=&*bJlt48oWTqI>GHzOX|+cuzE!mKm^k@h%m}Bk;_Nn1-F&HYE}Zd_`qCKK!BMT_u%n& zJ7wQmGAi>&fAoIE|KPwo(1JqK6Y}}xEVI6R z6Clp<9ODS7pK6KqC_ZhQ z_S*07bSDsgs!gnC=hV;h$|;AmgcPi-IBz1tQuO72VIS}GEv>&at!#>>}HpzsRKRn7F!X* za*fR)`l*_G|DC=BCQj{41fsN6l(ksW{iZYMyoD#6>-9yu2LYE#vEOVzqZ{ke+ov3M zD43^5tzUCqk89fTx0UW(5`TTmMCv3)T}ns<-Ee_N(TQQiHMzeX$s4SPL!TnXm%TqX z`~f>v`bY!Cy!}}Yu-XGe6|jGDaRuDm72_ z-ADg!e*{}bH^?4n$QCFwsr26E*b9sf{vLfCK?1*t6N4ELDA}-~Yk!zm05dDcQ4VMo z)VwQR(679iLo=-RpzQx|*}%SvjRWy9&yiQ40l9z z*xRXmb(rXAkZ}jvU4MWru?#*+*-qf{hoOaLC?=$xqM1} zg}se~%cwgAHP%y?2gd`AMY9Q?-dgQ$M+rV|6E+LN3xTi`k*iHwHGWyMkaOeCN{9e< z&tNo$>{&oA!SD(MPBTcZD$AET_fZhroHEz<-!{|Jnw!H6*)9bwHKzUDzdIDSDtK+Zz{Z9r|(vukS z0}WnVNekNBa&YD{`l(A>!f&ct^~*ZJ+1=FJbMEBueapLwN1d1qV26(?=r~+nyfKwM zX3gAY!>DRMj%_m!`S5dKvkMnjtW)<~=h}z7IDcmnZhImQR((H z@F}3FJ*;gHU!Spd+=^ohBH=8BDVFNM9N2?X0h=w-*k_|U7oDX%Ez-U@tr&2uB9S6ul&C`kT5WqL<0hA^ zGJlLbjf`#+ck1)pzN7?K;p`p8F4@GmUV8rp*Qpv&$Kg0u_MLu!xEDn!24)#?^er`r zS>jh=v!+CWsbIk~$v}R`ZQjPCag1Td^T|#AYkU8F9aYQg{jhXoW-Jz>liX-GWX6`m zy^fzLI^XR+w2!O+k##GL?}&u{FW^b4On(oy(M^rZ<5iNwDoMotrwF2mVYYeZ;3Ge{ zcygD_-}`y46@0Va>P5~|?QYC`4Q2TvFv_ z(rpZ5cz>9f(9d3N~Tt=;;<_be*6h}`YGGEZ)(yQ{(?BA$=qgXJRcrgHj#top5-*;I)JzZ za1pNy=M4yhtfe{}XIUKtv63JRv`1*!m!tV;AqEyZ&NBJkJ?WU^em4LAo9?^QCT7~M z3Ae#8BJtQWd{w=d&cD?*Ci&s_Eq^Sbgv9ZOX$q36c9ka}s||HrHjFD9%w2ya{x>jt zhZ-0!Q8bz@qScV909LpLqAfD^saf;HLd?C6b426lZyvTQFM z{Eh5bPkDQ7q_|yJQ+{fqLqN>qye}ze;EU%c7+}n#OB}s4TSo8g4KX1Nv>r{mg*|?p zV%H;LTO{v^pAqMg(I$3saDVu*V%e*E5#vj)4IEv-Y-O&9GO+RzE;H$9Ah~t`Dyw{ymYe$vSASgZ4E?6a(&J_( zcbqZC(=wg4=#`6xiw@kyrDm8reuCSJFy>g}FM|!q12_%^Ati#q&uG|x_=+YeL-IC&+cKe{;32+R@6gU)7e!;m#}}?r4RmW9rN9{=Af^( zpJ{(oQyCP{BH+RL$BL0Ed&thP^Y&32Wpq0Dikzz|Gb7jaRi1j})EDo;F;Cv09nD!v z?fV{XNRtBF!W*dCs&uFxkqe9y!gFbb){{xjR{D14Nia&R9M2nQfGW|J% zS9qeE{}??j7qr&39$|#z4(O0g0If2GJQ+cF8zXwS5Vf8;urh+7jz8EtRX{E&kvF3# znWkP^2YXhpw)*|f?mfZ7Xq?4BQmWbDrK!uVfy|nphG*GLE$zM^jxLA;)*mZkJOmAr z^mTP&F;iH2|Jk0y=MO#R{q19yMGqhQFls3h+}OTBI)8?Cg?t~%ED6fC5UJ75#!?L6 z9Wu=$(ZKB8{D4<#-idsrAfPwt@c`dIT3%3CZ=uKtphP}9*qvRBee@E}uF(#x(l~z; z!zC%tXI7qkmuGx^HxtBo#V6Wkd>NT0o&*xGrkzqR)|{exzN8qv#1@Q1vy zjS%+33V+SayKDTXk?ML12g^hgD-mNJjK)?I7Z7|->LLNo>y7o^QuB)BAL1%Qk%|P! zC9jKboxsyT2gEZh?*`Bd!$CitJ5h#s(xP&ih3%y^8#$I*XiwLY5;X2G5+2orjovev zEc2c%KpO;L)-w0SWY!a(w=1OI+|x6qg8M<=3V*~d)D7q8ti@<=EMfRG$5W>Kwo_13 z@UqzSHbpVrO>o!J+V_5KPg0ZJI9NkK^KNlWX!SJ5q}jg7ORB&|4E&y1u-6{ASxkbp zfNXNxBk=P!j#SkjJHUMHL~FS)kt_xGWkPlDbUQuh6Gtpry2NFGT(8^>Hk89NGY`k( zV}Fccz(o|nRV1xeZe!aX_DYIhMx(<-sJlK*!*9OT>OcYiKLWG=L)7KtRD7ImRdZ@C zH?8oY_V4{|2^mSCyMR#~+C~M+UMsa3-vvlSB2aix4R=*23b@JAs7g93?#-ati!*c9JWMo|vkpnrkp zsJ%cPXQDzW=Zw8(m*<_o`2<cBgV6K{6pEm}Y53VnG-;%3k zAF!8+uAD&GM840_vI=Lu1ori3sU{*BJYzr(YC|wA$00+a$_e!Z1ET$r)G5Zcd-bm1 zWknySaIf+40y(w|sJ9!YJcqC)Dk_+$a}yM4HVLh~xff+v zjj6@5!yZMp7zmL{els8Xc+axZSyW|^dmQf<&-cAzc4 z%UD70J&~Z_r1CFBNFmUZSL6ZO<`}#glhw(czUsh7l!7+IAJazo`k57aVIk`iv&=ZN(n9@|<008`0{>*KJAV?id*E(3pI15* zU+-c=ZU_}@V%?kGR=1ttu>5Q^*gpzZKGOorGR6thy8p*q{&goTtmy2G zYQc)Vc7)bQ!0e=*zaU%ITRLxF$&DSl1LQlCYXBktm841- z*Ej+Q64uet4+w}y5@GQik;eh(fik1_qvqYMP@#Rj;O`-nL6ynBrQQo579S~pOIbGY*sB|quF<}h( z$=3o0hv95;qkotuLp!bzl{9!Xva1L?Mo`119O859ul5mBY7#g_T2|OpVjyY`#w`=_$l{|ugVL`LaMyq)%G&LO3()=Pvd&<f3cFKw;ieWDD-b4*V!TpFl0fk+Ep5n|3F?OFj21s+Q>mk_)mM|NP5D;(=Q9wF3$^*3lW<2;zf@Jspi(}ID|86@6?npC`vvUf^p^f zd);sMLR_%;x&@o_MNt0713y?2SyujU#77gBFkw!OL6`aZkHwGn#znG+A4mos-huZ+ z#vh@r%ek4C)7I{9Z~lAS4+_I~lVJ12AEFmvGJj4`Rt_S~6Cm@z#iUiiaT22iV~fv| zKUWK}O&6NC%C=S`=Fy1g*;dXB*@*0 zg2gCR{>5>?+|Nx$bZ?yw;S5n=Eq3-hp+exw0N>V%sE=TKltRh?-CyLvbp&Vrh{La< z1%JSn78Qn8t*Rw&jU2T)qNpbGxPu?7whQR`S_ZCW7cMT*>(h^Yd9kKfMMGhTI3VLt z)oyvTqw2ctAJs^?_1hz?vPydXIH7(Yce8Y0d$!@V&`n|86*MiBa{f6MTYqatJ=Vr4|L|MjrgyI5o{SXS`=!UN5yy7X z5)xc(d?(aPVM-rfnp@(Y_V5*)>+1u#LacHW?Ckaa+eZ*!d~4}EZyjeKiSPnIOZRv= zcD~(B&R`0a?{Y^NZksk0P8lT?&qvfFmvQkzS+rXj+6L+=bBZ}@T z8VLQAwwTa-X=&jn0tulrd>Aa+uVEf@01}|y86qgso#YN z?_n70?E^2q6FW8OP(dV~mVeNB1}>ba5HA6=%YO`Y_{>mm(Q~&8#5{BGqG!smHTgX7 zFEJOodA@DGMiT)}x+C)(pAyce&fsW)Me?Gspid=EL_a1d1}wnr0OyF~2 zc(;Xooftu%sv+s3B8X)J$W9bqvIrIwaMT*8UFyO13sm8>)n*h`)qiReECYGoG`}h= z;&f!-hFNjyjLre&G&Y12VHu)Hbp?&oLDEd!AG;uy3H=lbm} zPr0MtlyxZDFk{~8_3yV^!0)v-!Cy!<)`TqkW&i3(TBNHwK`0Bif>GO)B$UMyj4H0|IbvT{bX@6e~{^ESA&n;g0Nhd5VZnGCQz% z{VgIzv020n9w)R+LhC7o!p-$GOi1U}g?Ta=p+q;{K0FJ+3IETx8yEm)b0{wH9oEeh zd-*}qekMstJV&q$%XN+=98`?S1E_mc6?Kf^JM9}xD4g#av;&d!qZEt|$y$*~ zPUC@ci50ef5qLXtfa3XUF?F#1iZ^vZR|LQ9u46M-?EU3Wm(+kWj8YYl;ce<*0Kn1n zWn94d%{4~RWT-nn&Dv~kr}oQ)y1C4l-7=aY(tk)b%E(D>f+;owG+kYyhQ=o?OE2#3 z13AUjDT;Y993LwJg8F`AiCW4R@cC>Vfx^tiP^}z`4g9d`qu3nTgHWcfG-{(OxD7s+ zE#^)VivSyjUuEL7f{L76f{TG&8d8X+iGo{H046MyGy%@hSg&H1Qv4gM_|vG%9o^jg zFn`_jD7UsXZ^gv#`p(F0jK~NZO{3Ut@)ASFM5j>F9d!+=jQgC12XmgsM?l3sUth2U ztqks_O&zeljBb3&v%-Y@`Z~0DxZ38;$1jDu^v!>S^w>lmB`hJUWa?}UiOz(mtiCKoxR6M5a23VImPJh^od ztaA%Ph(N-4qGtcGOaR&-6_r05&EHRySm!jntsVeS`^a18E6pJ4k{npAZkE@GoY=`; z9s4?WWG+!DrbyQrG2-*L>&Py?CYSC{nOM)G6riv8gLTh$@tiB`h!q{n!(PTF&wm8@ z>EF(=Wy-|+b>Pq-W5Jlx)8Ai~Odh!IIBlkdWTW8S;{%+E>ngz&X3<_e2?Lj1Iz9eE zRy5TQol^^1M8kWqQzU$7>5E7qGOF(lW4Vu2HQZU;BoS*TH?wxnUrW!tuZez`5Jy4& zg4M##4(q(n?z*n{!e0;x8LHt_|9_2+I8S?DnHT}`k%_P-Qee97djA7tuEsAuodM~~ zgw{JB-i;}um7&>OaIpmnioLrIqV4+znQObp7b3q7V8HSszmrT+#ztJ!|S zx;X}VTq{qXVDo9f8CafgGgiZzT*TvMXMIcvaoLL=zo!V+a38)X0|_mvz<&&i4Vay; zGEAFZ!xBQV_Z-N$eSENs^#+Iq&+lPc4e$}4k1mczlus93eF1~YpBa|Wf7hWfa;B_r z9YL=?r_t|geE5W6@EM{Qh=I5Lyg4YwvlM-QNo+|NPXBcIh^J+@A#?#onVbjES^?Lv zga1f+cwk+AdtpCRhj}H*xpjP0=elTCXueb40;g`vR&BAN*uLUYui8eksu9vN+y7ik!#B zeHua7x#N+e~mjW&$5FBR6O|8 zs#?+S_^D>>&o%khdZ$gL{cqtm0C$j{AFC;p>n&?2hd~2YqcPnp)qQU! z#103MmM+y@SggsTWZ7@jf>XAYN^nls4XMFF4~4sy-X&?c(B&k}a>wY`9X(=Jnn}^| zvRn4r`QL>I(h6VbaZ2ddW!cnT^ALZT%mw$SEgknCS3I5K?tby%~NX7L29^9#PMlnqTrC6vp^C^G<Oi_HEy!Sn`OX)%%2ZJuTC`&qW@YSUoi_9GZqk^ z;t@tdU5`I^#b;0}Y`9O_5yM0J)m20cQqZv>31cQ^T1GWVNCQ1Z5qDf%wOK~<!-MBuq`>nR+%X77Z0_%yG`}_MQu}o~2$2e#tsYZZfXa?`rNs zoPfUw!~Xz{8hw0HYFuP~F2<#hDQ!JW?=_67lA3?Uxk-4n=Qdy%S2ljRL`XLcsTJjF zv7-0G);|G;5Q^U51}_E-INDQDu_WTf-9@#JMu|@Fzh*_3(jVf=#&Hl(qUZZ=us6Jc z@#VA!dYP2@Ff=ptFTBz44ALP?*x9GE{HYU?ha(Hdc{&-%&)-!EDDvsygB*(Z80ROblj@$*e0X7(9MZ~X zu5^+?f5V3%QnxWnDa`ePLna7FZ8oD#D%xwig{^kK7Irx*3$gl;sTPf z%WZdh{6?qa1Ii=S!bdogYutZhM+tz{`i-p ze$Jc`7xttw2y2H7z>FKMQUs%1_wI~KP(Hmp@75j5i}kIS2i9W4^N4I5pmV~WLH_c z9c5E8We)Lt$pW;o<>m2f406k!*eSW(jolWS{ zDBPi<2?_3TAHtkS7UAh9Ohd&)TR0=@yhuamv1A@!n zFgpauc8k|2&Rq6B{<=XL1BZoa&yL1f5R8lqFS8nqEkz7cZ(7w7-@5>wVkR*A`ltJulr3zR}3>1==Nf9psS`fn8Z7xy)8SuqZ}(YxjClcaw`ehGxl$PUnM4!o|l{J1ayOivOQI6J+$UVJFs3_|6%Mb0!2uDYHb@hX zVi_EN=$6gb66)PVm1m1RrBeF6PrGE2uFzlx%=wEMHBoV-zL^r%mzsk{!|XN8)*V$A z{A&OWW%$N>AlHQ??k^!pHQjcwgtlW2w^n|oOE{V@Ew=72Yc@GpIQQ2>lV$d^DP4RLtldje3AC4XICr8WV8=8FX0 zwO87*RPU7T{!A|qb(%jLz-Y67#g;2MZc)xQEN67!?&}he>|M)*ULP*1JC_Ee0DM@twZl`DDzc#R9o)1JJ@gN} z%acL`!Z5RFr{z1c416m&F9g6BrEbZ8fAGs|mLAfM4@_X?RsxXzx2gFCgb3sF8dfR^ zX)+rKiJes`BVZlqJz~Mth0L>0?&2c>VPp}H5Ju{x^ImA>bsVuQAaR^A;C4!IcR*D}9d=nKg8zo-`2&rAkE*o0 zy{{-eND>4_>+V#y{|>r{mOG{|LpS@YIuBx{YDjKO5OMQz5{n=(BD^mo@s9;^BlJx2 zp9=4rOog`xBE$FLezl-`MvmlpweM@6%c&P2{whW!hbm~}&s42pp*9X34llx+7e}oD zwss0W;mQ4y#o*q{Lau8>%$*K@7GJ@OSd|w^ph6!|({w3GJMZ#%&y&kc8n&{2lzGv-emQICm|$L zQk_eUZ0>`(}%O)}i(vrhtrBL5Fsd!bpxa z57_7qvE)VyFpfnQEqOZmcy+Amy*h7*F>8jwL|HF)?s|yR6(WLI!EdtMM+BxW>OaM+@DJ z!aCUNu`(LFE|f-VqBF%cd0;JusUCZyOM=pU48)$BW0Dnmv$bC^)^RNL!U}+3Nj3u3+b*SHvKzWO)Zs+`qjj5ouEt zHahO5rM6ejM&ENy?*HnX9;^Nx8Fn|755;SLH8rbj#r0*r0z;607`Y#6(Ax6X9%iCf zC_L^x{}p#)vC1l5wU$-uU636IIWpdMEHW#rdLGX==hg_M zf`=}o{-kHn4(ULwFSJksS@T9hEf=pj{~Cg)Jnx#&+#|1mS|jB{V3tTnsG{REp7jqw zNUI+<$uVA9JK$7PEiYbTwtiFC5)BA{T)sT|2jaLUQY!W=oFT){MB1Do5-x@(CC*DG zU>1u}k21tqP{|C3Sc*~LnP)-{yDb>{?_t_7VSEV8)_HdF&8P}ExP!)0IF*iHm z620F1BU(sb75Nk)yG|f&oClcMTp3fxzDiQtXNHYsc6yqz?BJ7u{S-mGT5sfk5iTsX z9`5K~Kt)Y|cOkPG39(?lelA@2g#Y9%hH9%8^|z-AUo-BMJ<)=*TY{W9)qc*S1;+GCaX@-WBu-P1Z!&~LhY+Vy`~imv+Mz!O^aknv zI}+_C)Lt15hgmv*yabGHrY2P}0yR67LpoD{4S12Ka)HMr){o{?!BM(4 zRK*Qy^F+&mW9&iPX~iS+$Nio|CI{;waZ7l*qje=fiaG6zlh{?SCxh%uH9Il|1EMf? zY>}=)I$l=Iy=6GwT)1zEdcpE7?Fg?^^1Vl?OnR>=EgkpgObS|W*+gQ0pVg`A!SFrX zFPLlgn}RVG#3VH_;H(iB%jJ7FrAUtq?`@3^SB&(!2}H+(D;813rEPO|` z1nJH^1OJr&s8}gP`aeFlN^f+vSvJPEn>B1e6@w5uONpYVlc~{vnj#_ldVZGP#0y;=bS=WF{;ax4w;)}GdeKIK#NpZ6dj0>9*IKJcEp2$^y`ZF{b=Hwd7?%3;{toV4k2**$&C8qgCs^qW8hN8xI zkd2L(T(PHSmWO?$P1l*cu56jS@?aE5%E|L~n>qjIgt5Ny8BV5?n=6si4tAPBu4B9}*?1nA0y6LZ^}dh8TWtW!!}&hKNm9CE)n`YX-u46zOrYb@soCG8Pc~Z!{g6@@P0k-OY-3JtR3uB~e*66NX zrhzm^^aCQIFSJ0g?wfGL+h0nC-f#`tbfoI(bq(p4$n$E;D^ua1E9*wdTE>&q%{c2} zkr=mziZ7mjiS69q7g{`BA}&3m6H93j4kSp#HGCD+mi?RB_i09!nnU-Bg4f*kT+F(r zRX6tWQ7?;};e|E^p8AGc;4RJqB(EfnJfh|Vg{e^kD4?^n(kmhF9Fi8@jznSWc*PHT z2?!^Lg)3yD)b$OfcrG=|gHXV9+@Z^hq<9Uh8Nl#=fE@Sc_u^Rlsi6ha%jtl|h&9Q( zh%Bb%EG>MZzfR!ARKPE$;7~>|M_AbYGURvIZe+A>&Wd-Ll9~;>;8r<)f%9376ZUaE zEM`|XF@2<+k(}@4&hg{%k7DPgcm;~FZ9w(Z@IOm7EHOh4NjwQl>TdhDQ!~nQnPfx0 z>WsdBEi58&PN4%hLs3I?ri>TMstr)KT5-KQ>`Ox$GH%EUq!d{?&i5%$i~;H#t;)re@%>v{gV8p|Ho9MlM5w`ko)go5ZT9xWhX_xhE!iZd@ZXt# z@b0k(P>~e>74%lka+{gDH=r7kdpulOXCPVnDkTZp`Ja7#wi(48|+)|SSI6~<~ht@;b(2bLjrXZB-${r#F>5f*kAp=QB`>E z%Ur;`R>LqjhOu$5;)BkqjN)M!xuAxBWqgkQMuO98CL8G0y_PvOr^dE=XVoXTSM#jC z62V%~o|Ja=KD6hLN(-{Nykd;;_yVY@_(}ooV^bGP7 zj}yQ)k7ledi8{r3)0NJ}CjqmOuC#bwD5%s5zV%ujrwQRIh`=zBAsE@dm5Z0JMY^OB zB{!TKMHzTT<`{^NRiF0g8==5|RVkJX3gFtQ=bvsl)Go3e8JOI@*+(g1x7$r@xHq&) zioyX>bGb(b$0Pp(3FGt^iT|eJEfv3%NHgMK72V~y+9+FXT)>i(@&gV|km~Jc0%Jm<22F%%iv0I`X*b_IZ z(nXK%V8adLkujSJb#N~*D zja(f$RU*6b@F}s|0fHNE#6bZiHX*njjcmVCw=Ak@%{+r?C>nTwXqCoGxt)y2I(A+a zOXZ4SOoUd@m0nW*zUKw6hj+IJqVBGim3)*iKa&F?QuON=qRvDs)Iy?AL~ny#c-6I` z>v8hzt^KNbrW|sW)#PB0s6M=;j@E(Tpb{4_#s zFs!vVO^pj7&L{kTq-XwDgIr4Br78Bj8x zw+5%J0pwG|>!;!+{`-H5c}>Wdx#dp1ZCL1kBNi0(wPd{~k3{Tq%^?2`fLS2AW&f=| z2J*0@1*I-n91U54jfrH-ot2NFYEa%SeAuI7TO+B!NTS^cT!>oNsZRr6u+9#SMx`I zUd&Pb*!A0mx_V4%n?sVBA~Ll29dDyd+%&_CkhR*`ua6{QO2rH1#|FuW^7D@A#;Kaz zb$=diyxFUzC^x;cgIUL@3|w?M zmD>0({7sZ`$T|Hg6IU!;qC6RyvKOe7c&+j>ivBsX^Fyjb?k27K)E+rxk5l}95O2e~F-j6kzTY-DI!LkQe|RdYX(|9*-NjK_ zhiJp%EQ1VE<}JWK=P4=-ywUeX zMtk(r0HWCy;(haQ6bkOVt(7UOGuRoMF0M;zXZ+%F7!x*-AyL+-&Z%L4K>7O#-_51{ z5VOKCy=l?mzF-5Hi`;@F74Yxmj4^3~MdyKLU4@!5dMu&WhPDjpW?Bfjb@iEk=ZlcM zi+j57u40Xc+6ihSF|>7c+RlMN1(;@S)%>_Pn%Hx2 zvnvAnIe&A|yYJ>be8E3E0-M-_3eLtF{hy-^;yXG|_lIv3G2H)4Y9ZLwY!!yy=ZMwL zWf^z@=_np)-MpT(T~ps-5aBSX{rdkF_!mt361bS zYLv5}>eohI>3Wx}3`_xeqF)sQp};+d+VPNRjeFw<4Zyp|r^{QEmDK_;R6FQ5n&ks`Phoy}k?Vo6e%89^Sd4rxHh=54jmBvaQ zy$fwxbnjg$ITC(<==4g`HP?l0BptM}6fF8mege`3w3=F)+bOGX++NyTXnPl*yi*1| z@nx2Cf|y}AA7}>Wo4~8JnHe{t6igE1=Qc6r&RZ)~t$q8NOJs9ZapTp*YIX(H6nbM& zM7eJnqq1ujbnHr(8S|~@-%5T|_44Ejf{R0sP>9ki_9cpcNOBik`+C^*Ybt`DuK)o_ z_g4nDzG0wmrC!!CJ3MZ-ZeeJ}rL~mg48zwnniCcDI!mKupiMlb7nXuZN~ejer}DA& z&UPcn)%FLaRwp7wW;DMyAx{(LeyCuJ7qnSTj#t(y4m>%Ut)TVH|<_S z&~yTz3>1$q!&4Y!mksIvxhl-beSTj9l)m@DLWFQw#qA81O20aLCBC-Bp9f1*EgyB< zdv#z)uvsa{QWPCk8AL?s*2FiXC8zz9uXgKW2>n2V*_YjBIccBMD5?MH z_~UG4RPDvexh+yy4PfqKH_6!E5ORrPPEo6Y_H(lv7a^`|r~o$*R6HViilJ|886Qa% z-m`Llr=N&HH}@Sql!j+ZZ}CV#_w}oq%7xM&xEVZB?dXjdp)rT!YI4}`Da0QoQ=mSK zxr2#)`ErS$L~APGlf;NSX*k*225+j00wn&9 zLyagld?&fySBfA4E$58=Ea3)fOJSBe30xw7!nItzZ(z#x@*%PINV-duUdDm6h7~tz zgo!x$c3{6i)iulSL6YgCod~Yih&{_+|0FU7??u|8$5_r1^~2S_TM?J^7KT`BFY96IZ!_%0U$vKiWxDsqN2@ zC)#}B>0`5g1@(!HUhpzTuA?dHpPFq_v+BYstY$JfsD7Dr*x#p|E~W&sL_%_WS6p^e zQe*$^x{AmY2~s0U@?t?7+9~?Lr5C1u3DR2QrJuQ-lhNN}8lY*O(F!E;Ns>rrT#sMD z$DK;=s*%Q-|ND?$0Zz{^mKT@g^SUmN_T~AGE+498Ys=<%(^DqPCGk-8Epf6Cf2je*mDIXA*Y zTN46O*$xH4{lWRaIplr6dW{~>6ERgwRezAa_LPlmvbI9r?;+0#r3IUe88L8x-CCD6 zPdqNTWB#vF-AT>824LEy{;KP$$(l$GeW8*n=R@`d#P?G1<8mJlCi;6_TbXp3hFU>U z&21k?6*tVfc}^-$gKz7JSDr0@Ro}QYKrjlZnXwmN5co{=tTzx$8LzL^lL`|of|cm? zAs4B^=ET}9_~v{ev;SGkG)ttvFyihPV;uuE;B?(e5MV#pPuPFu-~uEV9=3<3io17U z-`dftmq-ximxzYvdmwfmLY_%VlN-(zj~W*rg0uqXUR(1I2#dmk3!g84u;dPjvlUUB ztT}=I$@f}q#&R^VM7ziV2SJvP)si-|VdZt$c|looSj}J*l()((yl^1rCN9A%{vbv$ z%}3+1luAX57{m$r__-I3W7Zzk)VMTnPunlz5T4l2Lt@H7DvM&B-%K93E@Xf_AUS!N zd!^QK2Nwf~51qIH1#NAAGxh}~0Z#sXfe;dq_zAA8R*r`Quyk5;O`=vWZSpnhVH%Nt zMUXtF5yr~q63&~glWc<+Ly>hAKK(s4HJd??!-x^N>oO4FqR~Qd<~3ocs&g!(gfTsR zK+@AcdGn|iZi>POI5n+Q5jbf~qj@{16aZYq^@SVE=c2i`TgaseqoTdN8OL zAsz)NKW$9Dk)gMWb_dyCS_sTJ)|0!&`?$iKIR%E}?rylNqO>F4|9ca_m4aN$)NAn>L_-5{F1wKC^1Jj5YdYfxzTJKN4xo;?CqaS4xJN;jD+<@iqjtfpeId zqCAdpUi;2coLUjFvdXedgG060cwbEAmI;LhRKr>N(ejbDK{HlAof6s#wD&d5)cNaL z+ra~xiY7gR+j)=iR{5vNY`)PVI!ww#6@k0D;bjd8=~xwiA`Y(H&R|)w4GDJP;Y+Mw z34$J+sEmqu)rC9~$2L&4)puA_5wlT*@BKkTcGTuX{e1Zo((j1yJ63k4FZ*(F9~IS? zhYl$R#H^G7mVZ&%*nXQ<9v_IltO2RBJ{+z~G)(!@ulaJE*~4p|FK0LKI}t4Ut;ZpQkTUR0kTJ*L zO#n&v#;e!Pmz>e(Vrp8N+1tq|{O0%L^Vo4h@=f%R1yROTn*(M3Y1YX~vBm5`ctWo{0P@`s3Qt#m zEJuyz`*JWgXEtcFmlOL+>qQbsE^skPVact&(y0K13dw+RY~x`gS=Z6Cp1PI8y)h19 zGtpFm3V6~kO>by;K3_AdLo3M04g(3|&aW-H>2d7Elx|x~ehk6DN%vRbC-eqG-pFY2 zHGk~eSR2|OkOsd=x^gzDYk}H_qP+lra+wyw-9bL6WOef=rAL#i?UxKdfp~?Q^bo<+ z>$;*_KbMWPAJD2bqT;T?t( zg8XMeG^F1Gh%bIbo?2hHx2S4Stzx=zGq`;A??3)_V4?PlxA63Vb~IQWd;^7y&_4h-BH{ zX<)51*lS#GS@M&^cQ-Jt#XUfGLwk#y{(NaP;U(w7=SiRa)s%yh=)IV%vMl-!4aPY; zwL``czppjEZS{6--GPoj4-)$KqD*g^>o}fuFZhpQ^oc9qO6hJC!nK2mx+BT3#klwo`Nxm>!%o% zU9pYhK~g{Jyl=)x$!pk)t5T(3y84Gy+}`Zje&x~rwLB^q$}GKq1}#?J7xmI&gM!AY z`*W15Gm%Kc0lg-pjJLx>6QCkm`pg>qZ&YH0v=nf_u)xXwzv*dH$6#||$}f~y51-vS1JPkm-l(b9dI zqpH^Z(3>NKi*pD$$1{Ff;2%P)#l8Oyd|=6AdM<7VjFr zS79C%e#Rqz(A9e$*NmusrL2;qmB$M6cnG~v{m%A0-^que{)?-nfvF;aIIHs}ZQ5gj zb6Yh>074T4C!GQPR|;Oyx_+ZL>*?15g?4}DDT0l`#R@cv4Zp#U2m)ZZ_h7ezpj-BJ zFS@N*(A<@H6FIw`#soCrhxV%zcrA0idC2(%NzML$?9{9j^I95|=l#!^r->lL^(9+> zp8Xt9*7!(0cp+2COYhfb^Pp$)9cA0Bm`>o9)imJE5V{I+hT+n-YW=&#^HG4xLGiNQ zIDRt&w_M=UB@NWIv#~qpk_%uT)ZwCejNT0B8 zTBp#-hrQzJ@q$R+HmdJMwbFP}l=ADu}tGJyA97lU-z(lBKF+57sN_z{lRuzss7M$Ku|0dHL$>9%Q%m&eiE6khp^k5Qj6t zZ8}Ix0jVs?=eNg94wbxVgyR%1ck69qLWKa<|> zZVe@5+R4Y6j+xm4Cc3-eIRX}=o+4L&slN(m2eQKm_BxNZ=5(hyMmS%ID4SpmFxRSk zMgeZ#ONH{s0}+PCZF7Q#(C>eac0tJsJ4w~ z;Bv}J16zbPc%8t?fc4<&0vrk;zqw}+`P*Nvi4uxjC0;fJfCzJjgtU?td%O~VD1KPk zpsK*}ZHiozop2Py<%6GilT7y7`4eOCyXbZg+Pi5UOad2v#zmp0iJ&tG^we5QDB?wpOae~8pq(oOmmURFj@6Z z_`R|ZevFfVXF7a3HmBdFAWw*Ym1Oi-ew`v9S_gL5IGz-TCQjamVx(|` z>A7+=q4GW}5+&y@D})&fs76B9rn(48#biSdVS*qtEPK)IS{7sz{aBEiX! z)}PJo4IUYgx#`Mby0NCnt7N`^pYv)OpeNxS zoE8Bcx9BadN5%Z=YMUju$Rvk9hW}Ur=BZStIk*7j)){E_fwp6PO6Ej zMPZCa(OE_M@f74*+_xlT?+5ZS0?Id0HXetix}6jfgI4roPm)jB zuC3QCMN37{J0J=&3sup?mf|TYwE|xN7r>`e+)}sv=fzX+ax!#27P97m{L8O;P2w%< zyD~V!szo29E)1bUuO#Vg!Emo7!k?f!6mrZy`jkeFU5?N4yP7P2Ed5)=^ZZ4Un!5h9 z25RSDwD=nwoLk-E-QTp$&=TftiX&{)W8ZMTF~@4XApEovkT@Tw-8q0ueKK#*uqvJL zSu2XJ3OF2HH;aLUt9e%e?E;)glgnz)q<#a)XID=FR#Vu=%t8OP7!TzI?$F4cY!}N+ ziYiTnLI%LBRqT*|ATYP6rMR6vNRUtMfq{$s21;^9<_`u}=QR?V$&6s0i~2s?$Pk8G zo@9OE*|*Xkb3A{3DzjfT>N^c9}5| zrD%v3YyU6W!8#gsgtD zQ7suh|Jo>jv8%Rr>Qd@Rdg+N20qSvl9Op^7ksNj|e{0EhEB2d^!y zh0HtE_C_bgrK+mavPNofO#GljBJ~>{5z_=<-#8-dBr{;;ZIb!gQ0nLTML2)rE|B9P z_1_(-tL-GruprIhd$nu6R$CLCcGaPq0J3cK<3(sCOV>tsc1A3eRF^{ok+g5w{aDuB zkBFOp0(d|rgT@S=H`Rm4Fl|xmVf~tM~YxkyXKZ@&I>W!^=hxM+$jsAPqltfXf zp}XW9m?T2Xx*w-9jmaQH&Y|~B-&Ki4Ysry+xYtY!!i3vWt?)z&bV=-jQ6CV9)Kv&-IXh()2_95s9|TR}1`A|fH4Y1U{&R|d zF9D~W6^V&)Evh5w5&c)MRB}+YG0mB|OuZZ#l+IAI zrtY}qsnK3-bX#A$+&NSWt$zjqQsToZ8( z(yfM23Uy`k6h{3p&r#jtMOUqoyw=TslBCL4Xm>#8kDfEdwchQ#XpUB0qv2NP-gz${ z*z|XL9&TA3AB@yvsXFoos3z%4b8(2G<}hWi6eyc23Ld`Oz>QKsmcak=c9dWOCJH{} z*XlF}hmtOvWE-(dmz@?jNW>?!J5hhNYnhI9rpS8aE0v1adzu6wIXe4>7nBrcc+w7)aJkBrsGh$2 zR)`P0^4bo_)gb6}9o$A$nS_Xc5}s}yO3AAP40Y?Sc;K>-2(Y4xtV(G80u|MFse&~~ zsf&g2z?$Cn_zGUO-@YI9Oc=#T)!!)zSTTk?u{nWB?cN0#-8p>R2NOJ++=k!p%ni#v znZ_qHl)`wER;9G6UF}dY@ls8UAQHj}yNPXM$u>F__&dhImgXMvwsM+(P3ymO`a#i@ z32~pdG)p$20&Y54x6}gR4E;0x$lsF`To7Ke;u2UOV}`7f2bdy@N|5_G4fsP2!(vVo ziSgb#sU;B6Jq?+udpF6Z)7|*)STI+H3|YtKYBu^ z(=armRYI$u%6ivAoKj$br?n>^47C*;S!Z~@+BQyL9{uCb{P^%#!_85j0e`t!Y{-5p z`Ypw9?-@%2cH^lasc}w{3L#2u=s~pPItIllBBkH#VdkNcBB57*;Qr#Hg=AkY?(RwE z;acqcu6A3&Lgk5kV=BrC{0bSxmMlVw`m=+P^6J~x_rVj62Q*jjcN!@6;vjIY6;0r;Dn^{x1HJH_Ga@2%Gf{bHC3W47O8WS!*Nu?PWCIYp zuw{|iz#7C~hq5+*;i9%?9Fet8v->%?_qQI877jw^JlGRi>k@R7>%mmFoFMFmgW&gB{KRXF}#I@|1RszfS(gna(*ifRI5{OVC&F(t{E>Oq`Q?$adm5a9DbGOm!J;JwS zFSh>!`t`^?c(o>BkEwb;BCbo_!0c^PN1E`c1I|eTXL`SFfu*-Vj@t**T~OHIQ(Lri zouReHBxit!nvg*Pg8{SR6Ne>K8{UO!@}4$-BX5h1rT0);bYqJZ;O6GMfs%8I)%T-4 z8(-B0R0NW7vtVTvH(57WtzcDe|5*M-b3j$7rcLyYPWy~4T&%j)^=OwU|4r};Ay4PO z1MYl?%jpQb7?Eri_T&`A$Y~&l!;jJ|33R$Nc6rNLGS8EdzRQ9e#{p<%TJbM!J2VJ? zSTd$tOU$N+@N%pKT4bGqMyeV-|F@9Xd|ZAizwF#5c%26b7wh{g-?=JFCMeJ?;sa%s zF`+ZzCLlN@AQg;!;JTCt3iN2jOaL+f}PBfD%o;o-Yin zg;Jk6!lFrd)fY||PTTaK1LGxwKPnt9XhM`x&=9p1`e$Ak| zC8QG#9-+IpNB~DT zdw}K=;CvY>RQ!KeI|IE8RV*ks;j3@cS$2Gf3b54o&Lkn4euf4Dm-@DUI|M1Y^6YU9 zKRi&Yo$_jU%Ev<{AvXOt4Q61pC3Wh+wno0@vF;ZO2MXZp)W)>5)Sz|@g*8blTN>CJ zONJ021@^|m-aOEsVOJ5(1`5U9qzNB2<5uX;j)x*??**_zI=KH(L?Z?*-Dxw?4QGG% z&%h|qcdX2+gAux!Oe0Z$02D=@XaoJZDk%sV0OY;`M{9?2Q21lG656g#C@&|5I0zH{ z@zoo9hZj}LTCCRnwRg`fsV?5X56N1Ds*tCzG})c$QERl^YM_L{aB89mUYmXx7M*C- z$InV@5rHcwn8Vfnn{jmFK>%jilr(x^oX^LmWD|*-9@0(*X0|wgITXI;_?A{l1|eo& zVza_s>eHUO;04b4rptL=(FGiuE_Wr-S7t z9bIzpBz>FG{BWH9pgX&Te+T0RRL5#J(Aw#yZdMG)Y^1u_CkXsTZ~KCz_aKkrs1JYN z!M}*{QR%!-;hJ`TQDPa{%+K@9wWPvBfzR@%2KRa9xpM@fsLr()!ht0u-8_^#f3Vv1 z*@34UH`)x)FRpBT2Nb@F4iJe3opDIAU)mVoZ)1rsq%i27? z0gRpQ@AHlDIX_^{vJ$Fn4tCKbw+sw%$+6N>cj{&E{HS{zNFTHK)g`4kM(N^*)W;(TQ<`N7?9h9g}$u=IEkghFGLTc{J#|i^TQs2 zniq4vs}-SqywqrVPoW*Q5{CETvL#iwFp8{P z2v3k$;!1AHpsoe7hK35`5Z;Aa#Gfwng-y72fb4V8e>0`iS0A1Zvb}xDf$BpZdv5?| z2s}&}F5NISp5f^i80tvTVUMP}g4(dERJamhka9}iNsn~_3Yh`hg!==SR?5Y zxDt{|f25DY+&MsCodbwL!?G3dCKWwbNJ5>op-HLetXk-QmhZExHaP8MrHdLG*#$OS`~xVhD+(NIq{VGePF3`^%>MI_Lm5?dp9 zf0rMnuf7wY(K0O~BX|Vw)_pZo$*TksroAeWzekRa7Fd@ELSN9q7j+JX8q`5tc4gI) zxe|VG{}MfPtj!%Lrn3wN@}l|(r|aRxP!IlZuoIv~Zeh-@r(?9wI*acf1nVNI%Qt3} zsm!qTlMbaJdEsfp57Alp(jWD#Vbo*vf1&dO*Dy?sFqyVebc7E)T0I_19ZP*le9D_!UDTU`JzokK`b(_Ty15kIqp}Lc#v;VeR;7;F*QcD$Y~0j2T|s-J3-kcM#hkS#r4OH8-d-7I5$I^n$n4yB&8r8k}k>(ubBD;>0A6e==!y zBvmg?yp6A8!5c$^Wp!8=&!LpIX^_k5k{7jyS#Pa<%>y}cfu`{It(RFfo2Y_@-OIhV zA+233I?466-1%)qh0xMDJFz6<-OID`L-}+WCkhv?ZJoQ-VDQkC^~AHwZ^5=dJzy#2 z=@;}P-(uf_lW4w7dp9PUZs>N6e{QGU-WuJ(C~#iM64OLJc_tj*YMbabRKjQyLR8Cr zLfsLcXR5MxPKL?bw>Yzrh|M@ltqMHh%1ndkUd-D0(6rY^JK8K=&Yx5R-?T~r_yfr# zO0&Ep-KPIHq}D%u(KEtT3JS5QB#_e&Qb=pRGcO5DJBPk+&)SP6<{!mXe@@Jek<8JM!;3yAiQht`^E`UUSlAuE@U=9dv><-UZ38Jp#rZd{WoCw!*O z<^3Dac@iXHA;drg<}w+jr0#n8#UV0q0w#d4y^!7N@`fKj`>f;AoZHq5Qm-Ag zDn6#e8Zpp>i&`X9$N9=f{{3)A)Lm#tP7T)kdy&Jae#1=D|@Bxgp|`6W`H3{Sf#3#-ajo^u{K7^aE_B*3r7~OX`f?rCqbZxAAYbOY3V68gUt`NzGsI60BN=EOs7df4bIp8i4|3^_0j*?*VcM zYC*WToO^h`I~+$UHQ#>V zN<8l)u-s(TO)veXGxfqfqo2cOw*RFwTePI52zNJ>g@#f<8S>)dn9O*m%@)NLIIsk^L2cX}@AljI5w-n1>#(g`1-UsC6Ea-#yu~3uS zNKi;@K=$siF-lQWK%XjBs|1bQ(F!pQS091@nCYjEHKAKWi6T+K zf9ezya6>FO9TDgcnv&n;?Pv#X$*dw3zd((WHJ~YxXWm<4;G4N&2%ANFK1Zf)!JpLb zJlvZaTlK#{3suD!%kOfVpkAkYc!?LR6s^ZK`fFV60KeFP6(&ShOeOl!#%YL5aC;(% z0jB<6wK-!x0e@#2z(_=1$CI?ley^M4f0l{(nH*h5N7%O81TMmI$+KGhfKvtxIo*Ia z13)S0*Vr1I=$d%U{6R^Ko5vUw`T=DEG-TZN z?F{i#uMWdyOwjlL^g-40A?)e!-5VBfF)rad)2luCYI<80|BzA6$X@UAz>@Ehe^(%V z%bbr5g)82Yj7ZqJnp?o%n(fv{njrZ;r&1j+v<+|N;tg$222^xizhXzOL(MY-;@qa1 zb5Qw5HW&dS02_ioQdMYLcF4pbn-~deo<61%L_vX0La~pG-?8qh75?H3F;qLXNgWID zg=P`F$^;;i#H{5FBL+|CI@O0He@h~epE-i~)neBpaQ$QAgsH}fMR%!9-xu$oF6Vgh zKACA|o+uQ4(~I8qggd(+dJ&-)L8?oj$`P{`-lGGm2$H+kCc!;(3i4ZZ(;ol71AD?R zBbaLvvKpjMno_pCTJ=-iFO~Tq6fYt{p6G%8C&U0n%*Y!Pacx$m_^O&282n zX?NmV*5I)Y!_U8Yt9{&De?B5i$~Z z*bPTU>{Pb0vlyS_?+`-MxN8l<<1Rb3avzOt{cde>|B(6@ zskJuHb4J7Y;JdfF=4J;Ob$;zzl_2E6$LKh_{{(8Zujhq4~2aef&Ogf z&}`?jqD!UeZ$)@oYfZppoc*AOcoO@4WNUg0|Kp12=T?yz!MNDrv*D^+lzLyAxBU#& zlkS-*FI->aw4F4R8xVe`&Jh>_Nk;op&s`e7FI+fu*a&_y?y?Rya`0-q%6e@{vhnt7fIEwdHfG@4AVK*9A$&Qt-cT}ftb(dr7ua*ZQnlx*~_ zzEr++(G_Vd!?-_2@|5lYA{E{pZ=FGpPWy>S%Ju|x6lTWv@&Z(NC7uty9UYQwQQg?T zf1{gD(k<$ti~m*Rq-yIf94!LOT%keX2V=2QugAWO{?b5zf6Qex#?QnV?Wm&8Wx=K` z$`jJz*1zI+hy78Te5X=;)+7d(7i0metGKN>RSseWM6!0Odl{6I+$RhnfsE%DSJqLK0nYMJ zH#Yjq_u>jaqy)VK3mh+DZ%FMjx{aAE;kv}hN(w%ou2aR0mSU|_F)Uvq3?P>g{M^z} zMu#r&v5GOm*_2S%x(WuJeVSdPRtkX(5mw+!eGUeze~V)`Q>{}NrRX5UXt%&)jPfm~ zw(ah+Ro`y^-`x1*?C98G?6QrH`pc&f7s~0gcg(udcU@07$hRi-CnC9WiWpa zn(HLCxZ5G_k`PVb%3kSuQ=qcA)%%w08^j~Oz%;wr>)^`pzy*As9uJeG<%tAr&IJXT z7(zN-r}R@R5!1xX$PNb4kJEycA!>Jwf&FDhz?iB(1W4eXJ@QLMNu|t?I?7JoX7`>T$!Zry zd`b-z76cp6Abk{ml0UhL#77MmPwc?(;iN#!pYcs(OZqeg*g=)oU`bN~>5&*pmP>U^ zvim|FscHPUs?W^@?0U2(|E&{%`K;MHe{XFRp-%=JW4T(PVy^@vw0T*E9nAVnUUjGM z%T~UGF)G!O>1G^$QEwtrbI-@CgYu0ZtR7EfC6vRA(;-qL!&SfCnvVjoA-7^7^8ImY zJg5+vG`AVpn1X_Q?;QMNW@P8TW(%O!Jiqai($2L2alh*db&({t}`WD|Z=jJM)`Vyy}d|{JO5_`d!EQQ^{#>vZ5pMPo^{ZaqL$o$ni#F<2E`{j;Wl#T&FW$PPAy zsk>wUc^d>j47swH1m=1(VKfZcf0@6L4O9(%bViUgoh^}+=?|cCGfh*n!wXO~CM}(k zGukY2l@@%M8q0tFiXnPl8A`G1gCBzgvX1Z#al3-w_`KHeRhVbgy??6e->e0cWx}Zs z2P+I4Yn{s>c^yJx*5GJ`Jr><-K`Ya+Km|c7b%zL{m0P_nQru>fu;`W9f3LE`qzSQa zc+*dBB@3r}d#=L$YsoVN7(=pDB8}d|Nvs1RSZYda_z6}NF_>HT&+>-D3Za?~@Im4F zgjQwVW^(4*Cn$ z(M?#(A%a5JFO}H$!$`T_f69&_RMcy0ZNc@?Mq)pXzc5*Nqalj?jwxRvCVGb zof|srh?sbFtJ`?Of7ZwsTkcn&u?P@;LEfm z>KqbJkfk>#T^6`_JAa%zQ@J*cWt zB;rRWnI@_t>=p#4Z8QLId!W17gmR#DLrFr$>f&rammMd?%c{`)r%7jfe~iZWRMN%I z_8`&cJD6S!<>D-J^(YGC>BN5&uMCZR-aDdpQMcgAWI|hH1BCsGVa+I1$d+va4n=PNk^48wZp3Wh%!c( zbt!2ZsK;SNcDDkR&bwKR&0GFP0LuF&AaUODD#6yI^2x!gquHZMRe%*uwkPIxK6Zm) zaEhLZO^=bof6Sb%!ZM|=Md2O7Lm7hcV{_!-`{ z#X2ULvjsdu^p(#9a+x6&=BK-oJLCr!Q3()l$5wl9>)53{X0H?i@<1~_;u!HN0&;!m zC+sYaDS!m!Fu{aqRdmx*MRM1xYVu7yKm(D(h|O&ye=&-+(--+eDYUbOQM4HKpI@?t zyJO*mUF&!~7=>_{XnY%IwiAc44m_4|zX~&2O!H2TFS$`v8`g)%WnCN;nR4-I1$(3z3`a1$FfTo$v{6MxtD8y{`&XyGR6pTjTOEtU^A#*EQBLrr#&=e4c*kh?@Kho2f3(o z$Vms}!T9WNrvVdOouRk_=vBNYMtwdF0C80Ze@s>3bAehfXG#XT=SUM>vU=X6koIjF z1f$ndlD6!6UUhV42}BK>7TCALC0#9@)4I3kG|-!2dLh1FoSclch_Z8$rxs>n>_aXN z`+;TRUVk(v5aTk{CKjDk3u$B1TIuI=Bw2v`n2zY{zy*8+USiK61@XvC%?sk1fkvGk ze~&yePVz_|mO*ObOEA>+X{!gKvj71Q?==KO*ULs1V5&otlv^j{=nZjgsU2|9J1P1_ z9EArsm(W@Wf4Kmq?YI7@Gx?FI)HS11T3{xA#WOu%LUiE5f)c?ZRM zH;c-d@y*GjCn9MZqgnFvt+?DjVly6Z$VRwY@0kh=$W@hf@Yt`3)h^&vlpe;LjO}pi zy>5t*48zW0<(hp1k#&IKJhF= z-=P?%hOX+wFl7|SvVUV1q!e?poA^pFie4agJ|*l~ga%rvWx2GAX19bS7+#|M8Z*<% zdx|Xp=euZJ*9hMs@;Ja~LO)GCe`l4~QhaMj_`hlD_6EN`7G&OB`5}<^(ovw+%#TK^ zBttvXPYceU;VOWYqmKT-X`-Kx1`(J=5li)>o;g5!Eo?GEDqzrbE&_M@P5S8hH}ayG zczsY>X5Jv5a*NS!6oZWClz7aEU0?xgdzot^k%SrnmH6PEIWRL9Rrl?|e{^W}q0f;- zvSB#Tp4JGSnmo62lqFRozGa4NI?%oYnlZXI)xANf3+- zjkAUr`*iS#(6%^T12`C z{vJq|>?zYqgz7hY>)NEw#8b9^Y{oeveLtw{%TJzeTbe8#b3UNhe_RdUVq8H@bOjt= z?v@Fpo^E-x)wSjqj~2j{DQ9~0uzt`HQyq_C6C2a;yL_iIVEh~_iZDTnfnkOt`TttW@P0H#xf7cT2a<*+Eir!&%O2^Y@I49&ab6|nSgl++x{2))tQhynF{ zRT~msA$je=PBC+FSj}LxfntOZuVE-f2iLS#%3iONedZN$oKc=FjF;sN)ow4r5V?g6seRxsqVL#jK@4&8!@;| zy^tJ62`{J4f97ULtNPP*59>4=dr%xbQ(5R448d7|@=Z*}9Z98du+n(1q7W6RFe0i# zm7TBASI1$BSSDU(AW7{vK3CjE$H&IPf>nm#j@3fwCf{haH~b0uh0Jn_E;*_5J8e>` zSG!}@`Ph|yPMI%t4v*I19a93MaKBYYl;u+%MD>f0f3j(=jJG>xUk@JwIVCKLH?2>g z3mXO8@Arj3U|jbSioMl3UX}qeEB(08NUjx1xZ#l!qJPzn%Rn^__9Bt`mN(SK^L=z% zw1u#IYk;6k+uYa{ip^tLSnI9ijrjGGJwkbOb&PNJ7R`*{x%Q(9p`C<+Fq=eu&;`2e zx*y%5e?FsG4g|!sY`-tMG&Goofg|?iPG;GsR#&J?ebmh%pycqPbKRlNnn6o-rxoEe znWqDn@B|X51{^eWodt`IHH|6gmYm>;i^@V*rWgJrhiDAI&OF3e1PJ3@XS#SZxiZw3 zF0wie71^DXWLk4FKJRPd+y|jC=7bo7-M|Kaf41)1YI-(mYMs~-H-rHJkw&0#l6|i} zY@48zxfS3n>d#4waez0I1hJEg^cGd7cU$;g{>T`?)GE!IO7cuV~Z zwRSD$h~HAF{)>ysxD0JL#3QPK!_v-keQ@QRMl_USnp%U)08UbG^GWQ?9Bj50y0N?Y)cNL;2i^sSUL!sVbC23({gVBSi*8jVc9oaLmpJR8qn*Iks{$mRT15*VbwigL zb1^4vW~vFvyd}mOuktY7!B>Mf(E`U65+tD=^7A-d&+)R%OA#k_F?Z70dtD7B-S)G; z@+{~h))rccJwL5G(WqTpW9*KEf8R*q5Xw=anF*<%GE{wXvb3?u`e)%bkYpLuziwOX zBuiiQl=aPAFI1650=K2i*bJ&UaKAKhOei#Z@qv37$Et=6XvKwXCrE5u-eQ+Y9OnF!tB=#Afu1$zR7!?9LRn36$LH!%MIrEIjRIkIzWxh**s;ZsbU~H}-a!U$ zyW^D*a4iitvSltnCueNkJ1X{)k0d!-t=FIRv)=7u952gd=RP5w@L3;|lxWE>AEMJKi;5l8Y; z%@p%+wvW=F$z|X@e|@Ve2zF?IfhT>eGTwZPc)jNC2j(p2?HB@93?+|W%KF$7t zYT50mPNyoOw6FqNC;DI?6SHXGqmG6cPlv@aTx|Hd4WE!6oZhkwTR!N_`R9YqPVA45 z29Kfu5_)iPe|?=9Lgw78ct4p)7Kf)_53r{HixnTdTx8!Q4vF!ii)JRA@PJ?MkqR!8 z|06zkk`yP-SG~f8Gl<84ZhF3&bJy7Yf~#gRjg_m81J8`{AT+}~9 zTD4kme>*ocI8I>x5-YJ>eCq@YMtQZ0Vz>=t?AW|}N4`4jmp~$QHnh^Cz9g}H7u}lk zt2kpv2C~PX;~NWxzdEl#(7<5DP|Q6+531#lq5ZxxvfPdAuPM5)e;OC(VA~79J*?*J9N4>|!^3f7rO~hi z{*D&}FV;1?gQV~^UV8w_Z&>{AhGR|a*eaw4BIM^OVe#|*_Em#shYanHs03^-w#P#Q z0wOb-S}5+uMkf6SE)bga<18f?_%CSC7+_FSE}|a6ec3RE>6sb0@_w} zf6JC>w6aKL!>f_jY^xAZdnzZ6fl8oAQ*^by$2*UUG+IO%4;F6A+7z%E>I33C4deTfzPO)dRcOMhaYuccf2HUL^ZfyH?(a8)}jGtWEfZso|b zbsqR~$=VhYS+TYb=Lf`)5%r-`vHEU{7uT6>4xA~4kb;d)R_8v$<=1^oZQ6{of0=z; z$Zp{tPTP$GR(+-SOV+z%6xy9U?nph|9Jx|UJyi7|n?}5*R(kcLe7^!k>Qi4RxktCN z2ZbLBYJIz<7(BEgO1a?;mk9mU+Gck=#HIJpslfxWqRHt`RK?60L+O~SXKcuq=XkjK z4TFLWFl2=1EMWQTNVVEvIyLOye|6sxBN>}olfP+jB;BjmtAX;la#~1SH%&*XaN~nK>TE1TX`E5MTylNngoUvT#Yc&tUHV{%f5*|@* zxm{8Chus|Yu^0>dPkxH3d1lkN%tD2k_U?sEo%dW)U#_rEas2iXg5uR*e_bD4n$0-W zsL&C;MEXUaWibJxl`_>0;^M+#ScA>y*jUbOXwlc4b0X@ncl@uU^(bqm+>%=sq}SA^=PPsWoU>j8d!) z0}_<0f2;F^Yy-g>d4Wc-#_p3GRo1Xp@g2y%!Q&}bQo%2PRqjx|>)f?JDKe-;9^n@BhMuRW?gVc^l6P+Z5n^fQY!D0X3embZV&W$8f@X>FvI zNyG?@Dym|*EZm2D!zkT*GAMO5P_p#kvWLQGe!qOJ(sC>_1M+jz`H{tX5@-DFAijYf zJPXJv$ORgJ>Z|W4f8T!1%8%tdxkN7C5wyxmnDh|9z#511o)C`N^+NFN#xI)>HS{`f zQB^S`!fT^@oD!Fq7-=gQRBf?48MwK3z|f zH}K$k>5t#$>CGZ2L#grGkDH+;8y=hNWY#kX$FP(;>?9d}X9l|`ckk@E11$zl*VF5< z4P@sxvxQ#xe|Z;TUGIG0k2Vm3(-QuRa}`Q`X1ne{BO!^XfkX(QOPKHKp&0@3n;6iO zA^f?HCA#gmGT3pJWefQV#`ErAH!G$eg{iRP6SInU2E;|DG5dw>0l&kBy-XHf(`iOY zyctdvmy?_x)}?mF$D3eV>LGzF6c?-n)Q`+OoVMQ0e~>v)T_$m6KuN1g#k?-8kYd0q zBgEiTZL64(%OSXT_R1SG(6@$4padAhlS#bwZ%h_@gZ5Jn5Z3g>LcIS>HSHa!4<`4* z@kZ@+eLAC1nF0P-G|>Pk7YlKTx1~P$kx-fsi&=q;t!QC$K?!o!o6({ADfF^+3?7aI zLC_+te};wwM#%;R@)#QtNn;l1^nhlQf%_XJdo?PmHpnsWKb{ldn~y1J>KVoXLXWOD z5XQ^GbRz$tz1EYYFNEimsr)%6D95t%{LC&pr7m)ql`j1$_Zryb-xt9HpI9CAm?9@v zKYUakE(V6>yKy&%iKIlUBr0Ivuu5(KR01-re`XG_z=;$Ens=+Fk+mjHy%4T|LKPPH zF-}m`!4?^8gc!D_Su^894sI~vDzgH>wlx1ISOgZNFyvONmIayRa+}UMxnqUsDKbu! zffbI*USiHz!*7y$zhrR75wao~VCEv;a$2Nf3qH>Ox z{^uE)FeO?GJ?^CG`Wg~gMF*&h@@b!he{=kOFlp&!^L~1c6HKP;Hi^&zt02M~e$ttv z+_bm>-vScPL_2rdtuN*KwE%qCKRbTVlL-;C<<$O?CB-&1I9;j3Zi}Q#O?3#CowrsU zegr}WK!SlukR*v|Ek}0*fvGb+0bs~1R0yUHrW04Ku+Of2A@K zY#<%I5tijoW3!YrEq%=gyU6S}o?Ypcw;bnIXYHP96HyZ6(fL}aHRFj~ph&dJ{}cSN zhUz|xLk^EpVz**r6{*;{rmS#eQh&Z7=i()=TeK>@Br8a5!*8|33qn!_(JZ5i`<0Fm zVubfcS|w=%irbB7d!D85a9z%yfAZ_`2{RhmqQW_d)6nZnjjRrI3@7qsX!w09Q{*RG zidZlr21Zi|ZnMSCyC@-B)tPzt4Dw4n!{P}>%D0-t8>ubODDfh3QY-};3Xy%%8hyX6 z3nu1KYdQZQXobp398Zs?6~x;<0`OY>qiOFh_u~9AGWZY_344mL!=z7>f94u{YgzTI zMYot4N#_JbmA699dDG*Q=|x{Jykft4~?T0I4ku_oXYl=1Qi+ zq0PdO8knnCOR3akCA;%SqG?@u``M%RW6Nm0?@fe#aOFdl>gCg3&|G7Vf|>U~KJb(9 zcgOBG$<5h%tfE83R^Da{f5kCOwfd@VMVssihVLHU*6MR0UM_a@(scG*iW5v-W?HC2 zoc0m4!uXI|`ZLEJBwCTW$Q$%zL9T1AtvNsNO?cc{bZOBXYJ-~pQhyxSm}`5Xp2*+1 z(b=qO`dIZ0@)o;*k%_H8V`7`c=BnCJZ#TQL=y>U+fh~h+%8=AKf4_0eIvI#onj&L@ z@_*ZFwZ*$&?Em~Y($I2s+2$bxZn+rtoyW3m{Fh>$$@vQ#x|Rel;scXM%3O2#{H%bF zom@HS+j$mW69ob?04DFOCML-wquejB+&0=IsHTJ|f8^q9RmHHUcEMIl>PEWQ;h+AdV1+JyP^FD5pC`N~A3xmpAMTDp zri3tXr2?thSibaiWt%kkwLMt+JYx}SwTfYhsVBvVT}A|fCG-=ZO>5Qdw8BPlhWLFu z9B)Rd2ZyKpZo0|4PibYGo!j^LyUJbI_UFou(7?H12`N=ce;_^wj_9S3;X?NU(J`mo z2)ur6jC++Q(zxsKXeohRfNRiBKBYGV0^}+E43B)IH}P$6D#CBzKqTy0j32P0)}NK> zs2l=UDL$t&Q>e}BR_3Namg~{Tn@_dmT+P?^c!w#f(oz)aSrEvb{&oPq#nH9At_8z1 zfz$ zAQ5VT8H75A9<*j!UyK1Ef7OAos5rZ#5gi#66 zC<8UBw&{BtaTev#3WJw(I;C)vR9WdCMZbH}V~JE0Kv2FGErJN6mRtf0?1-f{C`|%L zp-mT2e-R*5>|yyial3Hz`T~}G^`_lF4R0EkM2(9N^1{x7tDXnJdMfY0qq8Jv1Ye}X z+;>Iv(xu6iKA*o9`%yZ5@>|yqfO{&&9!Z14kj-}?1~?oP7biBVp!F`rik~QABOR=t z85M6*0_ug1no-+_+GI=@lqdIF6Z5&uC9N3`sQ2ke<;SZw!(*1Y7luN`r5dDn;Mq7PaY)Tg*=HR~< ze@8+yv7NqLa|B9LGA>ncPFmy3XAB(>r!7S1`~;@kKXE@lYUJav7(1{=RpwE37=#{r z)21X?7c<4Ow%z#bbgw`xRXhLC1!dMed`(KKW;J*Pz%~T{xACybW#L5F-2?aDoEVqV&m41#c@J2P1=E|2T zz0E;`7oX3i^Cc0XGj1Jl!JcT>idm!GH6j}kb1K)+Dc41(C*?@|(O?Kc7RsC1Qlh$+ z4*BftBs{`_RkmY&^Gr*_U!huw2G+1e)ik!}Qfks1psV=5)lNm&iyn&MqvY2Qe{(CL z9b+t}PFeW#w9#a?A}aSoHXC-zc%N@lk1;GxxQ1K0DU93y*lFQr`z%Ql8Z8@x?o`W@ z49Y5R9yk5^8ojUJvJ-!fmjR8yjWCJqgoIS3Wr48`4VN$?u&t;wn zT|^S&KR(LfSeTf>lKAZ(uUm%Le@#VaAp5wydCpw`GsjMZ%X362;ELg_<4j$czE%o< zH3A=qjgl96?@*ej*}Ej_(&a(ki~@NOUHOSC+dv&SU@om>iO`5LOg_cEwsm9)hr6YM z6E%CZObjeo^>P&gIB-=+{y7cO6w6XKlI$CK3dR%xrQH{yF)Y8L-Sg+vR-Ss+6cW>1jDcYG7HY>dE7Fd? zwlH5QQQxgvANfs*dQuN5j?EU%>cJx!99bE?%@eevNfg;`RF2|ze+BkI&2pZnO*9Mc zl($xa6c`oW=jVJNelR6iQCPw|radBaY1G=DzYHWRe>+n}Or!X{Hv_}bO|ZmBb>Pe*MiN{M<)-yq4xSNu4f}pH**)1I zJ$gF}M8mR)Gs&%n?`u4j;F{8&x$}U^l$k?O(q(g&=Z08&cM`=c&*o#4few0^IhT#b?E>2|1|dN_049bu@Yf790EDz2{}*{rVvb+jyz z{{CR3j6lP&en*5pXEE3mt9$v@6LEu457J5}DQq9OGtQ6hm0(xe9)T^Zekt?cps*h;%Tl8Vr7 zrKp*~Ja{;&f7SK|g{Fa-WAbXk#p?GMo+$Nu2L(G4BhVQ;m=qqTnnx3m4e}I%bXFFY zn#AaKO(A?lbNv>hmMQQ_)VWf0iWM#-F)L174TcyufD1I)X9Lck-S%?XkC>{hq70 z7JjR>UEW|Cd3B>_QKe@8d_g!am^Np3yuK_ii0hpF;AHnuLylW0h1?5obrBJ+=C$RpM5>b%_xlZV=@2N4$TAuyoULSsxjHPA-_kg zj#KFEFotVepvtRBJfR(#ywqvcE<`Gl@G)eYp1ed%qTg@5+dFIU7O$2gb7HevHg0@mTYz98pE}j-^R4__bO!t9Y7_#)b_y`# z`$?Ux)bIY0w9y<<=v50wAY&dK3S9B>z*_UYGXX%_Lxyjw>6D4_CP zC+F-(WQ^}5VQ^DHzK`~UBxou(dYvlL8tCC$_spOiB|uE;XR0SPhU=}LfHMLH4^9ke z7`=Q$&_;J6`eFCj3d(5$d>zkK80<`~oe`*-Z7NdnJerQ^g!vf2jB; zUYLOm4y{bSsc9=*vNQHW@Lm%yce&jfuvhtUy1?h?s>~9V>&-(Nr8bnku>-K$=_Ksx z0Mat6F&~rS;=qT33NFo$E&R<8U8qJ7k}t2mbsG@9{XXGvta6ahqTHz!Zi~lcELubC zC=^p$yB;}>MnXTBCCD_F16T}0e-tRIm2C0xS~2iicG*PH^h}`a-}%t*C)7rVJAgYd zCN|K%|3+HpzSAcxsmJb03*&qmVc^8?*mH;GkK#fhI-RZ(fxdmlOBiyYeKf+-Hf||y zF5Ovn2IEe*h~s5#lar zrseslH#AP%Q$N?(#xiV}CjG?N+h|*@hu3gL4f@^7g*!zZ{%C5f;}uA)2e=~x0!wgf zQCvH|q##6}F%K!<+-5$i#OL)&@;}V=02Tc_EiID`zp)ub%BqMxVoWs+Kwkmi({m6t zQuM6XJaIrFB`Q|Ec72Y_fAsD&Lnbd)IO1I>d4F#*IH3{z2GxGHUJEG0iy>6Q8OU$q zJy^z4YxZjd{t?}AB1hSYC}h-im=2c0b8sMf48m>PoGWPVV(SLfQM0S%qk44>rDF%F zyHOJG4X7GHkv)npUS>fCFKks>={++nOQ;cr$o{dFe1^?#HV@$@f8uw48+I0CFP7ez z!8vF(Q(#tptOl-NJz-Ym480@b+=FF12T^x2Ib;s`7L(oWf-Fw^+{M0&TrM|8B2IVE za-M4m2InSJ%Xi~aJN<*EcJaDINq8BOscK8)L{~#mK91NW1ccOR?61qE^Ud>?ge9@#*O*f{d{TG2^RLuU;WN45;m-ev5dL|2 zc*zHk_|1CajOF-KHjGL-MM%aBzgle6Od-rq&8pmo!dX71e>SD`D80n5a6QsO7cb+k zaM-q>Ls(!Y(vvcj@>*f8g~(R7A5LlsD6Zd^(M3n6w-EV2PvUB%11V(kSbLQBkxge( zYjCzUCUWMwQM3!b*KR9-}uKg;yX8xA_Oqp*h| zIJn8E)Ohtb$Sl^$q63|8f*(|U6Pt7H3wTqG;F`gWn!GFmA;BwLMbd9fdv#mACJ+c> zAA==hB}PqG5kvZFfNwM|Url~Wt2~#m1Arog;UJIof0fBrv7?bPM{C{%yt(9JDw|)W z+sV*JihhcSfmjuLXbYN*7cwGbskQ@essdd8k~^Z!WZ$fpDy=Uv08xhh^D_;0d0^ne zu@E${X5?VE84AHL2-JP@=80mgU zyf4huYmeKtvMyz!lAKvH33@b$t>D@b-B<+vUG3Oo(1V?uf>_ zqu&w!6nm}uuU$+B!jZaG_xf3aSvhp^2!eJ?2Sj8Q1#&7xw~=j6Z~VGqYuQ2_2x0V= ze*<%;S?C_GiyMQOSAcOi<^!*@bs%mh2(m#YtF_mwnT_?6gGsX&!BK$ix3H!xX%R(^ zj*@<;mHiz(2Ja3lR?DD;Q`0<@wck;gf5|r)$Bal@s;a&>-m=QeMM+eQwApiq$y*CH z%Hk>8mi-6${GXqK0<}ZhXfm3!JmsR-0j1A3Af$OeFkeCZa6cV-fP~>zz*2zoWKg7Y z!uQaBI~{=YER*QCqA-wgo9OyJqA~EJ8B4Uhto}@-uxa5J;6-swqUNaE)+_A2$+tCdbKoooLA1%-}riyuo@ytxswXn`J~@6ru@g zan1ZlrGd_Lw$&Gkz(WGzsnS1$;SB3b#`B0=;_gd}9uW zhrCN8U#}=4b6CVpL<;6k1?qf&ZwQi?oos~4(c^>U)5V?9-c7z3(X+Dae|&%@Y+Onc zB{V}yLG~=k8gd-@r7Jw4dR!s(nPXe&KeMKS3AaF7-WSXV;1gPiJ~@BtwpKU-c_|1&0OO z<7SKU`2t8fJ}z5VUh*cnfAmFTLWOI=FDnRPL29VXwj=kIxB>jZe#d@Y629Z{mBIS? zGT1!k?Qe;(6ZJ!$h>U(jRAMo!)Uzi**Z_>xp6Ee`B|^32<5a@CgrfOOVgw7C3dGs~ zDEmq)I_+rX-QBo1Q2Y4RBaa?TMjr^9ENP|?JUxIHNXi~~eu;qHf8Hii%5sLBLy+u9 zUvO$q#hv%ocK%q!Sz50OvGaQ>yg?HPIYBQ_eSpE)c7V_LdN94YTV z#Qbphwz_dZJ|bFi=2nu#IO#lwiuHf&oIAGwIY7q0pIZ!wYk^;ccYhN8t!WjwC!g@w zJRW}Jj2WjsFyKlDdA#I-(tCwnrQXwP#rL#dWH04{z?qwXAa&MwK-LMPvkw)ca(A3b zh;T_twT#a<9(QI1dA@TRqe9#mhoCJ30^!-3)k?GbEch1PpHs zIBh$e1~}SW4kXfkS@T^i?>58(H}OddRoh;c>i6Xkq_yR>7k|%1{z@m`F?~y`cPK29 z&+g)x57t{t=M<)U&tRu-CxBTQe=O-9a{?lNe-z=0@ zNbnnAE}fU0m}cWC;^S77!oYAGIE$UoCbA&dUfTBvc;#Sh^bqNRnS|hoXCvvRr`w8D z?wx|R7ULd=*?+>2h-<$QFXOWq!h#UaSei`b=blv&a{ddW(*(Kj@|gGX9>O~_E+M2o`B z*Or%vMqjYG&8Tj3^~B6e+SdSh|x#Pa)6o3om$qwd0N6 zSG+CR&Jr8HmLU4x>5R9PV_``DnDvmRg4y;B$#UtirbiS2g6S-wa*;=7#tS zI!kH&!6exN)b>owiQ4?~`+I1~quBW9Ue+`WKIpBLcqD`E6zF)Yt@6v+W6v;H05z78FeQD&)FO&CeeZUXm*J(kitzofjC%KTSaO9apD%Wzk4VZ^q7?%Qv0qXQ+MC z!I9Jy-tRn$lFHr_k&G-k2lFUlPPO0cw zA&LcxQaCl>S=Bu5htSJCn2&vn8-Kh2m5!vkDq8COvZzN@=)NWcbnQgd`RC#Neb$5& zEJWwMWhiD!B(Rce5DM8WH3xoh;xY{tWPf85j0KDV9oMJGJ39+|6Be+|nL%2g(bx|? zd!#1tPR&hwvfocSs5Mf7eOa7TbDXbX?W6GYbD+?}+0JyN`tbF52uWNg#DCm~y~?nt z6`$co`mKvHw=Uator-x$0l|wo28FPj!2nFR0~fM-W^9Wg)o=|FbkFy))aDnP!^=hY z=PTS1D-}s3JZJO0PPbTi`!wtNa*D|sJEDW_q`gDnqo6>bVynYdw*#ZZjG=@a)eJT} zu?J6#_d_A{j-h!)FNfm=VSk_gG0E3suze%i;h1tTFZoc9Lqg5ViT>vtepwI+Qt!0D zy^)4$5i%2yjCG-_n|@t^E+Pq_YcsdHd4>&^qe{p%}T7?v~h*iqwm+b@E&h2XonxW;{}8eXS?>wX z@e~_fjMW?L3U9;6i7T(D#nA!CIdOI}oOoSn+hEy#(Ak6=gkCdWIoDW>6#jRf4s8ac zusD1kFylF-1TYsK@qarYYe)!bus?H%|ETxc8zJD~`-L(xe)>F^>BKk0bZomSOW2Y7 z*mZd=(oL`=5b*}7Mj@bxJHi1}>tj~6Q$8^YbNTgJd@A7HB%UOaWiDh^6Ia+#f3a

oXyA$S$Mn)u@M&c<5y#v^~fXlY$NlCzQo9-9_tX6 zt4KqaENv$qu=Pjks$i7p}aZXej1=Av}UHNw|NPA4)5J3II-U z5%#eem^N+}fKLIy6lr-pX3iz?{vCHlPNC)j1mpRQd4FR%1LrLJrOrt52)Fo;Xhe72 zn*}{Wc1SzwlK{$HO;^Uz(^Ee!xdOFny0}LS-xt(F3F0`4&hLHwDa;XSQu9`6HyF?X z6bGC6qU2sTzK}FwmFZ3aR~X_I0wi#{iI7Wd4rSpdQ+<|yOHGE%GokEv{GV0zUgwQ` zr-=MieScO3K|4_ceD@DcuhCmT+o4}2k!q_ZZrc}}wy4jo^5HMpzR@{o5nb(>=LL7c zYnN}GZR1&_VR*0Mpu7i}3~?&R>mZ=M3Hca-6J=+h5ulN`3&UFGb(UOauTj@;)F9>f zk)$Ds@IwWdvo#2mi6Z2G{afEU5}s?GmNn#zihmtJ|5)XvF=LT(^U~KAD1%WTSdgjm zI>{)XtXo&xYnOK;*6HBoEQY0R@8gRj2@j=B3=Kd2EnL2RPOf!2*R!`Row2}L2DU!d zcnQ<0u(X3nVGBC-8x@OgsIOQ#mZUx}*B30Qi2sj> z;oqsDaf?(Ziu1qH2sO*hl(fld2%E4+?_Is!1L9&x5%mwEXG#O6fbQC^N^Nk_7^fkA zq(`Iz4$=2{1>(EeRs@muEB zQ#E6X#|9D<#tv=22BWCHAb! z)Ez(}DR6hy3J!K_>srDrZW5McF4P3B;6t`~lAl##?74TeDxL-*0;fVM1|XLU_A zchg@K9-HB*3jU$>QzF_M4u6stn$_%k)17qn)2^Uj!$TAz&KQiQi9;l^x%3ulNoS0v z_4~}j6DR#-Yh71{4}jj!e>l<9&=n!y=KG9IYo(Qf@eoL5>UsoKLl`D;nu5c5fP0u& zbiP<4^9^dj*UIlYtnz6y6jR-s6sa$pdftb%)&v?N8VfO%9go8F`hWZ9b=Tjx2fE5x zf`LzhaW0ODC(1S1ms9ycfx#Ozer09cEQlZZB+b6N@kfXYFFQkgwcx`eK_QKL zVfjqYj>%-Q^ta|F=q!<9UW5hMs+U&gqwA&*_o1egB zS7cSZ)h9(+&rz8J7I?iB;gXndL^MePH>{Lm+})uvKYxM+5tkbZT%udw=!k70(5=kQ zO1*eppV292M|7a?SZHM**d?zSmG@19!I=b-Su-72D}R!-v8>M}ZcLxg^iB_?k*66M zwafKl$0BvKAgtGS1-b7Y=o_5>n{ddI3Sjkv{usYLFHZypQU#I!T%zwVxICHe&V*%T zlW}JiV1F1-7~-{rk@us6CzKDWZrMrwIUwvz4t3sL>7)Le0F1;sL z>);MHr*es%lfc~VJuv(^PC$^^`nLh07zfj{`+rf~9^OtUxsmkJy{sB9_UaHimu|c; zfkeh`VY7(9`ih93MDTsKJQkc)bskQ#Se-DR^vwZ|oi|hx>anUr<90YvPLKdi#e+WN zP|hj|J}E>-Y|ezQD-hrM1jdXWeM}zM<9C*1xCo1Yf=|F6IvV%wTx-D?>%!ycNI(emxk+-761U1Uz>cqS0R-9?>Ef&+% z+?M6DO2q-_o=L&t1l6Ufft$*+qKvKvO(npl-6Pm~n=i)jGYcD#y>vdI3|-kV8@*o~ z_B2B%@Sy&jbOES@#NeyWgY_=IoE-9q+JA%!1(~vfr!0agWOR`=PZP$EQ#cVV3w4R) z@dwk+j@SjQ-Pq#`C+u1_4fh-oH@}syTvl@r-{+qppeKml&9|DcXbS1UFGQy1j&ZGD zn)n08n+YjKv|>^CX+_11Csw~h&P~p37<&A-%1Tg?WbxA#aE?=!Td?%N?pl=%;D2YH z_cSSye@gFSI`pkcOI&al@^{*vyAcz*JfwR{p+Tsz_EXIBQ#b#>dnQVN5)F_+I+*E5 zC*d0H*TF5os*x;gw)JpvQ+ko~v0Z*neg)N%U&>#QFKV5!=o2D@AwLV0@@5IhB>|Z< zkrYfpGa<$P)&_SML1{AOtsS&?h3z>MGYN?E;{V{n#o_@uk7?E-b`?{#)zINaR8=+O zX6OWdh;LBk?K!j(2MCu7rhoej@u~Cn;8@_iXHI+LY+7w>zYfKrMb~~x9-Rv>>h}fF zekpjqmL~wElA|(J0|sq-RaqUo2GbqyVxlZ?cN?`s$lfF>AUM_l7Z-FOXg2s?n`NI0 z`x~C92mJN35Jd=K@WsrJ3D7vD*vfE+19`nA_+UUZ_dMWi$V#Grd0Q7qOyfu#)KSndAm@zye86Fs$ncQ$1gSw?ltvW;BCK z8Vc79ToP|l^$6MAkQwSN`=kDgde{NmC%#2H#J2k}4ciK-*TOH0>Cv&jnaa`V4+5pp z2vx1SrI>dsPEkFhI)6>!XkD3gz0WHspBQWqkLQC0w>yo_LTE%-voBF!KLp067wr{{ zasjRc0JJCJiGE9gXHum!_QyTX6I#NsRKm>&XD1<(42?CHN0wP<)z<0mAfFY(Gtnrk z{e=^br(n4v>;0(RDAGoyHHjH#pN0?c+YVpUPT^boGmuRShkvs~+H(hST?IH9C!<2K zsj9L}xLM4qVHQw$TJNeUh^$icBfr1-cl75fw8oxQ(<~)v;9t>WOCGPeXAcopk60~? z-*~~&8C@>(pL)#yij?>VqScm%%xhzw<7oA}`3rSqLr>9#bL8?C(vkAt$5EJA(PxQv zyzzsSeIe8JI)8u|1C(eA5~>Y#ZVOVO9rd#H=T`c%m%%6d^vNU>K^&A+Bi}fMTwkf|9>~B5wvq>kgMb^t!ivNL$0L& zaMxXTmYc&;DVLfoqb4}Z`M9JwtGSn&ed8zAens(srfw;!l*5hbNhU<@G zsv&mmp^bPZgEX3A{>#cNMm}n$_cL)bv?ACL6%#QDQ=KhLmr(W4Bjn-++HtgKYbz(EcrF26tTWCz1 z{cdZ*b2*{&f@)Lo#vy2r9wetQv#Dsvwz4_&xHc@Yy27MBA(u7-Nj~R9ZzIm zdr9fL<`k{%&kKgfT&!*@qx1buuGBoRdOKK|^sP27$o6}yVn>yZKn@8_<0qQOmskzl zbKBSPin$MN#go|4G>o6yKx{Q3p?Ld`rE~QFYU*Dm1s?y-49E#8uz1s%3QRKig`AuM zK7Uchq+UNTT=ke-}wKF@Q=bo7&4k;!``2JJt81NZg)u%_rJDBJa9iCsrFF_Vc`p$~Jh=sr} zjk{%4n|k6817lo)MtA$+?l9i6K3d*fk$)kP3MPiR$;D$oM8HuQ!z3+~hQs>Phmw(>* z!+GsYQ~p@lLG$VXwTvgH{1w|#LD5-pD*$?TNezuSnaM4&ut8%w%rZ2}(cKf*X1F2R zV;O%^?fcTt*K5r`VfclUkE`Q%*^1oR?Q&J10sSSk;wilPu<$vrvxx7mWx0WFP3BP> z1JhQ?tSGB3SW~g{`QFwG8Rk%jc?{T4@j+N_VH2H3x*Dr2%gQu3*zz4j zRHtS{hcH({pLO5`Wp~C524RT&v1MryT2P28L)ewJ!E1VeM>dJiESWyc8=w*K{ z-nkKbUD4#$xPH2-mUELaH7FigJNeV%9DF>Gdf=Z4iz5=-uwWk|a@Zv&IuXKok(Fsf zBi9uS3XFX2$(+~X%vQT1S0oo^s98ObJ0l^Bt>Od|CU_#1!qcR}_kSzN=E@PXJg%L0 zuPe^HET6E4DQMr-jhp-1j6i{=V8xQBTiN_=r?>&<+gQ|Wd8>sEz%pJmZ1#MIhLM$g zx-CGe@Mvq5j;p(gj>bp$HX*htMlQIdxrrn2sPTuI1c7GKU_h$F#!BkXi>OV-8 zXD0JHZ zo3I9jK*u3c^%!9&<*N#ARo54v&QX;VDVkHH!TcrNg+<_Kl32B zSWJ=MtMog0BY&b$K_5>yFj!@khja5)`#P1jQED?1_Jg7TCEd`_CX?h<8_zTsPKsax zlpAz3)~>JXYsgZ#XdvFq#EB%`>zWBVbun05TxF=<5LPLAoAPig1p7ud*Y@##aHpe+ z`i}Q|Ia7WB2{*>w%ix9Zmio~`Yvkv6mnAY3t=-BVZGYtRH$E;lv~J6@5oTv4U~Lg_ z3Nq^nCrKM(4{v2S4t_lBKDovDf!I%?)uE?&H)}AidV)AY4V;={>Ty`)0M%fQr zOQoY-q6x5!XVo!3#(0)|a-0+ePFVn3K{JsGrkJ@*wbw@8utAGx-X^EPb`ChDPkci* z!*svQn18A6{!ko`b4hQ6W2-~h@MraHz6@o`QTF*=ycR-SOVd~UdBmE>_H85h1g+BT zW^KSbhydXK*z83`i{3RcZ7dn*iCyC7!Uz0t+;$auVY8NM^La?+PT?K&%+^ks754+I z9eU~~G-0WA#4yyRh;$N%OPjnn+T)^v2fQKgn}7AGGK9Nt-B0bPS=Vb;3q)b{j_bMi zSK^h1@N7S0U9|ZDh~!WzWi7Pi!|=;qba_XwB;a{2#!ySS)G?@gCqd|TPzLnK9uCWu z+c@s-$=@z*^9Pk$>hCFUK6)sCYqh{vw_-CX-lMwNyp|4g2o&g^50Z+&E;Fvu}*?sg> zR`9y^*w7+iAW5+&%Y|D z_3b&4z_%Fw>vi4WhGr4~8a;k}YN5V5bAMs{PybToob$hfJ@VU9CYCoArJwK8Y*pv1 zZ*fW1UF3VmsJZ?z=yA`BW~^H0b;-vI7D^c#?*Yv)lZqzJIr) zgk@^(95wA;4O&ov!?g!u3MqwG9%s%QGBNxujjQ$AwI*rDxjN(n${jtbZY?Z50h>t* zwgqjD5%IVFvG{@GuD8u1&HxlPaS4r%oc{UL$mD+fYgGyq$?R$u|NHQq^WisY)GE0) zv^hlxnRo9n8su9=`q$>Ba*PiYM1OPG-3UFz4JoJRyM|up7Pj_b7 zAtsm{Wv81B#SFtRT>Pk4Z+b)$12|~*Cb-9gGO|wEEgzFHWYUllkO$BB+vm{ks=LLX zRGD?WOX?IeOAi^pK|kuihuE8Dx2#~9r%wuZ*@~ia8LakH2+;Y*Pi&^g8Gp{&_QSZ| z`=1{tNg&FeG>vw`v5Lw|gq37*zDdLb@aFy3##3%(>>B+qOC=zzYGw%<`@C^Z={C;g z)7Mr%Sb!17$@a|T;~cv>FUde4gY+R_A_Dnj&>fC(3H>-uufyzVm!THyZoQ&3o4Ocw zR45W0?OD!C@DAC+5^~JYH-GW`^OE_Ot2oawAXlr?aurnb4;)j{$w!@YU>MItOo#KD z{m88_#o%bDx`M|%-Wn4_7VbB)H<0;K|`N4*Y^Dp&ossU+a{* zahVl_W(QV}k2WJ$xMaQvY^xvL>(#XpMWV2~`__yJAYowL1XK2P`+r03d~>}0{}dT9 zjSq2XW6eJ-914qg-GuVO#gcgwiQC0-S9zdQ8y2hQ5VO3Y%G$&%HBn` zss424l~Y|mnD|;KnWs8yGI>EM!qr*K)G$*oI>|amv;Fl+QXHfSiuW0ox1OHtG0QqCcvp1FTL?>Z6RzkY6uM7qC2+2iqJ<$tg^EvorOwM}v8sEWKT z{TM+?Df9hx3#Z1DqSErK<<#{5y$JFZ($@mO?x@AUim>tE$i zmZO1&Tf1GyZ+;=vX9aWBT+ccg?;L9Grc)M9+UG!(SCV;~c>Kb`5KM$XV5dv1>6oHP z^hr@){1%}dpMMg?nIi`a^e>e7p|n1Zq;&IL+!+Z=7;xl1By5@y={eqh^vD5>0pT#| z4AFx_WTxwWGJ8?{h*MfIsylfJ-6|+OH%)*$GGSyfYd%Nbr^Du%!vsI0zhS+`{FS82 zsFdoxKVyIQJSvrS?QqcW-6e)1Hz9H3jU1`SqqPc~gnwK(Ld8oxokX|oi6HI#FNGqW z0|AB&NQIxY3(JLfy*isV`r8Lb|k{4Hd9K$L5 zCc*Sw4dwvv5gE2f5<}NDr`pm(h3+-eB9!S2?Vm^H@pr1v>cb(#U-174O)1(ay22Dp z53J|p;eSKIa7nfV2}L(KSUQu`WapLG!l$YB4u2~fD7QPZOnOo9xF}>~J~wY5^{2w5 zA}^`h-qyw6a9;HEZN(ht2Y$|31C5V)xq4Lwe82Rf)1w=)N@5j`KBz3}R!Dzex?&QK zPffYRaAIgT>JRnp%}LQyLu7zrz!Sm#_?KOH%zrSmFW#pbSk74=!ejlbx^z>zT^A&U zr-R=df}q0+>pHt$I}@bwxrWMK{}39*H3%LNAGSCwQZ=h|*enahnAh z6Q^OJC$H`f<{;Jda^hxf1VBd#UnNK${HQHb#>wMVaqZe0Ozt+KiKel1e$@93 z%WrDUyqeH3{@8EU8Do`D5va^eh_KEKl7BM%E^LJxVkI(;BI+k!v?jLW@J;-gGP*lC znfVx#^I8E7Aa_VfVMN9Um*W!of5w&6D_lOT(nrw_b?FRUohH_OGd?r1pMBfI1+SrxwCcpe@khDRf|P6{WM-;;l1GSN#e>*jXv4A1Y6b zQhEXj>}ix)EKFWXhsyuRJk6-dAG@5One-p@D!r+&Zw*Ugn3>T4{cv!^YJoL4al0k( z#pAHE`(15{LUiYIk1IgqQ)<>zP=BT;WtH?{nS;bUy}TN>IDbg&nQ=UtcJwh!cZ|&F zNHKaMY{-({1_fy*cUNq3LKyHge;I?rG;&5w&KxmN3~8oH(M>S*l^5o`(E_2qkf_xO z^h6O4$&c^On~H#L=6Y_lpkP7ey8Qt8(1E4veoBnRHc+m>(Z@0ceqkvQpnqB1Jdi0r z{lB!2yA{%@*7wn1J*JC(-)7x^3vx0MJ){F0qe)9QpF@d?NwY<#;g|7Hz&t-mNBYs! z(mEj+V;;{G|70nw+6EagKK907;I-7Tb^gpQ6`n>+HLldt-}xm5kVCt%R%MPpW{hC+ z7xEqxF36ofe3~f+3L#sP34fW$05Z)i#d_9H~h_o=UGyhF%1-qzYH%^a_l3#euht}*$yqon!mFg}}` zSVl>9goe&|5eqdL{2xAsxkn->AG8 zG&L|($_l7PKFau^TVd57=BHn}5@HBWRG4T}%Md)Aka~zdN~zc?7WlbJKd1Q zZ$eS!f%C7ie+^5r*_#^zX6hzfh zgcT>4r8EL;?R15NG3=q0l?PQ;zhiiyTAn%=p_MQX*6otfhMCpqmZDPJBXdJlV1F<_ zN3j7OO7bbgEPp$(+2gpVrQ(VEt3+MfQ}I5be%q<#;LH%$zZARVNIRcKdj?vb$n@=J z(WKjWs^Rt;-H{yJHw{LQ-Y7M)kB~nQG!zfR?9NnxL^C`HyZq|P*4Z{1*v>U+ z*93x+TV8^RP422FWylF`4{wElSc?C;4a>A0u)9lZ1!dj26j_yK{i12W1jvU$556VE z|CRmcv42cRr}}I$2;GY`@d@V+LNUD6>;)}s@@x3}fViDC#Dk=2DGyB>IQSLk?nM4P zf<#ds`73nF3<8!;xE6xBNz9&>pQEnFagzkMhtcAv4WJ^A=zqL8ks*4ssYg6mUX{y^ zy9d$lqmDSxgb_+fk}i}XwGJOW%_)*=v0~<$kbf}Phwgj1X0nY*-@0>GJB_Op2HzBC zi1@^#bXNt^0b+j$mV0>00nJ2L3g2l)$s`7Xjobtt(2AFL#@Fx1>V za!$!NlFG1;tGVNw`R(zl$}Ek?vSrSVV;cAD+3;m>srYQjbes}@W=d!xz5cm#0^=Sl^E2jECN8FKF7AmmCTEBEM zXrbIvC!IHB{nzqf&a z9sk%#?N4D?S1qeDm~V_D@IL9*EN$0rW~ zpX~q+1ym#oM>pZ-C;+n5cY^dk$5$qoh5Eaq&(S}4QK#rnEGpOz+fdw0lO?nDCc z=jNz&lv6;uS7{N>QZsDnO5w${p@G&2oz+;MypjdC)9!R1#e_4FC#YEt54_TfEz?K zAZ&K4K=0_Zf()HHrdK?B%!EQc`EenwKwPthTmS;cE z>(W1EMASeeM>Mgy`Oh@)wDCcM2$ejOGl64sCw?r%(|@GM$N#1(R@DVr!G8|j?uls5LZewjyn}0bXx}>|yPwAH&ur-es z6;@SpBFj~+>2{l4p2*{IM4rW4qO6bLinjx)niKTYGaGhy)Y%7zGE}dH8z5>I;~Qe= zybD0UJZh|=d7!*ir4d|ykTLje*7eiwB@D@U#DIm~Uw?ZGLhmhd%J0TKbr**9$$y30 z?olE2$2*ou{(s=AW&yvXFCr&OjJ;-m0Euu2l%KVZ)AThx6e;@dxiGwR3qqsps>(04 zHZlPkWCunl#|=kxvQ+eLJ_D8kzszY&Lb6hM`Bp`nhk7*<=RvxissFWjqYa`Z&sw7} zc7K3DinClt{V#<)aC2lR1|qUbl5h(@rjjdZz{uSS4}XzuAGv($D;`c{AOv36V4EdyIXg7a?nSFkhIysLid2xlOm4cUUcguf>rqRxzRzVycu$YVL``UQ~o=6!**Is=M* z+P75k*iDr~vmtt7|8y)QQVPA1c|1`g!uLY6fIfuC#?JVGbj z+<&{H^UB~gRf5C^r4EMb;Fl~y-#YJuRT?qnrRtfRySCGKrHu6E;&E>ytJENs1REvI z9(OymqIGZVPRfZvx~sY4n4Jn(fc)k1Yb9Gosvhg=B*-u)i@1rz$6e4oM)$opb;>K~ z&Crl3@^F_p7tSOdZqoIxSNXn3HWIyA!+&9e;JDh|G<;_6$cfULZl!rA0Rfz?Yf?Ue zjCSF=q1#h&ws~Z z`1R}xS&b}Ku|&KHO==ix!`};-Dv4+am5sdBkx?`tvS!cM25;x*hSG*F$ZmJ06LgwA zYEcX*n5gtswB1$`@WTx1Cwc!vL0lk$;_EOBr@5IiV60*wd?+zl=Nu?)4yJJGxv1+h zC;3sR@Cs5yst2R_b+3~wv+|R;Wq)pI!NxTxXiRivW&Hn&U|{03T+{$}NqZF6?Z5Yu zMxaAia!%(a!qK^BuU?omY)9qo8O^PLF%2>9M{zFa0{UT>w)bkHcYs>HVF9jFwu$VokqsY>^F~^GFQ`$G!Du-zjR3Ds+Dy{wD z&E`cQ1?rTqEGIbmf^CTlp+LteqfY67j_lU{u8U`u{DP>j%)^3`HyZs-Q@0LiBt8LY zUsQgX`P)fKZ?!eU?_8~5H-An}1pTPVM-sf{C?t>BNlC$)42<|{&%Qn;+iqP zuCC8F)v=vM?8anxCl}l@Kb=1vtl|ur)@`T`Bzqkpwufm3Zs_`Y`Z z$Xh?oQfy?rM>!OE8kz>-BGaYLqW9VyjPWVwk6ZDjANDJ3hIel?gxK9fJPFo!P1)o_ zpWj^7Bf`46te4ZnQ^-}=&-6u_Aut_%+J{V-GzlF(`a!wfK9uv-#uKf$UQhneU;>}L zJjJ2KVpb+;kd4i@^M8>HX&4Dn2U*iimhlpa^Qk>K!GQ08ZNidX_4k%(f$f=a9%tg-k~EKszPw5 zGHy&uWUB!vZzsMx>56ii-x5Qs*4*%zmH15PgCKUrKF2yCJ*iMXTWw|jmZ zD?4RRq8+0QWPIPQcsse(8%9xgJ6a%=oPzZq;Y?&4tm9J`v#a;}`h{+jPeFzn$yWp% z6_2#IpBOLZ@PGOHKX5Us`fVNOj&yA#x(Ys3p74}qVAjRO%dKL2j)zNfJTo7(jT*gx z$%s`l?#i@zLWVn`TJzTxD2C(ahzy)l^2|=J1-obyZR^$vw`QqNPgmbRM?C+EvdNg0!`ndQ1$)vfp+9)MUCh-bg6;55_kY3CAvx^dtxwLi_>@mstn;RX zoTVj@e)^J`_HPhvG~R!ekLT}wleve)_R*x>h|;fprgL)!+d&qYJd8M1W(TOe{Sqy2~As4!rFV^E53D# zk1HcrMed&S2?=W)oGO|(zeyI#&h_a^?i%@2l<`iIKS#HD<6K zeShvfqGE$5E+ENxx-Mv0P&&|rHDI!RtVOi6y;j5{jpEv2Cb@PQ8xhb z;Jbr?-=`W^57RJAFk~%~aVK8(2-?HwX>< zxg&TyDYCy$D`r_{(dbjYJ~p+dA!M`U?ufJKu9PV1XjS>!e@}@Ed$irGrWIJhx2Bp) zzKV0=D|JuDwfp_`T|F`ah6x9mkLoVqQz9b?22_aNAb*%Cq}7xmf1b?j68yt5A!Je{O%W;i`#f3xH>q{X^{I+_d=Q zrpR1R0=TN0{uI+)BiqIxB{bi>sWeJoZ4!E`C9tKDP=}zo*a=K99Impw1$+?FUFn0c zp_TqrG3?e#-6FLG?jr3sqn%lcEPqeoZb36YIiCSwrS_$tU|^KFe^XDLK(_(`>{{W# z>8n>ucrl}c7Bc}rg!Vu@xifm((2#mpTT)QzeJn?#U%PQ=fnvEYzT5v#lG>7%IK$lK zbCE*)tsU+s6-o$FiHz=g%B&&Rf3U5kB1q-B#5%^?MD=N{Z*8DnXO7{z$A3U+;p;es zu5YF7Gh-RRG}#tZt?-MXx>j;55Z9q437<%A%M?!||&(AnC~g zM9;-v{FryxWlFS%U4JMvNVN$QwnDVFsZribWu0GixBF)){-rcMt=;37xX6=@OPKS{gWVf9UG z7b-AxxF`7u0Q7kaTZyj@&kmQB6A``iy^duX8A1~Z3L+j$o-}d_oWwW8>50e-z@x%( zk#64Eu`O4{L7S};>9%C$-=`Jy?5eW(YXPU|YU#(D(c_S5qXn;9-HoyeOb08E_ls*W zPRIz0<_r1I9<;zK%Wu_Pt3S}uS!0uAX!C!&{H&4ES*|;pw0{`va7&Pn%|oy2ZYQ{8 z1x=g6h(}$F686O)s{Bbe5`6M~9!>HYP>BR{nO4l_WRk}ZjK%$hPGsD~1#5MejbKPr zv)d;wbIm{Ke(iU=M}}4JsbKc9k2$d{?;ul~lymm-0jZD_dsYl;M@$iba^2KYS3=8F zF(+?M&)cMI!hgRK+v(pRWkI189FVrrQMOq2*d%9IHuc5NBYZilI8dO_<+4b9Ifj>| z+@#GnH282eSP0u9tJK_cb3C8{q14VVQ!|*)2B{cn7^2-S=jpv6+IneF@7U7dG9Og1 zn<+j3TU&kS`Zd(frzEjzAN{}79!8uA>$+(5_9Zptuz!s$sKZU=!9;|NsC@N+=UGz@ zUZv4{inQM!m#I9wv%2dC2=G>Dygm=e)Oj&78)ZI(EF`h22_&IgCD?Ud%rVQPC4O8} z)mB{$cBrzDt~iMx-?*X4_3Y5aV9`4dQo)bqiX)8u{TgGIMUr*uMh!=S0ZRc*^Gd%w ziRXF)!++Sau?*Yb`veXE%YF2J2oBx8=z{#ZXtZ~=W-1goY}_uoP1-#?-6ZxHt>LWL zKG$2E3s-9`rOvJB7Z}%;v0OpKpNW9r5>@vB<*pwh)sMH&O!j8eqr|roGl5iEID^PV zWp%58p$)aZ7!F`uKDTDaS0n(Tve#q2PM6RPaer%#ih+}VQ7_gKt{_pWUM$!ohZ)Zo zI>6<$QxjG+?{+Fy3#K6NSI>R#W~)5-g~A2ImoNI6e^08_&8P8FTGMR}X=tc!419KW zOGGTx)mjW5l!*QiQpJZ<9B23eNHS}1t+Ke!?0e2a=MA( zqkq-oAQYH^-c3ktq-zgjWAz|G;`s2QTt!CwKVezYB@cA{Js1uIKdDJF8VXgfGN<$A?$%kf^8H4 z;yAi2x3Q;Li+>>aFf%QoXovv5mW~%R_kWF8ef5I?Dh(ksO5_mA`bNQ=);+j{C{1kK zmBS6+crsEQJ1RejCxA5$xhZD{f1z>7E~_2BVJ<**b6z5=IzaODs|4>=y#IvhZ(eEs z`WvKWl&TTCX?__E{b7B@34JbghO(#P@-11fAbzHmaceJ{bVIB>{8PgX(nkzgX6tT+j zMy`+ujF4X2Sb#j8*I0vf_@gY5%zwa7Qi<6RhqWAe-($SP49zOy8%^e8F|Um?3CgDx z8o$3Yh#eF1VuFk>{Hi`gvZsf`%n!0X5W&3DqLE)1vSV5&YE{n>Ic5vM0EGgJ>OH^& zeo-KQAxB)gS%5+nR=|GB`AZqUG=6KrQ=PG>I<6~Z`sQ)TT`SGBS`DFb88JYB$U zoiI6IEF!Sc(_x3?I1f!b;16wVzG*I?PaWpB3_s2u88}6{atw{$Qq>soQd)n(9`Jma zO>-8|tp*fNY^I|e8-J)_U(rie(Vhz8xZEZZD2(3d&o~WU67iro)Yj?&itGg%;8o%~ z68_>Sf-)3vGGXH<(11KkNu3}9(4y0mOweeAX>U~d7M*W^w0l5t#43_X65E|6{*j5L z72F~=xP{v#uOtVg-WU695~_a$4XOl$7xK0zPVS-$yd$#*xYusPF)T4})y@kY@B#`$ z=T%6*P)qll|5ZL}Edm}Ukwu$Lgw36xhvTjY$A$yRfmqy~)8f}I(8{3uRE{j6=)72H zPhI{iuo)<78%<^}!#?9-alKLXt^xfve!4AxIbbLqxP-!{^~T`^wD5n%%qh7hnGSkI zu&PIS1pA#23eEvQal=o0D$ z>qS>>FPp9^+=(PL|0yTgEG(Q?wHye&sZ5XAfVDoI7t&&yh~YOV#-9=iH5Pb(wB z+7+xH|eYI;V}125;cp$#+0ME#%`go{QFOc zRiIpU9SB*J0{KKr4>iJTX9y&==XM5O0oGRj~KeY*}ojF8r? zvR&Z>9Fx+}z4POtW^YolK{-lQD<0@ZPswE*9J$eBhf#laN!CQqnym>k@LG_-H`Q<7 zX1H({PJ2$3iB6yVj2!p97MaU~=S zm4Js;yw9*0xMreU@C2aeg9XErF;Li6Dk#PWlM5Q`E^=SLZ=c*kNlZKtu)sdbE6t1N zac&7}FMofgVg%%!zHZ&(c7x3nelf;tu&4ZdOBow7IUg0tXt_ zXKfllY46nmRHHZsOO_0!FA!d`F*Fzp9EFQo;yizL$y~pgry!ro#nVSL#L+G(;r~8( z55X-b`he*yW$AQKOv2$IBD9Du?hr}iXxBCqZ_1P&1<`gW^7gVlF@DGnx=%oz%zO_E zbhU*iPkY@d8qqmCGT_bo(CP*J_|A(;G`B8G(^kB{JiE`QH>gQN9k6C>GTq5;T{a+i z#7uwic)}Y|jPq1?crj9NFV4O)aNO4ywpwIh7jM4UiUfjE8|vM`P%x!zpyw_T@JUxc zFcGAE$q;%?#btxr3yq>Z@Q^(<4M-%4bzxXiZ<9Ru32k@kG%X789~*@WM~50p@uunEKek{0?Tqc!sep z!s-|M$2i5{d}bLN2_VqiM|$A@aDP-?3aQNN5D4pFzF*QV<=fo+)U5|*nRTWM#ERdQ zuxRK?*45risn?ugg!^N>-!fyP^KX4>@A3srG}rS)UztVeOj~3Ga0Ll25AxC#!Onla z(sOT`5(_pjrdg_)7S4tl2c)n;2n3+p1nnn^)*L|BU?W#4r1QeZMZ9(U6TT#^c>m9- z6f3Joq1v_$N?ZJ|cL*Qdj9EkoQ&>bMLl+J!Sd61OyqyN7r~^zwQ=P*Di8KVm}pQnE{;P@Kc!bG$IiV+ za2hf%piga5wH|R(ICLdEiCj5Z&b2hca3>IFjO6%Y6g!2L@d+Q#D#-T_XV{qX5e|j7 zjn~HmC8o4Q^m{#zYt5uxvyhsw0lll9>)`zIXarD)PEK(5UPHv%d|t7L-x`0RGHn`i zd_r-qSKH*H)6S;#T%&j>n$U4k@#JNbD*H{_2%mkD>da{mox|L)|xUW$s z_ykU5^`l3zv4_mlJ9c1IQEv>twXLU}0uIq;XhL0V=LN5dWQQV?X2BO!$s~f_#4kw0JFkTh3K(BYX)h!^pJV1h{ zB4xCNNzf_yV5#@JM!ZL<%$cmh$eiSv*#3>nm}qT!=}=2+t?mHG>Lf zu&VUe#BC2F-O%%pWJiB>X+*{c$yFBN*f(hOr*jxZveU%icW{Xj#a9TH!~wmrz5)7n zf?ThC-1U&!(nxtCaPRaVzDBt)2k}b__=bS^#p1~v{d=|qWz<+r%f$Relw(|^D!5~h zVPL+_3(o&Q>2Hxl?m1VTW~!&!QGbVf#MvSe_zmfoE-f@9Pl;J)Uc?SLZUNnu&pJ*fm`6NOizE3+`FglP zn0W;#CX)4|H3xrMw*)OepK*SZQqh#a13`)mW(VYqMEV1ei6!pMC6+^X?(@*I+?8H; zPYaR|dvJVP%#AdZyk!%t0bi2XfZtE-w zCQzjh{AQpq+}ct&i>DUS@nsLpp1Y(C*uVV>;8_WUg#l5LiT`T&pP-ls$>X%{f!iCd zAo>NFkR5JrF!P=%_`h&$W`HR>J*{v>#+}0pzr)m%twnI9hBbYf_sjK>7;*QlMbY)caLh*K46`S1F5?cS^Nb2)IOmmO(!wIi2`-y| z#kwsSw@#_J4T}sZ6Mhtm&2=XH{rP6ZtbwxEE8q8Wg&ZND=+v?;4pVSP#&fwW&5s(6 zl7tJ;eWV#ZTd(0{qK+S26pI6VI}nqlg9Cq$A(f`QFNl2(5{6ezX>1mCQ96nlNey=O z!HSMPN=cx8^|f!Lr&|dFR)N)Jj}Laz$pb_v(6O zi-C}JaA`pt!sEXrcscUGl1L8Y)f)LHBt=qV;32{PhX!=Ikk2Pt5A?ON3FytD_0UZR zF?<%?S!j4ud}xsvK?h?@Tvl`h`q+QG0RHO`oeIU#dpPr?1en=zY@G=)S`ACj!3$%5 zucjPYiAwd#q8q6^zx8~$fkk}(^kmau{jCQ`;dI%&k$?Cx+W*Lbnk~Ouz{0+y5%x)G zybMlW-MORS+e6b4@67>mw6+HPx{~`1u-S{cOcY_2>|M^TcD1kTeCDPsRq}tw5*b1b*@8J z>HLDkNB4~q(<`98hSb%X8S zy>YAGq7gtq@nLOm_-4VtlR5YKdQ>TN?x22dQ*{n*D|zWy zi(GZjmK=NO;l>PoB~E`*kZ@||!W5gkzhUn&)tpEa(7lVYUaP47$ldR65U~h*Lo|2r z$d^#<#=fc3yp8DW9F|F7fA$)4I9H`vhFRLsKvWDQCkm#c$e#)={6kYO_@ppdpl1v*I6B09lie z6x=vjvUytY7cif@g2AQ014RHLS66<|AR}wZ6<&5k+jk9eJ(j9-F3fKCm`FthE1VyWQm=zsti25Fl#$iKidFrX$^Fj{`lL|FLpdHzz z7M0aQxF$YmYji(J{Fe_p!g7OD2rVL~*o;XJF1yEjA%bzLEu;C1AvBYlXO%sa*n+NN zadSh$S6PBi)oH1e1F(f@5gFxb35MWI@5-{nLm{z-n}dJ6pMUYpWnzPsh(=RNqu%(B z*cebg=}upDvW-9kM`D^$pN=K4UZ-rltB7Ju91|fdWS~qa(>e>H2K0dY8Yi+ZJ2> zjSokv5)>k1G$$ZHz(J|F0w#`wl)sJl^}Mic2q=FV>q4(`Hd^fCrisjgd>YQZF=qYB zxIZ=@0gdk(`)-YEi9%xLd<|<%&T^=#!!;k85y~bSJ0()es^s3&4|G|(lb?VGmd58_ z#B4mvIeM{qC~_9AhPE)wS|DURR+QF$244w=u+C+gdY8|Q#;9nZ4e|vLR@i%1fl&OS z5y*d9p!y4~;XiQ@*k`1;qjBE`>(?gI1CyPfL594k5Q>^NKDR5xSG_SkF!1$4r1a|9 zdpT70;UISt008Rw;u2SrUZ0LH%X-LuPcU5Yw^k*%jed6@1z|^$q#|kGuNlSa;H7D8 zFl+lejar`OWLA$rzingkfpOn8nfvx)VJ?5J>svJpv1yV1{ygJT#7k4%FfX+n$_eJN z|7~*ClaO6IB5GH+<~ZO|xRCJPpw#(Xq+Zs=6{bJ`@HA7lHmY}>M`4mC(@NT4 z(`|sqZpMMs_E=O|3jH9-o2r9JjY4a%-KwH(*Co>LQ#gN4ket$B4CAaGIbnIP-X&y1 z_&i%A_aU@Nh-U*Axtt<-GV?S$WdMIi>W*!|o(N+_Sk%E7oAnLiEDFHHX&s2)nJr+>eGPv_SvgTqbiE>0?-PL0ft;-g;y|$KLvlsJZIsg zl9dOt&%_Qbg~@FVWKjP>jL*9%^EGpVTb$kx9hmOn7a5Ll3bNGO4tD~ct5y-}l$mZT zTczTAwJ4zK^O|Khp}?ZcdAnk*jc%eaQ=*chbxAKbb~B0S_LO6W*7{TK_R+DoDzOJD zW|*bUilJJDjyu71bEby4maBjDwQ*l<_B63z_Cjrh#5xs73=3dn_KZH&pP5l?L0JH4 zD8fykDz8ASV7#?WW^*TWbMK~I`%lje*AYyh^iJuS`#vPGPsT1>&}_+~z);^>!gnuj zVOH56xc1P2eShS+H#nf4S5ARF3A5n%`h-%VkY6zTEXitCWBqo;q^JIL-cwKREcqX${r6bt$PJH!#~4^OkwbBoyaPecewBV#R2px%RE zs-lzzzTK3rUkJ@b;+3=RE4IB`*$ zJ}Zm^0$+cuJLR_T%+C9WwpY5Tc-OzgXwWQ-22-o%ICo&o9UsJ$UK>*lPJoW>CINzs z1}2ZCsLijI5XEpJhEa~x_f*|^CtY1_79;AW@xM|1fH5t}U*%)NOHV$f?JNP3pW1Cr z)3pihdBn5_rlhVrRliJ@*tV5BhwrMW0pJKf(ZGLQav4Mw?_Ve^^EQ)Kc_6erpU3bb11XkL54u%%lotOmC9P_%v0AIL<;`CRE zv*UjO2?W{>so|lQ@$bt?`|aic*p@tHI@RJ@yO0IMK~AH-<`Wk*g!v>L^6w=8_!^=x zS-R$$)q3L2SVe1eYh_4E^XMq~8z)`58t*$fPGK8xf<2Ntu2sSj$HGd|2oD9-t%GJa z&zj(~EgTqTzF`iKQ;G@rl6E@VZADBj9zcI@c;mTI8Ez(28CH{_fjVldSGoUj0!9Lw zFl!5KqyO_=Dg9Ca6!n;6U>Viux7GR0lPoMeO|CWgg7Kp$NC?l^9|Q~6)j1Rc#LhkZ zav9f;&eijOX}%(FVuihjAzkgk#3za}fSq&78hX8TV>6q$N0jOvE9(}Hwql|wep!DQ zi0t;mB;>twgdu6z&q=<55{Up@dALYRyhb97C7vv4QCz&Lu~8p#Rkr&nyU3Zk*unHF zSty{}Ld zW>R539m{tsLhEdC73vbQmC!1V^<{q`BXKJkhF{^`j})9>#u5^5U9x1Ry!X!8FZu9Z ztlI}Rkb!_^h2?GlxxN{N=xG4dZ15B9b;zbbWt}shvtHFHq0f=siDLv$NfTaqb_dkW zkvw95`ZDFSs#U#^Rq_^rQQwX=zl;rz-Mqb9;;`SGP;n3R9Q(1XAk zhd)DLDZo~3<}2VF9?$0PRZjq-Oud9C| zTPm4uECJ3wf-gSkJ<6Ti8rdHmE&03=U*#SP@98hay@(?D6bcr|)?q#vC@(mN%P!C` z?OQl?DHF>gVYmYsvVe-Y-e)sf>6p4t+6eoL()djlw1BQ~4PZN!@T`9?-lb`&gRtQh zKAfA9u9fcmRka7xrY$Q*Ri7C|o+=Ea1=^|v2GhAO%mJNzGpN^l4lCnT77*B&U;;()>%6g^qlO5CDbVC`~<-5Nk5vN_Z26AFs$OaHk zNYz;oKg9w{3OW>h!2bNpDB`w*oJ?Ba_|Yy-U_&(e(2Syai84Gjfz&GkhOGSQ1>ViA z7A8dOP$D)eJ?zlE(N@FjBY&ZP`9=fx;Gv;;)*>NPAhw{bL!E!_^Jj&v+Q@#)gfirLilT{G5M6*3wFYckT6v?e#)POJ*dp ztl|?I?6QSnEW@=jzXI)|le-^ZmVDu9sjA4^SqV@hpYIYCGzxk}T7Uy|KzC@Tny1PW z0`_|yWjI0OX^Jqee){c=)f5R>Zv7|^FrP^k8t~XLSoB*3UU2MxTj`7`i#8|<5(I|; z5pHOUKK_6GRv*>0pe0s3jE#?_4?2SJJ?76G>`ne#;G+@CX~&0$rQ_)?j@$}g1ovrM z!DJ{|;jF%bVz&DPxf@|clAu|q-^p?Ynt*x&Aa-(spEOCmVm|&UF`de(%L%{YA{uwO z2T|z6O{;q4|HsmdYBn>#iaCR=N;y~ z)FPqiI+tx#Lm|bJGL|@p99ZE_IDGafpq4be&Zfrax7o?dzT(g<0pEE;4}EC#Qj;i^ynzY1XM2-)AMlojiM0Az3as_1z21h zD8qk`*0|~QT6|?Q)gm5Ko7X|`8VV3^!v0Ri-j8u9SNr(1+}|fuW#hzC42uk*U{33(E=zxu4*2?L}Jn8Zk5j=iHf+AWSrkN&JU{fF|sw);r( z=`0;flQi(l2PuHmj<6{mXxzGhp=nKbYyf|Pe$gc=%}U)~x_ArM8xoXlV$clG#4cVk zEZ~lQiim?p@~tj@&cjnWRPn3ropf(M+$99{YgdZ4)K-7i*52>vnd$%46!BSx^DSPF z;rWSsu|s(YU~5H~H%T}gtDZz%;h`to)Nl{7uP(WF1dbX9XV<41-ZyccIb;Wsc$mrQhZ8-gu^ zWpMPsP_>cSaA0B+S`ee7?vAwi{RCQOgLtS@-8~1|#-ZT*XFwTq{2)ek(nXKws!Tr4uI&;G|fo&pTI&CR(JtJ5-@Jq&?YcA^kfS;vu)imW1uE*JUbrYtz9 zOUUYqOo@hnV|Z@_Qd}2tD%KZ}G%7B^f^dXD^Za4(ECy4_A97SmO+bH&H_es!F(O6o zAGN^&dS*PvQhJKR6?Vd4T}_sVeLfS0+J(zu){sPSwk16AYbN5^gHAXO4hr6ZF=bVA zLA^GZ7$9Lk#xSP0i4ho#a?zgyeX#0W-F&3kjgz}KQG|t(Y8QtJTfoq|?!1bS|#+Hg~*Hl_=367*5fQRW_s#S+^R03^_U0CrI{Q#l% zN&^8Zei+~RUGTC(`}C3ftkq-$71);dBCLJeck`NEkH!xfrHFsrp&Bi?7fX2z4b`q& z68pBMGBWd-yh2updC%1M4|MMRzLl@|k3%|fENF6%p`IBkn&j?=HBu5CoZBLHr3Dkb zPGi9~{0pTCv#pmI|CN)AtcsuUo|4-aR?M!?PT%Sp+csF%WXL za$7u`q7Hv!ENw#8JeJX!M}g871oFExzH)QXTj-F??OfW+7fe;tw>P0EYQKE|*t+uo zrDk7j1()ty*t+GRj+LWh0&%WPm?{wEI$y8PK-H1+fqH)Ayh6x|?{!O6YyZ!S$49y7 z0H7jlW}R&6l)#b=v48OdwNG%T+?gU_)o-6cf7*X1-lHd{bNahn5v96)0X=PsGyQUn zp+u10Z!P2qDDbsyHHQUvLCEMHkTMxBAz5aO?Q;jc@u{w=IU+MR5sx1f^+zF$Q{ zg#oYgfwqP;Bs3tbE=vc5D)dn)?2bPs!4c9vk{LuD)Y6c6g(FNP-QS>a(%g03#xUG_ zV6%TLan}ps73g^3o{V@4l>cKSl0(Ptq4=+sd@uY#Lx1mX-6S)K!XDgj7HP!8ob#>q zHi2rV3ao1oLF0^M5V~!~zs5;!h4T3$))zHGIw>FcGA_$frY?J^x+s$KyOA8oe^S_~ zp8(}}QOYs`iRK=TzssH&pF@`9xm2K`0b+kU#vQVB@SP$?PAT4i1FMBGmY*5lG5=?f zjjWEUp=flx&3k7hU;*jjg8efdr{*G@x@1KH8PFT({IXP@nUupf=sd@S*ILX;YIHXN zm^)5ALI$aF-95ba;2wJA@^%?zHTAC3Nl!}oNuZV)0ohTm+MmWTDWlUro>F$r05O03 zOZPLDx}_HVSH!M6EN3w^6(xx#GHOLxBRaoYiBFQ{kzKIcO->Hbhz@$X0ZDBJr4o(f zt(m!h#@3#W-xTBi*Nen5rgR1w)${=vULdI5b%K`O@nm;!|GTE*P-ruzEy5Jvdejh- zE;;D*^^N|E9|3Z?;r9|R77OOd?%aPIRS%6}VCT@o4C$yQhPGDh4U=pB?;Hykle8?9 z4LUZ>Nvc^6Sg7(2q!gX%3s{w8JORqA@3jpf;}mG*-jBi9U(_K!RIwBn}X#am=_IIDn#Xv1w%wslK)wr0}gw7?PUk z9UkU#Ho6x5h^q#!0>FZ;9Y4fefBd;#U&|>M!lRF>@Dx*C*((%k6F&!RW9JWhY z-4!1K8u^f5+dD%^59nke-c5{q%tVjnR$+&Az##tVgU66+?i_khnaPKBCgE||s>@A` zR&S7KKrBBu=wiB4n2Fx_$Kej#?9wy1smqn`3|5vM9QeU^>ajQF6?KrPl#yVa7kS}g zePMqdKLn!8x$|H#wJ=wv%6oc2gu)P;o}pyX=om6D1feMYmpM=_TB z`f@cmqtluT3=6Zqajz0s=U2N8@m!{9qUe9Dgit1DNmSMJ8$7{ydc#i|nRv|Om7C%f z84TAf1S*bMx`%B@&Kq45E3iA1NFT_zL;TlyYrL1}WPfWs zUei0{2tMC8q~t+$`ltWj=pJ_ZTZ`a9q`N%Zz-LcZ;r{77V2!^C;xstbG42W!-sqjCwy~|7@hkumkcyAV#>UN#z!r$$OiGvzMsx!>6T&d2 zo&Tq8e8jEOcyv3?e8vLV8368b>TWR*gxG^OQSUL_)i5ehr~F2+vOt$36TOJBGZAeIM!l~Wuqh?V40E^#;2 zzf_`~SS)qrZahTbl3+kW2Un;$6dO&x?{Xqp<6#Ya&hu$*q9oFqRVJ25Ea9Z{0DYf7 zkbELwrY1K-tku5-!2+<|*BSUbNYs1s_WHvD(5f%uwsA%7zm)+i#W$e^?iPRFKYM<&w-Wk{ zl+WEG{PvFaO3Z&Uw9iCp$Iy;4ID?2L&SRy4vE&H;v^>?rbBgzVVkJeoCg?*-y3K2E zC+nwI5R6`=am8$!l-6Oy(fm2LVX#gW*U#j*09=VBp;?E_j$CD%W-5P4bg1Hkj5v5Z zh|Ta64aA8UCB({6g{~hKi5JSV02Sdt?A~ncwV@POK(DlHrQ3-|4K-}uxgZ?~&f31- z2V3AA4#eEy?u-(^1S#f1`r7D>AP6pB)*D!onU76b6}Cc);o8`5X6v;4z#zP|;c>26 z*5SBfdlS@XSv1sswE=%T2lSbBdM?k})9X!BPxTsxPM<1e?NCtCQPW##ZwW!X2p2aK z#IfaZ<2SV8eLLT59gdh1`k9$F4U`z9;1%EGe{rJTU@D9hv>cB`?@BvyCu$O?gONM`q%-$!K5d=sOtFzfq z&=iNa&1u&C=ZoISHaW^maSXwoQM<66te;O|X zb((8?I)+=mcG-W|S^NoedVZRM*=qM^$zIzlsm=GDs(XVhG(g#kL&Z@*#tW6pb}`1do8|!%80<|NUtJ*&pwKJ%Z?AYatR|+^o|{ zscm=!(COwmWW%Ax>r~_6$6&jDriNSyNYblTtluKv@9AxBBEgXD} zWMP2p#vjPl27!kg%emRX!KRN_!wf7HRR4qmVEeR`4K|YRMB$1`z}4Yay7HNIc(e+B z3mMA9GM^cRl>0BXdg_xh)A6)jEr<9?Kah@1Wr#+i1%M5?zd*s3xu1iUWb z@3=QV)!=_|-*s}!RKq}1#118BkY}{IJJPv+?`BT+*9g~r)!$UwG}o@SzCJPYV@yt# zrf)dTrT|Dw=xJE+&4L)P9*VK#mz9EyJEwS6t&_pq|Fj4qNXSFn3ePq4$*S6MRl5@x z;m)7HfZtTiAV_l^&5y>MM>#)+dmV-ZRa!g!vhY4-afhLOm0tLzkQ;k-@n;joQOxcXm)w zq`IWbDL*m@KYDkI!!uj4*)KQ;kms^Rpy?HV3c$y0U5gPPkfpaopIb-{r5IuHJ3puX z1DAif2Bw!zFe6K$((o%0+8n^2}mJua=qTGNhI*Q(TI!0~h|Uzg{*QHbJ> z0Mp)}RUW*3zMnm-LnLNk(w)Ff;5yuh&_s4HF3B5dGs7PLbQ`w38#6HlTJG@8LhE{} zNHIft1&TXUE$ zjbe?)5nE*#z^pRf8@4T5NWdq7vo_ak6kaIgo-|{-4X97KWx?8;4lWMRi5ccfxr-}>gWBd zY8r=P?yK2+?^4gp((Ld|`-_t%xj`FZaY*0_`Z;K%n5J3F#)-gr@~7QO@@lwq`m0Ob z^zGKMzqn+P1<)fa`WVG^6Z>Jzluv);_{0Wbs-TQO?)Bi#-)R5Hu&Ka=TZLxOAqq%2 zF4P<+)mn{V;^Wx5R1eVhiW!iZMxFsNW2=Krho~;KH78$Fietc_oN-d+L2jd54(5Zg zv<%#BRypsBbm!aTab};{e%1Zbr*+tF8LpVj=*gCIew;Xu6-+`kqc>Ib>big1^nd3^ zHy2|YDir4Dd%Wnjk*1FF0E}*L`Qd>b9*sqeJMs(}?#DGgngM70Sw7pKr0w5ro&l!j zD2UbKp@Z0P&u~bCy7IdvfwWO3W5wJ-ZoOjD+j)Kzlbyj3J6K6;y1L|% z?YpePA2K+@LO0?X)x=@D-)7J1E*l?S(uRM=_jXRsasq>KrTG+K-(3u~YJ^gS^WBwn z`T_p8{@?-_1b@O!d4H)4v3(tzG!nl;d8<4T%ry{{=4*j6$_nyxC4;k;=mWH;1R-;{IuOSK>C_JmCzMCr@IQgTj+xGCn!t~IvRxnPk+^t)#H7+R&6-riM)elbNKbS zO*KLtgcE#+BQ>yw`?c|$`5~6*I+d_u;jm}-%F$qo$15a9?V>Vrjk>l6(r*fxkffdm zeTDxDw&0G`Kper&m1XGTr;n6+#vF2%zLL=)&T+;1oW&(DKaaEJ@*w<5toE581an`hO?&N;ul&MjYYpQW3T)V5x@vKM=+%wT?0;qU{eeT61oWaty&`y#egZdyrQl zAW;h5L;OdH8{o)W=EP6`tk_4R4-< zpJyXPt+pbJyiTLW?>D{UUvFdwgB+{L7$qiQ6@T_>lUP`fqNe2OB^z&bGBt1G3IDm7 z*@oK8OrPM%u4=ACXSh(4_~fbX{~o{M$9Q6zVb&5@h}-8mHfNtIiWnyRDs~=0H7!Sh z?TRmo@P*_@h>Nu_wag%c15on3Ji2Vwb!{Jf9qEBYX6nb;G8#BbU}CjyCii8jrt6ND zn}2dbDfdw1L8sgGq9~sqg>y(Y1(y=?+#9)(P&s_F{HV~qrlYArQ%&slnW{^*{Tw{u zDFfLXMd)BR`+9!gB|_~(Kxy;#4)&S@Y_PL439XGk3cAigeHW{C2-f|D#eu*1(~x!o z;Poj8_&Bu(e!LkhiO)@Q2wa`u3Gt^6Fn>VaborAld7_4YTW;}E6ms@<0Vd@2-1yl@0!*E)7oo9HJ#ziKAN2)}0aV*2Ytbe$B zg)O3QnPj-3gk%14J_A(j;DhK_q&_v@Ys9M=MEwM&USC)?9|^HDX7PJ!aN_n&L9c@fX@?p0+#hcHz!9e-c0+0^;SatY0G}8 zD_?gBWqCUhn=);bRrDedLiUl2vW5b)ak6k&4%YRJSJtViT0N0e$@S4F>7lv)=LJ$!+m0EZjW=L&!s=t6!h1ZOE0VHt$+OD}c|kl=_k z-xB*aS*zVVmAc3o>@g>wGJk|1Q2ArT6@8Sn)r_%x#`?+0E2Z*admWfrmh8iH?kMfL z>AX7zq`HbJYCYMf9edAN#0F}<%aBGp5w@feqS{w zMdNwSD649abro%_O*Qx`D8j*9=Tj|He&`n)KZ8IJPO{_}pN&_r9DnvW+b1RT7QpeH zoLGxi^ZkBW25rx)W1r$$=zVc3HuL}GZa7f%Py^;F!&fBgWH9}>oT$c~>Qd(27~QXq zC9>dSaWviYx{)eF_B+K-tMapJ?p+{f_~d03#!AsO2+s_2cHXE9vP@w}WnhPwc(+u3 zxCH24k0+X$7Gf(@cMxJ<;~|thDFa!G1!RZH`rMbB>H@2OHkB|VZS+s7%Xb;Lg)E>9 zdE^s5ClnF^ykIE28pCKzd4|28?MU)?{oI##jOeXO;!e4h;$hA;kKDck*c6Jdap$CG zajFTS-WI5ycAbgS5dAX6oNv{q=B85p0H@*SCL-HLZ!$>Q;MVZ%% zVn^O0BW=`!QgLo-lngCvKBLss2#S8OceRWYDs;Pl;X;gb5&|rlqd#2~SF%m(+4_=>&ub~v=ydw<`w)KXvy%ZlND1Kz=-b9L;>8E6ZKGFzei&EA}1>8A}X zSP!MqE_vxRltfl6ruS8RIqrew=^5-~W&3$DybC~ixEU*Gh+7iNHW zuog;D(D(t+z#hPW|K-OOWspdaHZFRLY_w?%$x@CZR$z}F+jPQkhD11R zhZm!tm9i@KNbu};mll3O(dCG1N7CVc9{i#Z5BV1Ztge^CKJ>&VD;La@wE&YZ*GPB| zTJjU^ykMrE(ni1KrIJs^RyIAd#}%CgS_P?BDl59FDzicS3De-UZ!>yqd85m3TJg}L z%<`?r^Rm0f5!5hc^LiXnC&Ng-O;D%+0!GlU4j8Mpi|%j_@UYbW9J#`ZFBVUK)8uw* zw16d>xq9jpX&+fmuR4i@ve;_ktBW8Dqzn9lL!z{BPCpwQ9V{RxnPA5X_KoXHGYFzKP0U6{q#-Zi{*8^qx{oOqPXe#~ZgqW~9i`o4|9(I~4vK;0|kTy#6Etl3RxyvPg;G*upaHNG6 zpik|{c?1xkP!8vH9hR=S6Zactb)xA~aQ)L}&bd+3$6WXfbfK;=Z~pOKgz>omvp@u{ z*rF(YA)nK%QtC5wRCBW|<1ykpo6%>DA2iy`Ms_kUNgEMz)lp%hsAe`{!e>`HjZRQ=Eo7iy=kC)Li=%PZ9UtDutS9Qc~n&yqlu!J9(1 zrBQ#yU3OrXoBb9hWq>QRAno;q(1#}9qUNI<3p~$TN>vjA0Fos><9OD`bvSTB&qL2c zj%=-^;LVrc^v;v+VdcjuOm__>I=>H z6p5x(CQU5S*Mu}jv^9B)#LH{yHf>SqXlX8#^lmRIsNf0mphUVgYn}4111nPJOqJ&A z0Y}N2M_h#zT>^-I^*EzSfA=juugGKfJ0o-w@$aEGR*O!kWXagYk_%$a-~T_e;fw6u zhxj;YxYh?jnPwXhzIV3D1lCs))mfQfa~H}TGu=_&mYs8)J^lL1 zLYj`I7aiapD)Ue{>4>IVuB#lSn{4*-+AuqStTiLV$KJAPN zg{-*}d`?7#CD16C>URa+OMtvGvCt^@P2iw|fZVz_zbk6Jm>H^zyeJC%5m43C zFN|Zw4JKlzxS@VMm30ZsrBIi4@&e?4fQ5Cn+TfM9ehkg#0UTk&5J%fd&}4Q~y=rPf1(%v20fWcx1dKMheoYe?vy$4gi|rr0 zG0|2+HmE|}M7HUgY|i9uEVnF%i&0?ACZ(Cu1yOv~Q zW4Hv%gMIu-ZPU=SS^J$~k4~S_(!($^aOrPqnLD0v_ULD^f~?I-5wG%aUj!?EVe2c^ zh{wKVsN(-=hG6|i-go*iPaKS8-wyN$ukAbN0--#drFUqvqDL|;e-nsVO=V2T%z!mk zr8h+8nFP4iG7skfPC&80p_A)(zrOKle~=Y`IMUzeg7#1nS+{Tu`il`V7+;IrEx}?(tEHmGSan_GG?&(X9$kKz^H}@- zE*`1B0PlGk24;5ekc;mvfW-&)FKmOi^YsEf0e|2@i6$GBqsm7*-AU-c`@N5l!sL?3ywGAB_PqqTe%-5Kg)l-q(Mk7?O? zaXx=S>jzAG51HLduzC0fu%D_J3d6A^PU#bdIHz1R^#CV&MU#>0ylEVF8vBzT=b%{N z0Dlv<#m&I!(L|{B=8?KIFB5Qleqwz;}K+iA?zDzq!I}&8q z%q~^dJZZX-K%9&btv$*(2P6~n;!>Pena?F!TVo6ICpew=(l&q-AFt@hHhhtmXMTd$ zeRJ$~+{mbXk}kElw>#n--cEqQk0n+#gMa7%@4OQL>j#A^rkwW;OW-HpVsJg|SRY!O zssdY51qh2OE)27mfoYmOM7HA}bWn?FUlX3-gB{i^tw93RWHo>=6y`i()p~#dm_u^9 zd#tunpxWMR-2GXizcL7KN*s?=XPkLDM_ay2Dfh(LYhbA))`z*~GRQ94SzZgO!+$0u z9{;NtC|ckeOQa?^bJU9G#k=4kK$VITHWgkL%Ube`hFrXTNP7?Yq=I6E27Sr*R|ujp zJPP&hQ0P&KY|GH;*%Uq!F;PEihTb%6B)#~rRXJ^GbVyH~gm80bAZ0Hr#0OU!_Wed$b;$#^Yhz}v|5}oskRy7_ zJ%^!uEzPuB27g@UNugSO zZqEs-NT6r01o-bz;Ltu zPWx26xK}~e;=vIi>xQl^zH5ln6c1~^_6Z~C$t9&NMYxydS#O|S1;sM3WkTSrd9AG~ z7}Q`=v><`v=BJnY%|+Z`N`D-bU73j-Wmc`Y_B%m$XK;iwTt3uo-Ym6hwy(sN?{i6} zsFUoMuV5zp{gTGx#r(o5EqnX``Q1w+Epl8BPmYp39qZoT18okxn7B|hiiOodTp3W1 zGE^a{uOy_4c}9f-G09jRzAdvM9_bo`EJ^<*2{=$VxK}(^7DpZH%75ZfjY_{GgdChW z-Ayc8X*%KC;otvZv+}!V2%Z)0Z92holv+cXCe~gjmBxF-0at>Bwn=+C8X85Te#d$n zP9pzLGX=31T>OJO4#lVG+eu4*D!(~w^$Qnj*+7Lz(Vn}%njl)|#RvJ#aKv``NUxSP zo%s-Sl`UcZS8f4rHGha6&w8sin|FE2wV`;Wl78Y!{1C`nY3lPBo?Gd$pIz+ow`{AQ zwo#Qy*a!9uO>OBkBI#rR3Kg!-NHi5&-n^z~8Uf?09qh7eSU9e>H_J|~thHO^19wDQJU(+?BV z>Dv~U9qShnw9iNEi>H$^V_C09bsLW{n}c@~0d^U8GmV#o7IIV&w>0RVFeyb1f0_q9 zb0`vEwN0ax!E4a!9NOrD%2^TJ2<@jExJpzvcQ*K7rVNtMOd($Tgnt)^e9q-oIM-h9 z2H5d<9Dghm zzBX`(!K@9=OwplvLv^5ABNiHqC7YD-Q+G8lh{+@6RLzb!*OL-`;`@#mzfZ3$$kR#$ z6kR#^k~Q=cY0=)x@Ph*?R|-njfOy-8XLE+B-c50!x0&~lauY~c!}JV|z6*3E7ik40 z&wsakX6efRt<@1+M39%EX6;WQFV`NL1nGll9psH!ra0(>pNVj66ThY-yXj?B_R6;G-m#{FIl11uB@&a=0Bfs+DfQ-=?={eBP3XTeJ zh1&Hwzq5DVN0%c2ONNR%6b^Yl**A+M5r5lsr4q6xq-O@Eh;+aAJ>dHxxRe|fHhlP2 zc;!Nohn=emWqQQo(Q;*bLvC-%yMg@ZLWsdH9a5N^+(ZIoWuAD~knu zRT9y2Crb$DccrM(2(>lYk*h7s){-_kTb&xXZ%e_QVK_6^{j+?RR%>yF{t<-roPS+L zXDD5|{(O&ow|IV&7uBIKzAFK|LZM67PX+p9#hP^JVPUl0h3K7PuOg8WFMLVo^Nlx+ zFTmYjKM|li3j69IA9!7@Cpi!R?uVo3v3$d;MENLwfuvPazZz7WO2Grng(ivW5bdF` zu9bYCr?b-OQ%Xcuzlu18jN$l7On-+XJTiY9Pgx6ahX9a6dWGvN>YRY6nvC`FnfL2+ zz2Xc>RoBc!D!)ahd!|A4rTN6zoyHLdW7dZeGVLz?6wDZ-4V2 zxY`d56cUzjAsMY3_vmmLt6kL5r=(%g@HQ!fi(%ghe8`@P8Q}=GP2py;_y!dzEYV4Z z<*I?nO)ft9q4E1{W0lh%9Da|8JNDe+8KOljR!BSN;Y0fIXQ_8|>gh4V>$QTd$?%)^ zmHOGJQMbuZ)3YhO0yR%j_t&xbP?3DYQtdO?v|rjvjJ||}m}{4;0Rw%1=Xui7PPU>{ z-+=z+@4#PL#)`@6hb`#r%(7+Y>z>Uk)w=5h3X_H?&k1D2%3MUrAvks(ER0G5e2ULr zb9EW8Gc&Y%RyR_18CcTv5rGhIff7e1L#kUihU>XBKFzJUbem(T&5!WS7{(GVUw8lA z;s2=L4~BUbodlZ|ZH-w=SQFcQySRXR#mJvKB|&Y zO0UaSF08QO9JUwdbkN8i0K6^X(U&qH*VQKE04 z>-ritYE>GC-U~vS`P+c(u(JorvC9z`eJ@7aEUf1viTX42Kv9o>{_6u<{kQQZqddeZ z_T)(t!a*VXi$}|1`7F_|QA&-e6+^1P^1(|a&=m62W6$X3w)lGvhiF9e1Er&znbOx& z)2$%_C*VI#V}{6im#c_ieOR5>Wg2S3_JTojE=Ini)h>s$rDn<~iHg-{_OaUXBhq1> zedMW~O&QDFjqj>|#=0BIa2EsGkP!xGVE7BSl|LY8YW@cqy(re9K_rPVP2BYX?}_P$l5*rx+V&l9-&X}60TyfWK8fc=QSAFhIclJ#c6d-bINUq zztSctP?kYZWs>;F6Z4fg!&fH?M!>;+fE{Z7g8d)6?LLlw8nUJ;Qd_P5G%aQ;GWHMI zDJB;1`M0tecn>YmE&8Jf*KfU_$V{eXd*$iGe5^w8wYT40NJh8hg@^7;(IaotLf7)x z3j#jnLT&24%S_go94qa*_5R<&r28LojJZEiD~*+FuJ!3iDC*ML&d@S{zAi>M{0kt4&!pb|UMjXZ@7GCJK(wabv&p_tIs-Uok;iA|mXXOQ2)9P* z=WZ_)&GZUsAI`U521|v1PFZ?w-Qb-9C1PH?#VBRYCLI;&wkR;37<$q#3awjsNXaS}&=!cQ-~7}|jSZw$HF(T%t4XUHLFs=pE-MlqIhfYB}eua`Y1$n<7O3=Q{8hyq80MUbge zOT~eIt|$_o`QA57llvzA7UHhN49VN|rd~CFLB3-aI}Nx1k}X8!bojm58{;XLK%8X};icC# z5UZ-hP4*R<6HDc^AkA+Z!fr`?;kz|xs>*gA(v|FyVu;+b2=LL^nS!fYhZuW(&6Xf~ z1V|cfZmj%7i|aVmHFW^ZL35fG*3xy=;Gv|$#}{vXG!~n3-B`-|W(pB=m1uH*Q=|Se zN5t{?WJvCvOvkiWq#hW~t%??ZHbTF&FcjbV>jlWs;sGw$)DGy%@M|RGTpDC4o8K;_ z3O&`btJjMxZekcFoQl|L4;jawbi0ltwRNgmN5c;RFpp^z*FgxniCK1i)eabD_kvnQ zC<(DU1pEwbe*$0S2s{Fa-$?^NTWhvpv5FEKU)Pg30ge^1{8GUA%Rbyql~WFRH{ub z3|G3qorHvS5Rs z!Z^dCa-95FDq|iCG=}nE?cIRjIpXqlHMCa zPrj=-L^?elstnL^uN4iPg7k@UrjsB}oiJCfwMIZV^-M%bI! z{dE>zrEYxKAIUKsA^Ui>N!Vl(a(%NG|laF|rdA}wp zk?s<5gFy=nOoMZwH7lJu9g641of78}1^=;9K+2rduG>eJf?Ms7uW z{LJ#ghDqU*rDkYcnrV#ISr<_f)AMwLj!$7GanziiqBoO!vIn0?^P?2eN-74+Ilk(uAY_1P@9v{6!j{uW z+z)&|dB0cNM5&-TdJNt@Pz{M+q})Ars*6y6%zxLDUAI&hUkX7Y<~>|fd2xQXw}Ybj zu;s^TcCV!2A&DE#*HyaH)v9^T>jQ&UsP?v1@+-pE5^RO6RxMbAzB?f{GyV6WDbs|F_t6y{2=^`3=yYrA-lji_%SKC%b^5)aN_)h)N; z7-xJrf?x5OB4a5?udSAj1|-hB+(R`-dFjsJDzp&5^R&%aB7nm-)K#Owvq5-&y~cF{ zq0yIaZ1i!d<}(}|3v@~%1FjZs0E++`wildA`4Il~p+kbgA?qw!$BXFs$@UZitM0-EXR{+a@M%5qg%Y0u{nFud=K*J91CX_$ZawqQzZN}&vwSKiV zZq*D-j(2NG*0^s%g*4-KP`413 z0j?pOoz@S^I0b~cJ)O2#1eC9bP{oNXWp|7^jPu1DB24^$A{X-3gAZ6>P1j;%d4pP0 z-DRBca#olU+HAB+o(ZifYS_TEmAc>Dz`6Wc#v@|=apd5ZC8IEAXue$&ZSrlE^4~@f zBCLrfEAnkv(7uoJ`phGLZ}fX2P+6#0Nt(RjVqDdi7HJ~Ny~gtn!wo29goay12c#56 zsideJY-r{%ca{e!37Mxl%89v5w9F&E?xDYwgDdBOl#hWUav(lkiI6C91)uT6*3!PY zODDvzHxszUslx8Y5~2srxp}PRg8ArwhP~!kF4%0Q?QYr#cxoSi{fn8Cttm3SFF5|z zG4QL0R@iJDP2<6B0M3wDV;jn9#WEJ)6Q|Ff z(*UWSwc?S=v?&}3(MnMmp$jbHg2s}4fl_{6JvpU@Kw;;!7F`}OcxGFNoQ2Poh#9#7 zMvyDXY@6$e=2`b61lmEFy+?VI>$u#5n?kQ@t@QZa^tHi%LOUttF-DMVdFLfAA{qR$lBaRw6*C5^ihwD zLQ9J+)4q;>Z%Mc|5Wwz1AYQSN=U9m0a`;hDb`+N4U8rZW35KGL>#H5FFx=18xXHB4 zF3bUkR9U3MSJWB=BZ*Sq*my!#j_UGX#LEZhSvlJEJnr3ba<(uDVw@ek-qYVCVaSK1 zJI3Bs_8nHwDrK)v#3oKY_SQX`3hvExvxn>gxcP5?pT4Y>cgqu(J!Pfx1oL5n3lyOQ z?B_gI)?f&_Pi-RSU4o9OUBo^?WbE7Jyfqtc6j)1D$N*GK=2g=61#C(%;G*Cp~5B78iONs zIRVi^hOe_TpC`UyB}*0;&2(Ve4D*}*B?ZYg^=TSdzs%$kdEz(|eGuB@Zc~FULzHn% zHnC14I!U+eSh(x=Xl)}hR2&OOV_Yv*^|qUTH{(`#0UYhQMUfJjS7uLbe=L_pX^#Ot zPlM(x@%n3XhI{z4iNbqx$WdOz-%KU06<=0@^3;A}ZDLCd6v0K-%fa^Yc?_!vEIe`i znqF>VyI3t>-R%=qDgrx~83nK}FXxmimW-q}hQ&9OXMY+CbSonKc2|=WeaEMniNSk+ z8bo+)zmY!;s^=l8v~HQANW$$tu4K-onSRz95#F zS^rBqDpd3}>y}eG#rCQ}w;mgep#Nho4=|P-v>pfN=N7v(U7MXdP0(-L)0v-tHBZ6I z**)P-Bic+o1avoP~j68A%y*d1nsj%~Pyq5u?s8R-9Ss@;^ETO2x{ z-0M@kAK>xc^G-$BR5FF^hEwZ>S%>f2 zCR+zz?CsPh3b)kKru`xPS|Qe-_anoG|MkA6c|mnF*znD-^DVNywK$=F2WMmV2B_fP zcaqL9KkfW}Aq@}R$n|$#;$F6Q`C#BYsfbN;*+&nb#qIq2Z|E#^58$D<&~PT_i^6aN zL-0=#ssf(p?I!`e!tDARwVsXNNQ?r4v2U=Y(GIa)(Cs_rE=(>d>kOU_ z%=7gE1Pl%yG=SWK9Yb8`M{{HKbbR`A>H{qRs)o+pNjG73{mE#5#)R*2i<{t2(;wS} zH%B4kNnABG)ed-$!BqlESwuv|szszfc16l8m{0+(LQFX`y$@dYPW7ulYop6+Sp|f+ zZab9F8BPBEi z(Hc0*Ev*_j}dy-LFn~1m@v~@ z!4Iz_Xv7=U%F?fb`^hCkFL7AC<1{?HanQeLB&NI5cLY4v_`Xuz!)nQ#xlS)Rmxg=M z;xtr*p8w>3!nQ%FB7)+kxf8^IMz;JdWokzrpR=mYc4!k_>1n${5$|o|GQePPM%AC^ zLzrP`(}={Cg(&WC0@WwidUmaqY8VdZZwWy%W+b~}*f*lonr;~p%SY_w1;w)Ls@4+D z@@hL_q!sA+uLn~XJpgrS*gqu`Q+g#L9!4{$#?AeIU<|l%eUMjw}^x4PqeWmN@DIkn|?=s1+P)|_p!YfpS&3*QTOsZes?$E;mv?x zUFwkySP_6Rw%7R4cPlwv)6>91-9v?rXHcXKhMc{R93<%NVeeQiH82)D^_!UC=rAeb z9M4iAA6FW6EM$8$IqR=^{rx9Isx>N=qp{O)dM_>^0kQaq#4t{5{MG=nzqWiWHzd6V9wq7z;E}yCUtswzjSb2Ai*H`Qh&p10zG?wCH@g~ShGW>8FAp*#}l`}Ef7%d@l_ipa+PO- zxhtuE0GUF0jt$8*Vie}+xe671li~+GL`o?e7`3iP}+BxzG_crjiv=X}F#F>MMBNWe&AJ=*FnVWQLG`SuYiI zz&_riQSLPX*63}De81*BelmSM5l+MHJ(wo>q3^w_ah3Y|5;l4qVaky?u-HJYJAdir zWJvq)Z*_Tg=e!J7!`l&tk39~vX5cPk3H^`|NX3I7{a(|WZUpsV!)}~(68--E<{K>( z%X2hWLO4b3@Sj>Dc1*lrG&DPZOm#@au3j<@PS%$}t=bM5B#cub!L7^jk%XJymGRw? zcp;%*T{1K%MC5x}I;If2$w2ded;%x~Z6fNm6r63G?tuht(#+i*y4RPTffPhZQlT=? zeTW`xy*q^(Q`ujav7+RF6jvVX7W>eZVZ=-&#HOYQrZK&W?`;CQojB2d-E#6IBsU}H zC(0m{qw=!Q)Mf`Nw{uK&kcqNN)vIAWe%g|z}`v5 zSxvvvh866d7rRXPN4K3)<00xw*BIMb3ADT4U&y=%{+}zM1waYd9}K_r7by?Uxja zQ;uC#0R&QeVT4WC4V(%f9IA#SKC>c$=vnlz<>9oTkTWRU<07(ua!XlTMxT^uk*QBi z10a%VmhBC0E}?4UM;2)prNkP_9*}uCp)oqa%2M{;Az8~uCbuzMxw8sHBIHzAnF=&F zS0QKhU7XI_=A+a|1@NpK#FId7jcg^hI?3IcK4^(M(ec{)0 z;5TGMnu7Y4D~qas9m1vr8G1GqtMMn;FD5<1e_eJ*;y+!8A%p@owmFlJN(9;xY{2H2 z(%x8iV3gQ*LjRu@^o#alR@JsH+=R!r&2Q3{l~C;5TbS?ESwu?J2!%y8#vuWvX)Gsc zS(?8Ao5j)VkA+2oBIV|9lq|TV;O z!Ivrf02CGaI^lgU2({@Q;~O#502nA=M50u4@8`}ZAtbMiYn7@lxU6xd7zrn3F|MI1 zNJy9;&!ujERbJxN?chD~H>Kh?bDha#2gC9hahe6Kfn$+Z*Vu{XLNF3RDX=k@AxGCE z5kT>5!e?QwO<2>G;yzakZ9sD{4Gc!Nau<#Lk<6;$1Qlg#h`|Zf2Wifo3rtUxCVOc2 z^tPMgCX?-&kAYmq5s0MUKLJ};X&plpCV!>#h65~rm?%7CMt&4H|0QQcwmD`PMv+zU ztjsYqUJuX;3tKu`k}F(^+ce8{@A3G{0GWeJVTG63Yf%#oF@Ku|SShh^;_|bQSa>1) z0}k?`z9_?C_~z>*^QMfL!CqKW=~NkB$aFgjOn1bMiC7s4=%+L$-BC;I6_A=6cuDi z(Ho>!RU4}Uclvz>CcnzFxSp7%Wa}jcQbTnR?XN^#-Tti-2{<5sU0m{iYi@+!;^Dv` z6}q8B>Atv#g0|4lu@p7|tHe&U76=uNQx^+(^Rc>P~T$ zvSsP6_fxv>6Wzc%wN5anyJ*cuZHc9A5&STgHXDMc92jYK0`_ zi6EH~${rAIJCl+8`y$ccM=J6nGR*8VUf@SMAN*0Bnu08K>_*`mVfN=qWrQ6#(P;=~ zCYotAIk&M@v#&Bsl+}pw^D6`=;z;Iy)3ADpF$pQ3DAPi%H4o8lX-Ku8Hgek`+3?1d z@VnFm76zlBNb}033CDi4AUxcsa_!KJ7+~;%i4MX!DDEBq1IgaMs!&{u!PTsZgDagX zhvsGnf#Y1Pb7SC&<{2XxvK-tF^D&bv-Tnszu6EhRi;(j)GQ=~-_XD%s;5vbSoS{GN z7fdFXNe!)DxHHoDg|Liim?%0{n`C$$xo$n+0=cCD~coO^9Y>&Fv(YPM3Q6ST@ z9xa5^DO(R7k{-eFP?;cR4>|T!CMd={sDEE(j5U6p1qNUeoY-nfU@9jxkx%YkpyN@K z>Bd7u-{r9py(+5%|8IqVp6|39n~4;(4@?scODu~;RS(03+wk-%_Vcue@~(tGf|YreqUG)12WytRH8PFoU|E8I@gBv znjH_bM>Nz0E4HQ7JeD7vQgdpbUs7v|$Y>g{0#vr~c_D#+c{vCUEcw&Sdu=?ajxzP< z2w%nCGUnOtAL-kDt`t#+{y#}*!r4%P^HBO}@UnMxN(1Pazk;ow^b5-S>fa#544;T1 zY=X=VsnTNO(8d_&+Ev@&ce{fPeFxtgs}GNrbnJk*ykXVSd>4Z^Q~NozpE)uVvKxTY z>Sbe{Q_m!SIH;*J;;=V;^x{t0=O9Vq;%U;}nkMcf1Uz2eWc$|nuJtUexAJ^i($8)e z1WZG=ze|1+?zeL-b)L~Er~{hly-2s|WC2oy8I8FE;I9%S0rD8M&()&4z!_sDwe3yC zkFW-@3N4R6p+t*`Xp(Hf0uOATMhF0}xl=#MO7CdlmH zg_6Gs*9KX3NfpNwixFoGa-x4wWdEzZMa69iHwV9b$!`du+K z+`vWhDrdy_zrD1>GjUpCqhwi-o}@SWRUaUfN=6_7=+AWcn9y5UTmGuIR-Vn{)Nqry0>Tg(;7ABQV$jxW&bUocBSFO0xs>5ff^3XdC4dpT}4MnhjO=!RK z-qXd;1IJM^5dzHLC~P*W9eH9#$*A>zD~8O@pC~o+YM@%?p;ro2O2m$ww0KTl*r;*)NbMI%lB`l&<)^nSA>x%GV^M z&D0pwoDpL7^RHDa2+5Ij4~SL*gs8I;?h9=8krXeatrj1h{sbBe2^7(P)%Q<_cfIhe zGIjEo0v;n=I=2s8Mp1b`e|7#q5IZumfRMMNG+=63QetZMSSF%Bk?rwtzEV|}|1_R!4Qc_A(Q zbw$w26>B3vNn|JhGHa| ziw-oSMFS@kI4KZs;#QV5c5R=#j*ei|W1S%Z_?S)gSO@(ddBG=D-t9f_VpU)MWt|^S zd%e=puV_v7mCtn+BY{z3$Z1H(%*I7}WCCvjCpi6rV_|a(#~p@$?`pPPS|~5ys}Aue zQy0`)ewFFV>_7bi7He5Ji!dZQNoxg9Ilbqof+CoV_M%NU?R*7v2Ymm<;_OdMs~f6{)w2oq;f8DpVe z3rtaA@Rz<&Lp+6lv%b20RGw)az0n+2D{HBPK`G!-6~ZUSQ8Si#wDBgsOY2<_~mu!eNv{z6jm z1p_MnSFyb31EefYOgusZ2Kvp2^34)|JI6%P2UfJqB}83+AE`no?Jq~ZZ@89p0Iuqq zmZ{YcmWxsx7Q8fpWmiG%PMDW$PX;rWOG{dR&-IbzR!Sv7!CR5aZ1)^Z%zPCwI;C?NWtQD z#>qhIVLZ7#8?Dx%eK1|$&;V~CFQ0dmbXu(pe1bze(dbnv+Y!I?dS!X+ur+qbLzg*4 z-yM{k620eM&-=235(rI*Km)dJ#g&|pST?>_L+F%`Ji}M&)c&XpMEI2s75Z(INyqIC zUo&ifcZ04x%^s(}vm)K>6FUBs*T{?;_eGte60&ghv#Dgi5F)8SE1OPw?w7BuTAJqB zpC_~o9`>q#tj5`Yl;83+ znO3(FaL}6hocm%6$K2#V!~YN1>OW#Rv5eDy30L6!<^+FFBwCcOSz>~T`C@E9sRv;E z+<3YfwXp-RHf1~HvJX^gU>NfK>fWfQt)nAyBJe7D3h&i$;T7bdgTl-?e=TJPdEvw`Yhsd(Eg}%J5%$_v?|8h z$JQqw#)&9?JXKI6!&PkyqBfKzzT*<~C7!xT5Y#1HXiu z2)r5Lu(-HtX6i0PC!eqhW>(_ME?zwAJzIiURaScl@a@N04$HgJr+&myZZYzI09bJS zbAMNlj`089mp?bDFJ0ZKtlL@;50&VdOkw}(J^hxv0SNjSF4+<-2~0oY%hNYRp>wTn zo^>E`V(o~OWE@01H51}0+GA5WD%o&fon?HEDftlThv8UMs>dks<8^R5u)X~yY^m%I zN67AON^>W))e7gEyo8R&*IKQAJVGG=7e!e8EKaYQ4`58U;_Q`2@_|r)yRB8gPV|=( zE8K#15X*e%I~_~+C|YOV)HinG`#lMeRk=p&HN5lSRXnd;E(m3 zdXzz3`vS@JV^A|?3Mdqlv zLg+E0WWuv99+4N>znEBH9pe*_53UJU+idImG3)>9s>BhIk6F$JdmJUxsHk5_I$K&J|h=@fmYI9#@`Kx_=M#| z=Hm*VyM@C;Of<;R=+#Vr>csxr{(DZPJ_x#Y@p*40NJe=jy94U9tw#}U0%xpk6`b^O zO;rpB(7>ccV{{7O7TpVdo_kn}kGW!K93BC_3c9Rnwz_RW4Y^SD60-&`6LOEc-$mTm zX6^D=v8&y}X+**X2NbZj$oLk8R)q+E1H<)s>^Ehc1pb38 zOOFq0PG}Z<*{N-k4Sa9NBUTwFJXg*CR(nymE-k}kPG*9{c;e8q;w8CQLty@;M*w!` z>b94OA7bOraL(yZ>Y;1(f*t4+VBGKq7MV4BH6ZOK@_+kyR8nSd(X$gNQ?U?J5>#XS zYnY8J2RqpUESvRzfgk7%eN2_z+tmRwe4>kK#8Y;E;NnJeu&C5Y1Kmo}wY!F~u}o1J z0UjAh{{ONc&oVkxV5-VBADwDEXI{Dr3xcwLI<|%Rj?*JW2+=lM&p8QPY0QG$ z9B@1?3F4Y+X2k)>pa`9i-JGjac;m&M~XFr56kqy$M*0vm*l3n%Qu7m29 zcd_{$2X{^E;EDtanNL74Mos( z5Ooz|50(QQHKUzhN}Jb%MkKsjUw9~>ZN$3Fs3}D`zz9*+gXam7P0Ds4i=)K&&*A?+ z=yu>hBGg5iWnQU{d-zjk6-C%_`AE4kGQe_kBxWf45&czu`AsQHgzty;64!)x z038VRJ7n3>--%vM$GV{*$pag&+)-JDyR3)>z~-$*v7Z+VA0vSlcuj>dW+(JS&iz|3 zf8@_YWQXu>R3pEW;lt}Mr!W6j*!u53Wn1@!EBQke1luT0oGuXu@${KJ#X0r*uW_TW z&zDDZ!HZePbhmitw#z8GAes9P*F1=S3OJ?*u26L@v0T6_VO8X^LZ}2Hyla9afC_AE z`H*3T@Qpl5d4Kjnoiv9o9gCWC6KXrYHwoApi$2<%7NwgLOU`|{emv;+%LUFA}04`v^L zs`4vMpTL^+?=xa-)m_2)fy%Pln&|Am-o5jx6>lpi5h7J1!$S?IPN}2NhNCDhVr0+b z>S6!1Pe2vE@$5D|jkd9Y;-6`MF>*jdv095tB_@M+$kmnb6Nq|Y3A8KOKiJDjIkKm& zM;m*4j$<%8Rw2P6I{gu0!&OC)`K*+v}kC(g4y#>MbSE*lJzv@IEqCJ z2EfP^T1`lHAo!XcAfpVvB2DBqa*qYObu@T{o`-3kdaChaDCkBzwgoqT`a>qT?2D9O zlYU+}xV`*+RHgXJ1Jsi#(3^UDsNa0~lv^%{-4r58Mg#_k;ACCv#nck_jHWXrKf4$) zVW=hs-g+||2R{4^C#};FQW`C1rJm=uZyM_ELq$)~k=B!?3*#VCY@k#vX2i?nf39-% zB~WjP;T+6&oHIBGtzyxCy6&{LbAyRUs?kkZ#eGCEYIAz8I_#PIizeW=;0J?gO9yge zI0K@0;W$#g6&U}Gh*q51JvEdy16M^VS(@*W>aU0*gkDjp4ovTv7f}o_UqtcPQQ^IzgymZx&wRWqFUf*{j#}BOk$j4HFQ?$Ejqo#f7)yz%&d;# z?QiUwRJs;Hm&aLRcMh@0sm6`enV^OvGHzavFWFUS_A34gb|*=XrIZQEWBre%tqu!p zlT-}-1JMAR@OG#iA7#OQbN2p@I}0GJk(Z$il>c-ACxV(5?MDGU3EeVpvj$DB|Aom( zWY@J6LTB8$Kv-|$(n`qGe?U~fwz0t^W!g{4(x@#hPo#IU}I};iqRm zF@X%vb=<(73wxixj-!lYrY-JL?wqGiLC6sc#9;;QU-r$~w_jeCH$ErZ2rPP>p@xAj zJL`r5dOeZSu;ME~h{#ilAhP|&9f2()%MzQ4rm8TRzBHTLPw)2DWq(Z=)5Sr2GEX~3lAn;ubb6dG(XahIH=s@!??^76^<~6$G0Q}S~R{i7ft>=bS3BxIZ5+JEL;he zt~rw-sk)m=RWb!_G+-wC*AJN#izC^@@m~k(5GyaDOr*n86f1*oo?{olUuT%K;J>6F0Vob>6xKICIoQwM~-$4-1S<)2`>l|6#U*4C$lHM9P>CX-ALPG-QI~4tU?0y5b{2lRhaoA(WNPXhqaIR zg>?5Z{l@jR;9Y?_f1d$h$`{+0>f^8Hcj2bSZ-<5yZ%u)qp9~q0xh@v!Kq0&^SNQxu^fP%0 z+xy>d4;;q~!f0J?9J3s#z$xLw*B4^Myve81#X`+PJ&**-p3ZPMceU89MZ0PB%EtQL zfBh{J-7%#_djZu>&{sAUo-I9c>Acax-ZEoM692E1=;PxmpEHx8{0e1&@g-e$MIuM! zQN3}KRL@itp+{wvHJF&ZD3Ur$f{tne>>f}w?jQzWe^gCFn2Pq)!4sl^o12WVMb0E=6*SCYOXvIw zzsd@bo1?^n^qlNCpLH3%k&aGs&NtM)C(G#Uy3{oOhiw_ok{r6o@+LOCQC+j&Phkts zF-(Gn)TPOkA=!tCG#=9>WURi|lwyk4e~T=^ z-gd?P{16&$yJ=N-H_#l&>hR0Y?7!}4hn36VWwz_WCN)l!Yri8+m5-9#l3z(!i_k2H zdchcRL+If6#Q6VUG5}$%2&<>LxbAL3ka-$1p-&E7sIE@LwC!GO8qEAA^l9LRg6}=n zqvm{Ge3>P0Gt^`)R@$_Tq;%M%Ltv%Ft>lBCI!ntI--kX===PX zDL-O??wGh~$5QN9Wkf_4zVd@^qi!397(o-Dk`}Z{_-i#|>so{%s;sf6Z>;@mYl^F6 zD~8z&upn7o-Ajm%Y)8}2>>-N5j_qhX*+!unv$n zL+e-9S99;fu&4}!d1bjf0KYzwwtkigGB-z)E_ofK>I0YPo!BhWDv9WN-b)_5UEe0z zL1b(T^0V-a?0!m^hjxCMr-`3jwxP=oQDMAC^4Nb=16p76>gg|LM2Fw2mbaUV--AIe zO^xe-$0(CO8%hbcGAH*rf0N0c^^@V-O$CD8%6yy!uLcOK%E}$DFM;~DLukIEO~qw@ z_w3$8h2p=$55{SWiB$^vm#oSXz&8An=vU{|eYw-bcvf ziayq5;VL}fJ05e?bXfUx__zOrA$@biep5jG9My+kO7@C+DyD$le@ahRrTDaYg5I+- z4qCO}+ew%5kx8B%j`zz^$^y3Y66uQ)!KlzI|FrC|(k7b|A5DG|3ie&IiZmC7IXk6L zQT{tTW6*>G@B2P4PiX|F)f}o>6X< zZwdJf;rq#dCr2xm zSt!CY_&uBo`H!84a{jX4BTZz^Yi32;4>uh;$z15-7`D^(h2p92)omt*PCD6m6x7b< z!prd$CK1S?M@bxJl$gDCSeB5Om5;@ClyFuPG(FIE09T)!^JYK)HV2~wc6xL-Q$%=+ zce($hxs%8Fe`WEjqS)W#0=an15{>AOink~Zy(O{x$f%Ef%bo)S1F)WENmm8d9ZuKUa6J(cLi`SfUnFu-wR(d%lMG7J(p{@+Ece~8a_>n_-~6@oWcYXGuQ+SRG_7*_{N3JJ zA~kc%3jN4xhE;!u)3EZm2^|O>4lp1@&XIO=6>W(;rXb7)&&fG~K2kLiR>Q~3wD|kj zrb~jQe|#^OEUoZgBa*%EKv;eaMnvW2?xU^Vs(JWLosY-0!Ia)@y+1Hy zDGH2T172iVMPJ`D=}DYHirr~)=W7bck%jI(FyhAK8v@Vb1knRnys}^JBj!lvgG}TB zw>D=ZZ%)l-Hk+GITVCpHo6waXW`_>cn=i-ye>f{{EJhHXDAB}GFV;~$U-AGwH<)_C zAvQmY2h+?6PdUJeG7VR1mBy2FRrlxF{|jo#!oCKg>iErP9iS{?-g+j7M0lWmK|>7P zux#v`w>-FumE+W%{3aI>?`?X#RQ9%XluJXqnFWQrU zp-naybCMjD5Li9^eY7vM@S7dh)>bP?)SAl$iT{3+m;yp$BQiI2+NWo)=Y7DH-U6jXjBsdef0zdUT0h6R0`~n!duVvGEz`%6yZiNQ^@HK6 z5BIJ0dfl(>*Zrq@vCwYvBue;6*C{*Eyh*`7jD1}{!axN_eY2?*LO(J;n8`*hrR52! z+*7-YUzn4NfiQ@yqnUyXAQQ*Dl$5ULxQ->$AR5#`i_PY7kh%FRj*hd}Ma3Z3-v7N;Px53{mNZ`caN$|C|MgK(obU z=^%uf#Gc&Mii`Xy01A+hf5JI&0vhO{d0EO&_F0H|mq$L3TIw5^qa-MC538yIq(Et~ z=BSu)qNMfl{HYZMv*?w!UHS^zeTRCINV&5qz#pC>R2E{gAK z+6w#)r5BM&_qpt0T8CAMAzGpoy$%vc4N)J+LwGctKb_qH&Lf3e>8);ZB~(J zU@r6Nv3oJiKe(1U*@SSe{uL|AQyVhK@}dFV#E+bL#4wt7IFc-%xdV5ACzd)$Q$?N5 zX@+1YaQZNgF$c5BSQ#q1A(D+w>xWmJwGUNo%4}s<9XHdAy$Y6kwfremqd4x*%u>6} zmwzZ>oqwB2$$2Qi0ZS7vfArCe*3C6-0Gp=pA$=l-^~CNfbObCi0RqZmSP7zMO6NE>z^CzVqeGv9(Uda zIe?_bX`s56q7)Hd`kNGWA%_HFRY>`Y*6^P-aQ36Nw8*UJPmY;mf5&Ve*rMb?yOQ&F zFcJsI@v$HNMV~?;(1L#gu%0+Zxuz+&!`L3d@IWWu_^5e$Hg{yCl9}MWRJh@nd%bAL zzU((3-zEF2kzR?K%ve}m%Pr3KQ@8i-rSGX{|5y!BIJaT&weX}>sskYYE1x?6QCTUP zw)XBm9TLnD*9r0?e=UV<$;DNuz+!AH?199EPWnzf(WTUPW_ciOsZnH6zQWA9GGs2F zo8aQw*Io3xkES)^Gxi)>;mZ=KD^iI0eF_;^}Z(R`R*KGAXGurI4YA1vS={%F`|Gt9; zWbC#je|K@~sIJWvU#U1c!ogx}s4<1|Ye0+4t?E>ookKCU*{bttR6Octr^QOV6CvtA zafP|GhG0rYLRyy_8(&o$#g_LNO#U9v5Drb;=9f0_##EwK@2NWOVFZIvB*SWR~?4bSL(M{{EPv6&K@ zx=cjXPk)<61Jk2J*Tv1;&FSMkEYvA3>X&5ND<6}MLXrHnlUj@Tpf?xWJRy=Bp<4B2 zaLyv>wSF-@TLt1?#S#eDJy&|tW=>|&ZZozFY$1w|@oBKq~{tN-mq$LW<{0PLg=egrO1xKQ|rw0a!aG`AL`^?xBA z@K&9qwauWa!x*bsaXD$cKpIB6!_gD*A=YK;oj``Cl}kHQs&wO~(qZ=D9S!;G(%qIWb%5BnW{zyK8C16MzU73L5aMdUb5Bml{PJdpb`o z!+>1SIS}M##GgoA?jwmC-jPz2e<8u1uhM8q!I_I;kBx*S3~}cWGg3ODhvRY#A?Lig zvq~>V;qYH)0(6+fo&}0Hq9Vq=k*#ml{hZpu=_-TkA7Daj=TZ-)_ToEl0VyUj53 z=lzi8>M4v%9f(UtOm|O~t;6Pq3P0z*v7rpn_NQ>{xZ!ExiOZe)1S#c6e~-bvANpIP zAW0cz!$gp3ea3vVG1`hHUeRRLpVzn3h1p`G2>S>V$*Ouwk8Mdhe9Xq!Vd{X!sg5se#_75bm znt9{A8@y3v>9`GCMc@$yJ?PpEpjWM0EKW2{o7s#L2st@^d(T%E{*<-Gja_C-u)~&gz`NF|%g4 zVB>8dxbL3Dv~$86&-&sAV2I%Nv=v%?{=axeIoRga9OgA$y25afn8$$g34xyvvf<^L z$2lMNcXbu(IsP6%e(@OBNxIp`%*fEtakgg1X;TNkEU227xI}qsuaKCLbg-i zy5v*B+ho|Q;rE^7j%RTJa8Aqf)7Sy8p;MP(y3~Jou72O3J;N1` z|GR}l7=frj50B!M-vaj0mT7uGJ&>?za3eSE-wm@!- zh9AbTnCPB-j97d(mJUckHa?$7QehE!^Qg{B(So})n@Mru!Ry2p2p$3qV#`1ei}$s^ z@PIQXPb)a^z*&;c;p$=i$L<9&ZmSLdIRWhq;>GE!f-L};P}3m3WyB;AWGlEYNv(3X zc#u>lf2ZFzh?64@vT10_fczH63tr1e5>gpCndW| z+}21fd@b90;&{YuOcZXt-@9*-Ei_gaae^X(%4&PWX zH}c(eCFYEC+sc6zRkiQkKdo+^?L1R8z+EUfMg-~dJ+tI+^?`?!XsVB0ux*QYc@SEFL`RQAzzCSQ-MfQ~8KL-N7r9vcGa0udwaFNH3vehb)To;g zp5WGkyk;Ku@JFpVhXw5bTu7L5oLZ9tHTTYtc(q`!tUuElNWQl2lg9O`_K!ightzf6 z0)l5DGASDD>cug8H?Ao*9g1$C!>TbYf9Pz0-6}Q`sl5T#E1;y+6+@SsAX5)~PaS@0 z1qS~?VfJekoon_o)k(`I-#abcHWjR8JEV31Wg(hmD!ZJ@o>sw&K6zjg;#ufcG(mnN=+|`%1Hhs6HqDuBQe$yfTvhNH zC7BFLtH}JGur;3xM+FsiTSdzoXb}7?lnyUG3ff=|NpRi1Q+?lgLI&X{Q?Y()~$q!j!?6Lot`VE6!JJOeRHbbiJ?q(-5V zOs;19L~ffy>yA6Jgo?NIlXM$9`}A2u1BpKeQj%GK>4LipUee!bB@h7d;*(IZjx2^u zt_UoR!}>UY=l_Ohwi{Oyg|_F$`{yq7cJ^uBn^8FPcge%%DyEhs5W*de843Lw8U4{W*`$tHy) z#6)j$W?>0K&lgMvSlLnae|f{esZEYdOQwqO!5H%@t@~}MprUk~S^{K{Xy5H8fD#ds z*4*FtB@*0SZCh}0^|Y10f{DXVHya^t4|jnfYfIwKoGRDAeC28OlNItz(|)Xa;;Q5#GR?d z?b}Pd4Wtk1LH5o^E~Iu_7zLHMU%k!ik$V*fzQTQg@z&PD4q6>LFuiqT z$?Hs6cQvONy0;r{nN)#YbzF7MQYzTw8|sGW&5UDsDcCFOe-8Nw*3KRzg>*ZD4s?z@ zIQ|5x@R@nt(n|w%z{S=Jn7Yh0k{beQ16}g?Ug3y8NXZ&#{ABWhIZs7?G%gQp)p7If zc^g*VhiO@9_wX^dp1*0v?>)^1?zQFVwo;C%E;8=J2GME(xYmF#7-8Iy$KNeGELZui zA4xIY8(8!Se<@W=FtO;#v6OTV26t6TN#z54wPAJ#wjJw8K>WWIx0In5UXjMp-f)h6 z;FL2nP=;GySK0WcYW<*^22aQ!YeUo}iZoN+_%~!NmL(XPf2-!sc$^t$4&32FbLL>i zj|z7+ep=FSk0wDCIRw*EljX#1D&=1w4Px~4%|;B8f16wWl=fYoZ3%I=Xtty|at;EN zttuA1!Otc%-?3)lB4|+^>s!fBPe>$05XT5Sy%!I^2L~~P^B+SpQJda!^@JneK5+zY zm_j$$iY$wj(jMHuSU+mclqi)3 z6WO8Vf6XOH`mlBZxo^-!CUdd%S)dCY$1Ne+pT>Gvu#3B}(!_G4*)eWqm3t3q(ulf36<(zjis#6-&A?^<6M*ETo>oGU35j zD?)eLtatd1+%TSj{4JdNS#JC89?JOEM>rQl6r}h8+iDCcS5cJh^gUIc#2qgfV+*63 z8unq9aqOKck?qo89YMk~WN+>h??tCiUB%Ja1{5edA2X}Ee_G14{BY*Bwq5yWadA+3 ze*hdzUfkX~QqJ(SXIA1t2PZ-IP#M#R|cD+z{DuN^~&|g#4Y$ zuD~l;Z{TbfcHfRzMsuEGzLZXq&zpJO(K5MkrAB371S#l*1}~k^jBswB{Jmvpf7&AA zIO4BX>dPN&%RuuL2Ywd@*QpLgwD(6>^*^jsxG$iee%)nDxG}p$lKxx8e!TjM#0n|{ z&Mt%1b<6aOjNyV=>E4vt=$(nSk3RC*6yTsXU=1g?)I{|$wn5AL2j3sNd}V&2cStr0 zlR43Q`rL3?Wt=Q}Nu>3b=GVgIe}NtRyA_!>wQ6=VsrLYs9HK~`v3L=<+R!IKuK4y$ zxX{qR4WW*PDR0T~-s!y-BaGQS{poR)kI6nqF@PJt6KC$kdWO%9f|bnXxqIGI>WVK% zsJr9b_uG4p5*In zVE)2^BLRdH?%)p}H6D})&|-{WWGe~XGh7ni{HZo?h+ z0mG9lCiaYeD|bT{`d+uVe}%C>07r6SWN@1}nV;|2vD)C@S47jOn*Xv^bbJcA&TE4prRX@Rm%O-V(P`JeUwdEzqVv4{6qK7IG^Tuf65Dxnxq}fby32@ z*453-K#4n=2ZnsfF-fFgG@wIR9ZVaypl^mmNdr_^u6ME|@T%W`$P%7ZfGe}yVGgSS zeFI~JngxH~@^Wyh=uW=jKTcB~^L@X;EG`Te#XnIFQEcmdE&SM8!sYPuuHL5U+H@wC zQ-YeGB``9bm@P5(f1e+(aAe4qk5;X3tY#n}D`G;M583XaQ>~~za$&HpI6Qoeo=uCs z%OFK})Sirypkcqsx@KEG=RCK~renELag50?RspAe6MPt)0}AgSvq_!_OF1;{W>DBI z2mBKkuOf;HCQDf7$aA>{$dqHRZJA%N_zk zW;Q<8-yMsmRcKQ zj!e6zOC#61e`bGOhk^`AQ>{4?j$@fcYtCvr7f|Qmd1HV)8i2V2yK$9J zF-&_vz76ze3N;`$sRpNkeT! zCo^CX82(N>s_NTgGmF);ZG_S5mt{-k@bKOPM zp7~8RnEMQsY!Rji`PH^I&)>f8gPpcrI&+XF{gIOP^Egq-b@x*4c<*QnyeQ*RFNMVm zf1wE!KuvxX;z#HP|M0u10IbWboE;C1U>GZaf+4HBoQ+ZVYT4lNpa_l~Ri-mA;xY?@ zyh-e7k0-_HuG1irQ}F`G3|{r7$9I?UNR!il*dm^@G1pf8S+4*bceNE1@F;Zmtnpt~ zMbbv+3R?mGl>tXC!*MdGC;+9cgZYdof5T^Ra|OL698g1KxFrFdh<1A-$3>9;QN?qh zj-*_@-7(fhik_a*mED|K|f4`D# z^y3Kk%F}e#sL1tHTmJ~$FcmbEu6RJ0atUDCS|QkxZ3B-oQt34kyZ=ltk}mw=)V)*g zzb$d)8p7ys2F}BaREj^7?*7I`Zg;}K5KqORH`hysdmZJrAnwrx?S0{11;dQ?h<*j3 z^nT=N9jR8{3oK1&!Gp#TWs8A$f4|u!n=@w>jSyd%HhbIR9sK6*Q z24z8F{Hm@DbMkK!czMwbP`ZaJ&CaqdEV@qT(1TW579?9}4K!6V+k2H9As7XOF=2m^ z;4>r)ta`)Cb)RPVU*ejDymwx5T*)_?Zxq^#OO{n*E{RyiX@*efW7rx(_~b@r=yea7ao6Y6KHQj;=ki5liV952OrN+`Gc6dASe!Y^)`%po%VZ1ITk> zb*_fXJTUO$*`}p`I`Ye`j=ZQFeB>i>LsFAvUsXH1`BY238s1sye}FDhfLy!~QPAVg zOValEZlfiK%CY*H6qtby0oosA&G*hm^VJv3yEe)((q)W(Xxam0zta^}ArQtgo{e4M zVaC+~h}Xe6Hb9_7{#$PLK#9IQj*2}vTN0>RwFj>dp3LSt1Ihn{D<(!1IA z@pW1&t6gU9-sAGze>a99LqiT_i$arXscOROS>A8U7)iwY?9m*MHc`(R~s|%f8ECl#_7;DglfGsUU@T= zGtxCI0!l6|rw^R|6KM4!$~cgdS2G#-(_%43&%Zx3_%Cj;;8=nTCue*^|EK;R41Q49M^Jron^PhwzY zHo8$&{+4?J&kr`toZm+ z9_*$wjGYDx@r+%(c~0>9Rl?Ke$DJX}t@|XcIF)yD7Zqd{7ff`JAzYo<`I6j=A-7T( zjJn%}Z@vl3cOGYW)g<@LGeemrO3thBj0jO~f4qXYEcb5ICf>Fl*w;qPsPe75`*Sa3 z$Z!_cEA2V1B7_NF_ZpbFG__kXW8^P6jw67Xpy#QzV7xY&f78CCyfZ0wU7<4apj$|& zBJ_cB@Hn^Pt9!n1h380|W{J&bLRYdg&V`0!3x@Q@?oy!nCTPN-#@cFs#;nNB`Y>=E ze^cil7)%vn-X27%4Bo*4*3VU$2AG<{d7=8&P1whpW-of5x4K)no9s7_+xnu<&irUZ zjbGln`_(Rf-WHS##c{H^pY3N+PxeuI^deSM%dSQ(f#(6WN1oKzhKvR9AK>pZVNlso)4R zHB|N+t{MkTE?-MM1phDYU>1maZ3dQDl>$%()I$|D5m~0roL~hVSs9=CYJCO~Gdt?e z&LvX?LX~nQxypF8k&FmvrMI$Of7N83<7yt=W9`{yW(q|skF`RHwiHIEL8Yece_jhf z5C)@VIQ9U|aMpj0fJ8)`zKUgD7j~r$8_LVf*Y&9qn$yzx7=jv4O`1kzgWX2Ay$1FG zd*YINHzGi@2lOC;E$5ys`d(NtkY4&^JWO7ycztDq_I4%Vm-T3Bmt6&qf3iM6b~cY5 zYX~osPj&2?TaH_&l0ha6M4U+fbFl;?01i>C#9uE?NM2HMj{V#ar{Cn}*Y# zeHuTFk9Gj?y%tM_D>JfOvam?e$Ez7VI zoG?%bB*-I<3>OBXupu~F)7)Go*8qc>HsODMAC0m4Y20cv3>^U{E*Q8vkm6)~u(RY}*(|rU4SqK7k^R-NEB-r1mAqf@p9Z0Es*fz_Eh}0qzqFAE z(NsnLK>^|x70-TN2KwvUg(yaT$tRn-;GlWmHVB@ z6jU92nytHf7;C`S>LLx zNiS~Ws!neYhThH1vCkFapNAoO=+l^assDRW32Sp>3#HhYe-eE^wzAh4EF(0YUoty3 z;Ys!a@Dnl7 zrp3Idx&n^dgECF}Ukwj9Lz2Tr(lHXdYDhf+0{x;L-r&{1xVwaEUD{GV-JYG(amh5v> zyo~KgbI(iF(9=li*uMMwbPwKr6pTzVk(i2GPoS@{t|RI_!e5O|1n0+j(~LZl3x+*t zS35(qnfxQsUwnRXm7Tyqe~PHUfH^#%fGa~srahUIIFvGG z3pcw%E@ULQJHM1OM^LGoq=QPu$qtp7E#-Z26oDQoG!yuL29D`~1rkIW-6!e;LZ&BB zM*e>l5wj9%24J*;q-P5-TB6o*LP9P<-J$E|VfIL2#=3)!p+SAU(pW6db+Q?-OV zcK4$53NpG^=#_YwR)m|{?vE+gO+`M=S_EF_I9fYyWLza za~Ho(h>%-Bv4!7K=jpp(01~22!A8P%H%@3rVaD78XSo?oSn3n03CPHs!M!X>!=DJC zf0c8HltrLQ%pt$-ou((~_5}JV?_B2-l%x-iy9P|SkkL53xjxx3@Q{P(-(@$SM>L$x z0b7L!{b8pDOQsVC|VtU0XT8MD%^NItJ9{l1>$}`c!2a!uf3% zC#yMw6?q`#Ca!b?Z(OL@*tPTfb4E+Se`IVjrz{N#gEt<{p)D4lSqkBXH}Y~)+%Y>m zdct3rMbOr&v!Mi++)}wAa}l96bKGAzjB2;~!7n$M<}U_oj`0d+w)K(EksfEmg~?e~ z`Q2qMYy}UfkSZ0*Oi{_^BsBif{jx3AWX@+D#3G*<)tP^%2%n&7Fhs8l*P3x`e|#%) zzx*rARd;iDh_PDNpt1xI&i(bJhjQCB?D~r(L%er4It)tAFG*NEo&9L}k#R>K0TXFp zAE3LGWE>J|iCM~5L(ZJE%Y{S<&Hx^x314L8H4!y&7YwauZMAQm^)_MC+P2q$>dUK1 zSWuN}7)z9^8Op_EGcZXPj0V!Ye;j{ChjbL)z-M<9)AUaEr;1s)l}pB^g^M8sz(YTc zX=ba6Z39>*EbgzS)j;0jjCFNs`szfsm0D&-2P~C=%>VW!iG|?fBdt!;eRDr z>-4CMCot*LF)4*C0Z#|}AKpPw_EA97W17N|A@c{*Uh7He{R(s`6FrQYwkm{~fDq3= z5`cAiA+>T3WC}lH5qfSgdq*d;M%A{5EE^THoCOi=SB+&>lA#>g*q3WOdnE6-KsRVZ zb|?8c@V-Zy@N^lWLl*Wle*(`ZC!y|Y*+4Q~Yr9H4NJU`E^;8PL4N%~JhN_`@CeVo<3rL}jrc5xG2g@|BlCm*R4H8>+ z&R2H3K0(}R0giD<fLl1GnWW(gK8`}(zTB01q(Pps)ew3 zzqA4rv`E;aZ$VF4RXh01+E9HtSbrN3LHGv>zAga>+`OrsBX<)x+VyEAeC}_tg1;vm z1-KgF>Uc<~fA>RlZtFA`IBrSH3+NycuI7gA&4>Ylk%bw0zTL+vHB>#rc#br+nck=# zh zp6nP^c`+H0gVl>R#*fujCT@T8%u-ApE(Ts##Ywp)K3D{kER*#FWBt-S3Be7=*Y$O6n8!C5=3#vU>!3iCr)^- zW&MbKub6ifBi;??yPY1S%OIkah_BiRP*28u%`=fijfc&irBjjiq3%eRa`Q0^ZbPvr zf9HCapI}?*npEM0=p`L5hVU%%UWj36 zR5irY`$y?C7cFroAkx&rKwc2mZKMXyb-v7tAl{fW0*x}6fR3d7aGASkq?Mq;+w1ZD z7X~0Jic>R}Wtx4sing!MKUOwEmg=khzz?P=5j%C>i=u|VfL6N-KwBos*Q+4&e_u}E z^A230rZGZOydktxIdLNmAOCTnN85V6<2WiI2E;Ubz(+OM!801l$Icpdk7%CEpH6>{ zPG=9h?c@GOG`)D}pL;bQUDw>|ZnXpLc#zzM8KQa~StU14-DDNM;JK@QBoG~nu{Vf6 ziS&s_?7OV|*S59FGAgS=*nw@Rf8WzL?n;oL)2^G%3IL|DT-i~dK!-G85X80getk*6 z?o+qc%^OaZ?#P$hP@G_vLIxihl=Ca?>UsFyfKVuo?B@lyejFVn!)yX@We@NU8`Oc3k zpaFO(Lpss^qzw}XX!}3k*A+hn#8^W@Dz%4Tqdk*#)!J2H0Xle_YJikLHeO<$UjjRUgZ1PH)d^QsR<0vd+IN> z<|y~`DPN2u(RZ1O`m37O$2H$SYQ3ehHIv^}Mg51$iv%AhZQ)64f5ZOpz9xn2S8Y{_kUaBBd1|0_5Hj;?TU(cZz-evSqU;^d|h`q4Dn`Xg}2R0S0M3C?Y9<-xt~BiZI+b~+~da6&N0d5%hQ&+$FDQ$ z^W9WAyw>8>^|M5te|7%0BGA&A4NCe8qU@Hr17i4ie~1_Q_Q+IHMv$Y*Qo)_xzb3Li zBV}F5z1(CPh`+A$hH-D&*2B`@8hoyojEzj8Ks-=J#|`&iy}&_ua8YA875Rk`5~05H zQRCJds2e`RoP!)5md!5&sZ&olJ*d35D{++2j+Eo1)s7gGgpC_Gn~Cb$E`29(&5 zM+{i=e{WKd9K}0T`h>(gvt#t2zE5#Wj*yI)xiquJZvi@A(rG~CvaclVNh7Ba)3q(t zm?D17IJwy6(qy!7cs*t)=KWbG;DX3m|6Zf5rjHf6m|den!*qW`Kk_dwEgvt(<1Cnd zl~;p`{TT=;3}Rz0P3k@Jz?qK!GoPcFSve44e`E|EuZIu)6h^P4=WMH`lz|UaC`L7< zDhT0h{t>2FUR9Qe?^Gj{$jKLs?|bT^Kv--OC-&eqIp_}xqJjphZ^td^<(3ETHgYZu zL<4wC4pZSU;;u=0q-&w!;-eN&LIoW8E1W!DG_VNHhe^({$J?vHksYwqN{xo+$#hy! ze+f!VkCjGx_vUvJs2N`~Ea0~TFFR|!$#iJp?ahN=@RWE z=_Is0q$v4+(066U>3pyOK2tO~6s-dMYZ=4W{;aY{%Hsd6R2~~XQPYCkiD$~2cd9;u z(q@Q9z}iKgSpWE>d<-9`sz*>>$u(qZcz#5DWasd5ztrSX8EI8#y+xzO{?m1}e-m8J z0j2@tiGBb-K)}Di0OoFo)tabtF&1{9TWQjC^p^sI6(IatTLK;Agfb93RmexOc8oYg zwfpEecXlC&-xL!q9>w)?Y0i&RD=c%19&axA=0;NflV~~2%smS6Npz8GCdHcbNR{%M zjsY_~t`QT%ri^Hv(MX&IT79GolGFFOkAF2(-p;+-sburu8LmW>(WF({k&Q>=TmwHN zSZBLFv7D9b&X6_cnfe(xBXO~;Ah4^Y;lrxyb02UqKI*py>H*o(cyJZ_ZeI+5I2aIk zk|%RUK-$k8xYVr!1i-@aaH#&1UXD`jL$1Hv#u*L>A?z9`wt%Qg5*#W7aoi)Y$$$AL z2fORRorI3e3rj=MUi|OUYNnDQ@o*$%*jX>cc2m+TJ9Bz0gKE%huzMm9-X>`F(kvfp7ItH~QJW+1Uj2wlcI@0orM+CpHrbfNKAe=SsV zgH4NQ$pt*W_R;W3sgk(m**wtYi+@K+A@WXkPxm1{8b;9Y_1gM-(af1#^!N@;Rp#K8 zY#JuXOcNkf>5L92-P2l7n4tD|k5)C{IlFv2rMAo5apH|n)L*A~D;-X#>OM-W$I#_2 zTh#>lhbx=vAYpO2(*xk3-oP=z_HF;3MD zj&23}&j{Ef8>}XFefL_NUX`uVGB;{5AIPJmGr4w1Yf2CWk&)gZ4CX@Bz*LIZM*c!XyL^{)qnC`{VMwA3@VrQ zg^9kEgrdcO^Wc7N#p+L{2*-Y)3vzzbD03Ebxf67&k4PDbP8_Jo?GG@E`SH;U48vF* z=PZ~Zc3;!slSf({2jE(OK?av0F$lM_T>Ti|Rh9NXH(P{<}Gz<4wv64>QXV`D?r0%Bo}Me5L*5*_9^YosQ01SPw^qFCTd1Cv~t zVdhmS+cq;+#|q{C5D+M@%|Cn@feMSInH^8asa~uaWbFx-L4UXG>H6YVubIdgpzPV< z+dmq>*tlb9i-|k(>66w%S-IM$4eLvs|n;z)w3OB zwVR#$^UUm2t|0k^tEv`xHI$UQD9O@h;KS>76=JB+WGfPTVVy(&`VmG!TzHj~xU%)n z1gU1wG9c_@|aeJf1~49n%C5N|NT8=C`uswkD;bt4L zr5pMNa&Y+GmDl-w&18>3YAfocMCMF&Z@7L=52!^;|CHnF5s;_ zU3D;%$bSs*wVo0S=&&6=T+L98r(5c4E@jr3t%83&y`NvUfG*T z?3EUVE$C@}GRdv@6NTAn$zkC_d%AY&LaU~2H9I8ot z)98TSk0n=gcKZ!KJVq+F0Zp^37=YCe54hqK^M87h_qYAUfyyo&A~b@`4YAa0BLH%k z&uM+@1%)N_AxGFd&8;n)VlyE}hvbUkQ2mpfMZ{z+n4Z%J)#=L{7b#pyOYV#N+A7U2}`ph*>X;L)|y1;Pdx~BY?6x|VGHvlq^`-{YMoMi2G8Ys z?|+Da(@a5Uo6EY5PbXxfznjdr1YrrjAp#VTAo6%!iiP*Yg2hq-8gnzkxaN-<*5F>dBE&sVyy|-tUH=ELJA6^qz zKtw8EBSI<>u9zkm-P5uR;6wA@cDCDw!td1jOZ19-?X8D1v;3XGOOQ17s-%ac%wzi( zmpE$TQhJ}@*z27;^^1lp#2~?Ow)jx#xkFIVV47 zt)1X$LMC7_2M{R2F?Rg7KZ*MaNwlI(Jcn2X-Sc`t0@N<}aBK6caERs#IkVwg(rO90 zqw3@uW1bIzf_}3#I#6~yd^kuYEDRG8)?r4;&3gWRHU~@`2qHpa$mn6Ad4E6H{RyDQ zHG+WLt>045UI5lViz;S2&G;rc*azwTB-oT(iWM{8ME!RH&Cd-kSPF*==pCr@9Q+;Q z?VcWCh`NxMuWV1-m&$d=XD1po;S#CU^|0Ozlu=!7alUSUr$|=KWruTX0EgX%Hq**? z+&=4a#W@7xm+zW)QL&lllz-D2&Ia6mifIZL%sO?<+cLihWRzgzpy*EFveGjSr0|jw zy#Fh#V^l>cZyD%tul`r_KE--bWWj;uPEvWW?2C`Nv=^>~e9^HZOtH|8ehauSut8<05A zJ7taX7-aweH0?C6o7)$!cxYAYi>_Vdo2d&jdhXil!ZJAG7YDKklI-T%80m~5ewWwj ze=+h)JCk+L@gcaLc`oWsTBvlJ*41RPDX7&D5{x3dMe?dTQPn)B+P!1 z_u_hSYs~~PHh$d$cJwG$Lf{G2C|lho(Ko~dL~rVz0DO-sy~hRhuM4^tverrYiOH#> z)iyCyZZ^D`?dh-1s^>oiIO&o4_*?#==rP&YFp+1I&AKDNIDZ%muZh%S`pW7eE$?Uw z?JpKQwf&3C2mb+i_YU9VPWb^2s?SOF*XbmTTJEj`*p3>X8St~h2_ATW)?MBor?H~a z-OuEo4etj6gCnqYMr0xG+`*9T=N68amy@~<930hw2&P+b{`70)84CY<1}uB()ih(R zvDt=DlrVFizJFRn2nVzWRq7#xEk8Kp*<94Kzz+|{J(y8tkc>h0SZcEGqpnz!{?`_J%+Ry-2#8c0gQd8-GwCjHNXR3>40wuHqo)RW6z{f-m@Xn{Nepgv3 zdD0}sTMhuC<_L2(r%$OFhS$f2@ioB>>u>*D7R1fq-)xTxD{QLaxceUUP>e9oC5xw3 zKxz(wY=6&ZN-fr$1x6hFY8UX7vlhs&&S1*mXOsxd!G%W?Ra2u>jP7n4W-IJFtti40 zdKsR*ze@w{2|V6qG**6~w%l)dkU)v_tx8FwGW++H4*iju2i(ORm=$+ktlJ<;kNEya z9?6eY0WiqA4qhJ&83qNC`a;*^V3w7Qn`aLiWKF>v!M&k9;7Hgkxe`zu^odyad zE70}6T$%Hy9v8%qH{3)F5rHfkRFd1n|NC8qFGGO=f*&|2b zsH8buDNP7hOS@IGPDFDeTF2> zfjp`;{*O*fDefu7smtd&;pC5t1Oo8`yM^!-1PzzE&e`%pEb`a_W`+t60=UOd3AOD; zEHh+k{m$dVeV$k*2Z5F=*@}u;KfiEw>+Y!8a|qLGj*&<-u0!&Jt2m`(2ZF+zQh(IC zTfdI71xLLN^GeRQSwg#E!AbF&hbk)D`K4wca~%?5D`}jNHOknAR0aD{_NpOm6-u^o z&Ttr1|MwRW>n~GxV6xRW9&T*=R}b`Pj!=XY|KwQfwsd}q-37w0IO4s*_4=}RnnC!F5#k+lau6S&)E0ByhWF~58&)@&6HhffP5A*!`u7-+ zf9d~4E(wP5j5v?LQOXD(!j}Ul2I$hQ*}Mo!Uw;9UAookU30I~jdiHoOoA-?8 z(R2>nwa0OGA!W3_i~O4MxFR8spcK*cDgNjmkoT)s7Z>tJfm zL={bpn`ZFK3wqyepYAu45q~`641@s2jA^v~-S#QTLvmbVUg@Q4%{mcV=R}b>uLZD@ z!NKczhA`fy*$=ROLM{}z%DQAqJF4N7RKk`w$l{O2t(A0^H9y1)lNFGWqs- z@^!V#!6aRoG7ns1i@4-l0+4WIv_Z_D%+xf}+;Gm$d{htzx5liNT7Q=Cp@H^3RPfqu zaNkn@pLa;fj9%Kf7PsM^J-?VdQVbqTuO-V_1}KoL!nmDSv}v56+rfMxK|bDDCtZfl zq#V*auAG2|1WF$u!F25t^MC-4?O>SAa<(<0DNGFw%$^0pt~w$`K;-?wSDZN^RBhZe zqTe0QPi;J>o(P*nIe%}JbNiEU4#V$guD_Ml>`To^J+!em_wX8^Aia08qO!a(N zHmJwuZ36RHIds3(SH@0#%i)RP$-y)5x^_q$6_mrfq5Os!?eJVj3$*Igpt;ktziJSg z^D*Vnp6etzWsM?$N?2sypiEC#0srXLK+G~0B1@f@n$7SUJb$e}m_&LCATTNQ4v$x0 z4bJjX2F4mvNNk|Za%Js!J^ur?5fZh0bn=1Oz$*vEfrd=<9yp(C+Z3==QLHwXD61x( z*pMQ*mEiLr>HWB>zgHYg1O_o2nYfsj^XPZqp-kE(3yd8j+!R9bid`4ZZ%#D)d@{E4 zZ8YAtj2YoQmVcSICR^~~TLv(1w4JH?4k*A`cLAFXw#`0~K|yX@&79~nSTUcgySR%V zlm!cuzjdRsnkm7y36JY8LWK)#n7<{OdDV|;y)|)4R)LRaxZw8?h*hql_jGmH& zbr4yDrry{S^WpCZ5^Nfk8LUpY{_X$!u>BY1F4Sd34S}x%I$(c)NpmyFU9+q?Z`5|? zD8SU9I)BD>3Z~wNmApPV-hhei+E{F;Svkpsi0%cqqQ-Pw7|cG#_Goem*665x-H6m5 zI-bQ5Y&T3Z;_=*7Cfau9j|bT~c4AnV{B@>BLeI7%VxArZwAFTv?#kG#Yl0sSf_G+r z74bRtWEa@@v3}jw|6&;;tkgO5`2}N=_hUsdpMP%^i~TQNzpPyMtLpKoW5th&cM}yQ zZ4oEv#d@>J!JG>Tf#;N=gLcW?Wy=&eFm8x~l)5tv$DvxaIxjmM2aMD{r{!#-m*xPv z&buin9Sv%NF_=mpP)jZY7-Pw@tY}t5`+3;bUP{KU;m%+@sfJ9H+nIX=2hU&DquYdc zK7YGCR*_U_>Wv%jPwrVL)MEGl#%6;}(t;23NWQ%xF6mlq(RFo*QQOwzhNR0~GrMR4 zh#`}5ym#m)lzAq)-^tj%Yd?yO+TFd>bufvYW0gBvv|3xoysoeaWEVRIfmx8a`Uf-2 zY&#AVGWslzsqK87Fi@+itM0~PJ+H^AJ%4v3gVfz(p2(o;7JPimb@8zA_M?tg7=AQS zLSR4wE_3zK*mIg`n(MnUfXA3Pcr`>2>|{Rd!`%O%bf*0(hmvt|hTIiakJ!O?5~{0o zWs@IS!1hkM#Id0rBj9@GDIUq>a1al5v(F*7KAFBNYfE_7Wu>MbQEQCd^y&i;3V%XV zFOGYoZ84an?E#4jmvr?-EcvJ@Wrf=iGjI&5`d@(LjnkzFm=^!)`%aU| zOK+@=!_Y1)(>T7r;JT2uh2eY0q*CQ+M#rJrhBF=H-Uj{$$rm-ZEcT)MI?yX?;D0a24LTfc z>N713cnG+F)jX4Bw4&BDw#OoT?IZbZuNWhw=F}bfD+%<1oOBGS< z45{!B&e?2T!vI5LEzCF^Hj*k?H_^7T*^sexVGl~>uDKA&_X)8cLfe)3`KcDdrLyW$ z;>Axm9qjqFc1?@u`-~sfM1MDikV-cjO+v*qMO@6^n8$!oEks{;RDobnVA}0@I)Y}4pMU*HWAhKr1hFwgC z(vP=IbwNh@o|+OV+BryO=DCc6V(s2y-kTF9y;a0ygYG;8yj(Ya3V)yM-YIni*!U-R zm_XCGp7j!+{TnTPf1u_rgV8HhL7Xx}>xP5E1up2OzPjQzT)(yR&A>Q}*dUS`rWAl+ ze1#YJY?inrSy(YIVC0lL-Bg?oRcaw#Sy>H4EO7g@ev|P0vntaF4$E~UkCXFL9kynj z+HphbA@O~hnUA1&p`m5-Y!(}1vGqb2_LpbMdWCAKIc0cCWF~I znH(rlX23&6dTd)j7C|~3(r3@`wLLv4v&;ekq-VellGEn1mbLB9$)v~bFN?Y_&EvEu z=zfC3F;6|g@qcJfj-#*Yy6P$<4~;xR0Y1r>@UVdT>z{tDJ5@3~tDz;Lp?tX1^m_Go z$uOcA7UwdGT&^Ji&mZqI{zz+=BOIU6CQQFO2}$5mgdGPcLaQ@G=KP1j5ByM1C=?*= zO`Mt_1Sd*gtwCoKa@0qp&Ak7St;bZ|(!qGTy%&(yv44(mqzXTuxb_F9yC594e%JXl z{6;b~r0&={fO8oXB0T*jji|yF#+?N=?q_6QFhhCrPO6F$=$MBIrfJTVUHsD{yY?QE zvK|!JLpD_r*Ke{57gPAoA%4Gr6qi)3JeaX31R8y7JvjY(m<+ocpW!5b4Lh!{iE4`2 zfGw=D^nYPwW=x4cN?XppH!6GQ+86G?jfn46=paL0nJoN_AiiAHbFT4JbAZ`QyI_*K zHrtY@uNq(Lxm-Pn95_Fy%J?kmeUTWXa8L$KBu?+T)s%9V)n%9lO>|BmD#aeZ1;D6}kIPu8ssjdhA8Ai12in^7qBm-B& z;lAKU*!zb{&-c9k9Vme%rk8Qv_%2@7AZ{0tM+niuR~J#tQ(IY#b2T%+jP@Lz>a%}j znt8orXdCM#r_k8qJNn;edagpkS10m6eQ}(8ev;AgoB{^dt=*~oMuNfsA1df@lDTb? zBY#~~h^N(om8XfRyD(8~4VpIk_CKWs5i&Sy_fm~`#wJ>E`D#`PFs?LJpB~3Vl5RiL zf0qka;-Je{n5l|=)r0&G3eIA;jY3RYK5rpPRGVeO*FVxU&kBJA+r{Jbbt06_m7pnm(p=g-|~5h+zn96B#}Gc6#N4lMr@p& z>p@#p8Xh$22|45I;aaww2)!Z6S{GQOyG6Xh$KoosY-ovqGk`gp`u|P{Q~zCiG%vT_ zB|rD5Jjj!z7@+n^_qZuEt!{t0ZRxX0;BpD&k!NW_YPu{mqdhCqF3>Um$A3Bg`-jleYsC)6wBe83N0}_O*Dcb0syBd{i2WH4OHQ zX`F^(fgvX*w|8W@D_eTYhVhO)s1| zpOGm>QKFW9!o$vVR~Ri))5Ot5UAUi-B+ru|IGE172Yt*zA;f9LyoW zqT2voyu2TPFoB_Q`uGF>B|GpAYEN5i@6MB0$0^(%pw=W{rz5h8a@vMFmPV}GkNPW$ zXqPd3du@ZDeSa$M>(movSUpH8w_$j9Vi030DGm~H$T{9g8M5pGihy-skSuZ!+wpm9 z>(rc`2B86O+GRlNUt*Qn*?=NjYxd;a5ru1#tz#7$Dsc?#5n`N=DZM@aa-xjlMtPS& zeD+BdVFbld14{FTnw-!gp;ZFKo=yBK-p`Jzb)R~a5r6$Bn=AX;P_B)*qFty-Q4S*+ zH?3&p598wi!ar%sGM^0~$~t z>FaJ$G|!zv)>{1+M04ByL&KnH^ovhPGyZ(RJ%5Z@_ZX$$p$)22Hr!R)W+VRxgye^B zr`OeXW@2Yp%gv4J&(}ulN4Vi#SbzgBesb=~@e!-aqQg7+>K$ReBz(r`Hu&>S$2INV z7u(=J%t06(JQCjTD>EWDCAc{!tZ^wBOG zYJdNQw-#!%5EC`EUCUOgu}w_gG(rRx+_}~{*Qj=QA74#;XXfkjD>?fa-V*f|Sklk(Ei{6*e$iLe%Y4=;vZG@l+%6N6D zx!iCWoSMl;iz}-wV=V#45ip;zsdfjs3V%R)E|b*1$MXbUYeviL_@MZlLdVZ6-4>pe z88Q;hy(ZlRv+m+|4sEqCt(R-}d7!Aj=NKuUGKaL$$T)#IVFrn?a z?+J9eI}!Vj48-m-hb&GOR0V0JNNQSF#BhE{|Ml!9F=N`Lid zuXtFVgUY^^D0k3g`|#TW2S!0O2SltVDq+%*-d**L`F|mgd?Oby zRgAxiqg~f%9$23wz8B9frMP>yG&YA-tMSa%f9An}bA~gd)`sHzp-4Ox}x~KYuhxdz#zJ7)O&R?vil8($t%i^5SZ!Jpdkf4E5ClsMTje zYPXofyvu#})jWmli(0ae68|(%b^7@@u1}>kp)%@+qj%`~5R^pwgPh70AvvRb+Zsuz zrwj4yIi#SiahIYeLOWWLR)t#r@{$o}chkmr$x+0VMM^N@@E4vQn}7T(gOI9v+?b)m zX33Jc@5vbG3WY2s1W~orU$-rzW$i3VE_ne7ncw2wU&SJ$1w-A(H4st*zS&GRcuVtd zfD{wA?JhRq)I>cjB&ic^F#N{!pb<3FFLsaa9qKB_)$Rc-O^t0H&q{S*ySv8j$$}^` zQM~o8xvR0p#S{=N=zrt;z~&-;a1oevYug4ujWdHBO9#E+w@N&>JhyAqv7GS# zR2(#Wl%A2`RFA?xb}>0xIf#i4sYmQ3BOaw?lW5xrW0!g1KrZkQ}{DtN=G?=~qb3t)i6kHpE%IPvN zDoO?AQPlur#LWx{ ztbCHTfk#M5M6@evsY@k*P{E-?!5pQ((}UhJT#nrbYYCdkTH^SX)pz))X6kR}`LrEC z&i~tA+vewz;tO4G*0q1>&Ukuh@$*k)!|MXPRDYuSdXwXRZ@^xl9|~JK(5ZN7ub|=t zC=}TuOMqgM-*Sq$_u6zNu41vNU#I*)5EkU4BgZzW#j#_4+5h!EJ{O!QH5}-e`^Vs1 zDNOMMv%?*nZb@NtCBS8|tT4!gy=IREFL~eZY%V4DOITS)T=w+Ulc=XU-5nU0lisyr zD1Z7&jd4=xHXXHejTA=+R=yzu8~a>~ZYd~Wo$!*r_xXZwyH{))B)B|HAnNJ~2r6tNz0e4u8-3i&dQ~PrR5zO)suev44fu zWz4h??duF#M=gI^QiDubl`0pl6!u`Zca}&20?!HoI=&wknO^6x++=sPS=FWre8^E| zrmMEX3E53bjCgEvRrhsxkxApIya{9LP{W5f8C>>Au^RA)-j*uRVd{t})8@DPH!9~l z21ApOnXW?SJMC-6jRg#2P6(e`ruTIS0h7n7uLmSbMcE7y~QD2R(}^*s75!| z&AI11CWPS7NfS)Igi+ZciNJ&egVNz!R5BzstKm#-q`Bu^KGrHNaH7UIHyIpb;YKQ0 z%N{-A3OTeAIhrKR*Iwj8_A#`GFJh^}NJIqk1d@uE8+tfIBSFspj|}9c;-6p^x0Ho< z-J-WY^Ez&Up;?6D1w+-<&3`GfI&<4CQrQ=7p>GZTo3Qm5POwFGV4-7patr>vL~WnA z3K-oOMr~QgV^q!`XC9_tCLNlhdD5UBKIX(Rnj<1ARr^NWp44&A?46O<9aI?nKY*!j zEiEo?roH6MZeouih#^cZo{;&_1MB802(=h3M3YsgL+?gX44Iu^#(!d++qA22IR~A( zPU1T!-wUKEU6-nutJ7nEURz?o+)!&p(&d~yT0Y16*Us937Pay#i1>YrV`S*R1riaM zrcG4!n#tcw*)QwdT|yNZ@EuKYs*EH@S9!PdAFCA`ENqtn#(eVC@ww(k_6R65(r&Pd5&~xO-r~ zs;{)FMuhmuW&9SiVD1FT=ojE?(v->kCPm=ogu#2gutClVs)e1F!6Q_U*kms|NAvhr zcxB}XHv@R4Q&qc5lQSpF(?VGi!##f=Hq8(jObBKK3Ct4A8-MT>)~URK&C`6qr;1K{ z)4;LOUF7#zgrc|bkB8H}cZhEnE%o zs!&npgQGso0)G@X6ll9sfaLzI{i1L-IE7(Y-=9^Y%>D@OD1BgcK>T(&fvG|oZBjw7 zp{7;RZiCso@M$v89uHouQ%#_4vJ?+r3^0s^5aTuGE%lKL<$CyQsdCmdHOMs&t^`Vl zAT{chU0dC)%fX=^x|YaW>JS{HdWou=YywRxX<3#>-?jLjUPW#%Sx4gECs!BB^1j$e4Sfb!2OchKENt>H zamOo4Q-uu^rGD_AYGIb4e0U1cgtx9wA>^H6Z1#p z@4!|c&bIb%Upys?9rSOeeH<~tFH{mD)9uL@d(E}z`ef>9ka`{KEEflFy(;|r*i{me zRey4CxF;AgNgE-cUvhofv-f5Ji8|IA%QVP0tj%3o#;by>lsvTSA{7}sasr4fl`Dtr zK|HvAPfw(8*KUKjDUSpaDQFM5Yny=neBaKBnRN)~`vjIVD!J^2ZZnSo1>?K$5rLXY z(U_2-lp+NDJy$tEQNG=LRhK#)zomiYb0j)k2 zO>x?56BA$mQUW>gR++y9peAS8giKR_PO-?Sr%Y31s6-#f;mX2|Q zNwvO^&gzPMC_VqtL@7#$A_7oQc8_xT1S^R);Bbb}9%}GYR)9Mzc{n{0=y52Pd4Fmd zrdQi7itb&(9D4^RfVpC-oUID_4R5hs{T{swlINt`VT+D=YrU+TiS$J7#E^V-L-^C)7}EBtW&qsyi&p%sjJPDy|5A%61u@UPXOo8ThB}W-o#HN zAM}hBo0m)_Eaj}urihuc#vN?yFMqpl&$y-1n_t*b51+r71a3TSf$5)Z?y+##MpE$e z3~%q9x@|a*?1ze!8$2O}jL`S+J1i3bXJk(bR_x|~)B)O%P-xO%r1r1{mq9nGVjI4c ze$oJ^SO4UPvuxK7t3*|1eD%BTeTLVxldS2F^r6Vs!Vd`$`=T##x`BTH|(eQv~&#)#PM63`WsVd>h-`LMiSyuQbl|BrP1~@e-lr0qO*{p2S{3{Nz zI6K1n^wKcyEEE}VEanBJhb}Sye!5%PhF4TO#ugp%DQSBqfND&tnSW?07e!EM5LY0M zrDFOud*BKW)(q8I^>H6YX#g}_%6>gWf05E=oM-HVQ(}ZfkC&$gNUDft4yt;pm3v?M zX`g|6WFT3C-H8+%wCWi5``jk(Ps_3Ay9rU;hUFQGJn6;8rJ_S8v+mO(Wg;{J>KgAbl(0|(Xp|M8GsnwC#}&Xn?8Mz z=FHbyFZXB`S4grOYBunI*rCgx5a;3ef}1T27l>tfJijkBOckgZhY?myCUmH2e+!QZ z_RQf!ZfX6l|3_4E#9$(&!rn$IOx|6KrWh!7CN%(>8zK+(jDL3RIQ{YzWsEZ-9xUpp zu}b50{`v&OT-*#o{fuv`O_DK^CT?^+!dUj&mPo-w9Q;a}{(uJthx_u42+u>V9W_*VY~Db( z!X|_Ea*Re=ZWHGd0*?)|aY*!cg z|Fs<4L98^)VHQf68p+lE@V~0US4ClTIbFS{1Kqkgb6DZqrKPidL^6?#;!WcISjDs> z2sDT(47o_Dn`7K7SQIqtx4uZPsaE&rtGTqv_9N_DR)1F1CMcp_u1qQp4R;+SMv^Le zO3W8e!xuGbTE~8_(9oS@7|w3#8uA`+Wyc%(id#I|y%Mnno$GdkjHW~Kin=K~jrN2k zOX6lz<_S~o`Nav7$6((gEGF(>WhRR^TAVdlg(=SUYAzP`P4&reTHcPrd}-KGr9njs zYb-#LsDH(Hh0w)KbxxL*1jHOM3SE3jNwC@IX~eIeR_bRVgN>~8z235drNtUs8UN!aN*YDzQeqnPwW(VMfsy6bZuCxy_Hr>X9KVqb|Y}20}zJ zg-!dvB^qYl>B=%$4=E?jB{tS^gX0$Gis_Gx#(%aFyGI&O$w8Eh#!+ivUtL5c|2gW` z-L(2I=ujX7T|El>;YJOANK z#G*DtUO;zRnNXI`4)IQ?j*l2QcQ$48D{3 z+EUVPvfq!P`B$}4G`(!GXoVGh8-s^bVn=mDcZRn{g*crvN#FRlp|Wlftgq4lBY&&} zu*srZOE^5VMU<4kyK&5O2iw(lzk6d;v6F$o<=NDJDHyTjX-wAuno_sRpl;B+DoF`= ztB@=%i(92#fw9O%cX+N{Y?}oUN7wmgrRgr@8R69#W-9RGzF<8efjE!|uI^jy$7vAL zdcMbbpNW?eKnjeKQ}s>1;|}YYhkqug?AnxsF<3vW?6FEZtUxtFqAo+(CZM+yF$Md2 zue{#euwQ||*E`SC`e04s|0-sD0y~8x7^GV0dYAhQXx5NWy!H_`na%ew9Ir7lWyYFz z)|!R4Hr<7;V5cdbw&7y(v9m*PyR9HmVcI~nmk2o6Xlag-zCw~&euR?jj)`v;XGyZO|p}iH|rSUBF>}r0;{;%sLvwC1BLz}~2eMA-f z5k7Yzkq`Pk8~p8?*a>qS>cI|>69FrJ#Wqpx_HmdaoK4a>xvt4=#2S<)DZ~#6t2CkC zP!%t8siou>0DCA+@*zw=^C?D>jQ zjr#JX+*+?!DqL1BxdD#Q}I|!6eo^I!DsSW%UPnL;uN2cO<_Z zp>Fx2N{)QJUM3@7uz%bb$2!VRveFE_wRU;7;ayiV{DYA)zGy3j6JlDTJXsrnE?xqJ znayJ+hV}l0tWggclQ|43p@S^elx&GFj+Irci@3(S2H`oTH=rG9sfxjX78KeTr;z;P zv^BXtHMV3Fr>`8lL>yo*?$*`~pA`AA;Y#pnrIFF@Db{k8fPWm9Z4bq`b%5if!PBYS z+ap(K!q7SI^?$rze1*#yG=%UeZ5(l>?qpcN(9KJBb@|~oU^?G%l#-j)d4KdQIK5=8 z28QShaa^5#0C7dM0qc;g{PdhYwnYx4!zV^MUQ<( z#JZ0(HkpTsxqn$L9}WMVBaR1sCg(&oEBz@zb+PJD49ul_kU4$}5i*Slg|}P;-%^YG z6tv%!o&n-OwiVP>^W`w-p-_!F8{Jyl=Sd%kH2y6ysGYF+q*;T<0bV)`K4VodDC`7L zR4@$h8^3Sib!2Yq^I^DplhlAT+01j0L$d28P95lk?|&%}s=l0ntTX*Cc&{{#y~o>W z)V3znFC=kWF>DglK!aXITkFf{r_7c_Qn9RMc!Oyldt=CQ&KNa((F#eC{!FrMc@u~c)D8Npidvs!@~xJ}vx zaq&~C`G32fF(b&hm$VHlz;tJ9t-6#R`eC4zSQwt2IULySjVSa^eB)ZS8}*z3$-6wm zVb*zht8{{$hMk=YAq9mxeiJ8+-UezHw<%gIqyjYXKKJ`OS9;}h4nD}N6~lve!|oyi z5TS{P6Fx7~At(g#5gRX)Zuh`70-D=1(q1X5sekH~xZjO9(`Gr@X`Lg>mbC@7zAD=w zp4x@S#iMQdxv$q<%E|Jl5t|{IG(BiHS*ZomRnzsP@{*D^pyJ0lgj?5$Avr8Tx6D1> z>ksSe062s81yRszd9@(nbW3mox~jOnHdrVC+~2Qg57+0Abqgp{2IferymN~fO0hjZ zUw;q7jii3)7?fp7ffE1tD!(IS-LCD_62R&bHL=+>Rl;)!fgdMNh0-iu%qYf^1I;rF z=&jpv?;_i5Xn|jZvjzA$8Z4k))^v0RsV`VGS1Di*r2N#CcYiKcJ&+^dUJ6cHoV7;J z4A#|pyRE1#nz#nL3NC(p7oz+QG`r@4cz>}sytP5T@}#KAgjAkIfx*O_W?>y3r4^2e2I9zXv007F;-wXtsP$W3r=;B})z&3k`3b zY2RyLZ0vX?&1Wzmy>z;Gus*P>;j(~7DeLcm>o3N0V@pdW4C;-Ny2$%K@{;UgU2Gz}xKmy=>@pnPc@|}GIx%MqqdK&B>p;hwLtXk?Jl1%G!jdWmQY9n4T9p1a zT4(;XVep>+JDJfjS(-`PAV;GXVV!#y{k(JMPq8f!d*m4vCM?s% z9wG=qHI|{|7k#`WM4h=9h%&{CBTU9bKnj#F+3K zO7yx)FVL!XCeLl!=r04)4}T#>v+Y}Z*f`MNVg&Tzz@RvlT}G@Hw{xgSjwg2zKwvK`SC2Nti!#$4K`RnYDo5ewcOJ6Bii_dUQjV|q1j)rTcHVT zkPqr17%Tfr2-B`Mqf)f>g3J=Y+&%t6d8>S?3WsynpicGw@aLLJYq_=`_Ruysltlx1O!508r@^EUtg~4QtmjD-m|vY; z9?@`Jn^tAzx6s30`+p7GM+`w>wdiLf-oGPNWY;XQj%%-zpzzfhXE+^#TxJV=&Dn4} zfonm=jc)l<#0yD-YTS)^fKqNZf811K=32+C*%F zeAKKze18U!%rd!!GOCWt&BAfE^<*}D`qjw-C4N8L;hcRFw5uBI zwtY+F)FojF&{dJTetr>=Ck5)3$?q#eNaO%bK(fC}D%llBn{mMsc<)Q&73ZuzA6byV zC-&=TLEOt1kqrz+HA_bR+W^E==(s^)37?Pp!^41)x4eIs)6BK4$ho`gkvW2Dh8*0v zAF=;g2!)aXdaM#rYb!hCSDC5vgCRfrh6hyO7{$_+^vctsPR4eE?> zwf5KqG3a<~8T36ca6(SF-B_n}!W_0B*v%9TZWU)*TQr~9ZTI9VV2{N6fx;G)rHl!! zsW*~%S9*VQweYu{Ub;78t(YDaYkW(TRm zmm6IxM5v41svwj>Lo7!O`Mh%?t%dF&~Q) z7S0k4z6|v;57+p_m_EfKk-psDllEaUH>i1ns<_;QA!^r&*(o}xc8!cCpxeixzF0W^ zJi>oGM8&DiKi=?j_kQX~QM+-CA3sk%qxmrDV#ZmjWR$FUr|eeM%P-u6@5CZj1~I7* z8h=JK2IUpV>S7{7(k^TK?{#y^Iha_gIW7Vg4u1>FlarqQv4XI0@w6AmPfW|~;_Uk( zQCPFkC8NJ;w*{_%;?)4*AAL@`>p@(DJnVnx{gUag*qYFF6C@V<@UN{}GOZ4Mg#~~N z+oJoS2`^EARK2Z{GAiSZMFib*hSMrzm1(T`e+a{Ib}|(jXd#`1PC2(teP$?^_aMKl&8yU}Rsc8-3rE>aRm4!bDL9V>Gw^teMp`mcYO zUB4<|kHEaU#8w&`l5Msyr{Z2SD*NeIO@~s*sB}x)Lbd2Qm&R&OKlH;g z_w*1G_6xyx&EHepyV$eBIo4nkX4&OI_ zAb~p}UNtyJl$F>CEsuXWr>DZ&&>-FmqiLvc4?FNk!_zmLfstZ`9y}dswodn;BJ{6hl!h^3iGZWrRG{R8}!82Wj0;pj3N z3s$+80|7sW*5Q4@_THIg)C*`ccOsH=V)Lm=4o%BO}^y@+8vVx!_$ti^p-`<5r9rs4-z< z?s^PWo2i#Qfhx1^Q%i6{fP9-zh*GY8CnVe=_#gM1C1sakb_muNxdvtrad1^T&EX!X zZNK8iHsKfooy~s^a>-M|xEAcs$C~2q z%dv2xoz!|_yyTl#%6qn#XTwD4MvPJ_4N})xGWIrNpUrxF_@!6cGw+8VHt?=s27@amXX>b{!#9@B{iEp3^8dt&Zp2uFVBuXIa(4q;rJrSUCn^&h9@@ZGET5 zOC0ETjwh>8E_Syn<^`~$(7EQ-v%kk}=QH_`xc+}IF)zseJbf0Gm8gu%L-1L1;JP+heOzmybKC5y%wS*H)H%t0N!#$dj2OBWKp35H79F?c!L{L__2QSi+@1;p0~Neekvl?0AUJFZv}?eMBCfKv$*+=rbZ z_7O+WZwbLlqQq4zMl#o*$uTeFUEf+5Es!N>gj%Xi4-G!N{L(V z{luRDh}+DQrH`d~i9Qyz&3V&Xi+v$lNKJndIcvqyaMVS7Zca{gHmJwxE97zSXvV4~ z>DN;nET%)zmX1eKU@LrJKU@y$S8Y&~SY=i~OK6OJB3GW3-)zdsgSys-I|(;oY|cy= z@eL(t3VL>=jO!;z>GTf?I@y3o_Y9_|X1^@GIE}sCEi^3JjDx4 zRLPrk5;dkm58ga*QHMlj1cyXr1&2gs28Tpt2e(9J2>tp6gJ5Ef#Nr* z-aVdufyzF$cC|cqZ{0@A&+rRA+FAKEocQS@`QKUB#z9y(n;!{X#qZOwB(_se*kNw6 z1^eN2TYo>6qm{T+rt_jDU+lJmIB=RU^JG!?j46I}l@Ebd0MJ@@RL-kO>$m4{3&c{{ zVZJ*sMV$ew?-hpT-p6KrR1oZch`%=U!oj8=!T>{##29P1H4!ZWflrUU(+j<>#esSe zkL66Q;k2Q}hkJmt{llmFTFzGyZ@bP4Wk9+GfG)BCFw=riZ{f$qf+Rvz9?w>E3c$V6 zPG>A3#r!j{!mWq}!s^FfV2UC6UeKq^XNkD)ar+x5$x>=2OCe`GTTQEfl(!IF{@SLZ( zfk|Xy{DbMJciVsSx)hR`JeM&b4g z*ptooO}4v^IQUOKVb2nO^^w2+Jp0j;QZn+L!0qeoV$9cD!v7O4*%13hysJ%Y@`#_a zCq`F8r=MHWg}G-oViDy5M-)r#h#0bvtYsyw(Ot#=fSB@}8YKttE?}&2C#N4ouF_ID z7tTfoT4;~!o?ma#Y$3@|!J2NvZ} zyt76q;^#rKlH2aNEQwRd$^9fz_kN@lNWGuHCg+*byrQzwjt)#rCr1*-MnasHBS&E_ zjhg-=7}8SGLc(}|>`rbPgVeXX_qU%xNpOzdE`z|<(G1h6`_BI8P)Cgvtk_aL(Qfyz zVJANtpnJ|LLAn$t}!&L~0QLQn9m5)nXVrxFJO^uv0H z;1a_~#59Ar8VC0%cdP=~RLn?cjhTX^>N)nqO|J-~ZL-HSZ?Af{{XLvXhBwkNBrgYRzR)uJVOpo{?m>7!P7TB zJpP#8QSUT0hE6b_o%sh@to^zcZAdoa-XcvwI*-x`uWzAE>|(ZuXKylAHf(li|06n) z0Gdvu;5!hqi}b1MbNxecPuA$D<+hOwk_fj23^1;LuUlM3)|x<28QGQCkn#ywWFcE9 zl_3d%(-`Ytl9=T=F)2N-s(A)TM%_M`8O&kMdWYK*dZ@C$;oJf1Uu!fKlCZQRuLwf9 z*b4Cym)?*tX9dEY+rReaBd+@jytA{yer;7UwW!GbH4dedptA)Cwpi3WePYJwE@#jy zVZ)t&$+r4abSJR;Ri=KoIe_&m38In$6CLesQ7#Dd_5tObyAB``Ms0%#&3m;fL;Fh>Ezl=6v3MQY zJ=3`dOgoVNmogw6n77MEI%Rbw^NJipDLYVq2FKhcD*mRm_pjs++d+({wjr1?T~2C~ z;I1)%?#Zhm#qphPGF_Qda}M=)$K zpB~^|yQgsAY+|b4X?N@o{3rD;*4S*$%LQKv^Nb>gMY0Z3??c&d{r}kBJq=0}x27O} z>LgNFA$-3CGGHQA+|+Q{3jh#U|NUsOs8PU-SRqs^3$1a9MvC7{^gPgA?A_4j!7P90 z%G~#K3?<9-)}eSL>1xxurt^PIl!f-)!C-2(uiFRUPiK|qINuoj7}SRAass=Rp6Vez zKlE9>ee5U~pXYTtkuo-<-K{|Z6-Xa{KwZvk7Ozfk3CI(|e3tKC&ZOMvN$2NSY+o#8 z;km~q&&C{Jrk_fYE+Tv9$W`|*KC9`vP7G%S>zMF&R;`&Fu~e@`49r^zv?7Iy0S{N9 zJ-a(DJNUtO?}@O5IkCC0D=cYRj&-VPV-MYUWQ}(%!>k)AIL5o=ZQ#nUi!?KT(zoa9 z!f*+cE7&PM_Zg+;OKeJK@XXZPZ*g1i)&4HjqV)ZmHc!lz;!DS|y*tQtYz&5nYCl$2 zJV&~vk?HT$G&tMdkPLV5#!D}kb0CY?k%Qp5$Rho*z;9?oC(X@eSno=JzFRs55(+7- zD>WswpuRR4t0Dh*!}o>^Qp8SwSq!+(>5;;IF!o0z@=ug}qaHYa32+<#{3#{E3m{g3 z$q;+y6W+Zl*A1fKwT4{1zY?zmkpIUhsSRR37ee7i$zc)VRE#yc$?U zJ!3yJv2v7$GWxBDB0BFvc&Ty`(u-%iH!px!GfvG`EWDwevB9?~x5q=7V4c> zkIMtR-Wa203Ios1l%8!3?A*6y(z@oJ$nc2Wj(HbLp$sf*(aCDIo}#mdO|{vt7eXE7 zkG;9q>T7wViU)gmhx456Pzu78jv0sRKliV@c&a<^%Y)r zS=I(ZqaAcEf>#7K&91jqIik83@vit0At`y zy)??&Z`d+_19%`!P8)k5gnK=kpZzzGg|ITq#4qQYBm-45xqglG{P=-#!Q^R1CpUU; zR&*$}{Ve8^wd!cjflYK2jE+()=qt^?!&8+FlJ^LVurg!RTRqx^z($$qG0qf!q+DEX zMO{R20YZphdFkm#c%>(!(?Rw!cRJ&$Wiqdj)Yp@LudRRsT5gGMq|oNV;7-AxL;93o z`!3jA5w=D+-5k<=Xc{JxUL}asBfW0DtiI0!u}%YA*d!qB>!7&;hp~oeIddt6vXPXb z;S?}><0y~MrSvYCe`q0@=tzBY(b0yc6(f%&>%75O7{8=N7EPSE6K^upCDCV2MG9;uF!|K$C7koOO?1xsYqTOy zf#kgmB3@~u1(M+7+`z$|C1r%(6m-y_TXDEU?}Rr;7-h8xbHKji($K|8pesi=a4w=N zI2PF{ODA`Fy!ian17)<1?8kTz8>?uqY_hJq_5p@2eo~TBdkdu;!mfh0tW}CR$8#fp zSf6BKEB^LW7#474AsebKT;=kHbe!t62At1XKRoAXz4ngln{#I48|(IJFfVPWg*d_> zg|g1x;08r881b=6n&b;xli+jqXtM* zOe!nr9d|bO@U^Cew0KCqhK1FpJ?!9rhO7Z`$`T=)GJrD$y00g&30tX>fhI6g9|Kr# zDBkdF^Qfic6)iKb=FQ&y|BlCoTp1Ti*7A#@m3~%7R7UcF)VvR>vfr8?4(jc(gil-` z44Mi>>3s+Lq8*1v6B(E|KBOm=wc0_YMPa!sAW{Nr4?eRQ?{Fv(eZ4khUaS6pn5r-; zGt8S77XRnahU9NYIC+^JmG#Uz(9s0>M!wSi+ejjaD%+35Wk9psW;Y!_(b8+yIJCH-@-m`>s{C{X%-{n#nw2v zN%adr@#2jL#<@LeO=m9TMt)X7nK0istLPK@{hf)7&r8qj7T{x?`3zz*<6hvn@c z*fZS6k<2n&(L0mxeH;C;iJd(fn^{y94!O%&%BLkacqhl|@fAB)29GCOx9}eMN9>tW z+4CYnOYLS1mxh;NHmQso9gseH_B>pfcl$fqC}?F#G4K?E%L?~|YNGgmKp@y|x7$>3 zDTebYA$fOI9h>u;Wfv`y>x_IQVdjmGcw)b&E~6aoa?m|w-8=?TLcmeh;&p1%8zrsH zh;VW@t6zDgq%^g{J6WtvEd`pujrKz`wk#AD;jM+N5>{D z3D-jRR+2%f>RX9lkupxI=!T291!NDA%xCCwRwQJE^F_V)^8snW{rcC)&FAq3*k^eA zKCazDZt*OG52Q%z6=7H|_?^GOpSZt9`NX$_bL)U+r4 zu1~>sezxWllwGJbYpVT3riTW3Weu{Lb&0Xx`#Tw~QZIB)ldMms%hK~sZ&~3YeGjBv zBDDUmyBx?2QJQ7S92HbxnOh3ydxC$8S{An+jb5Gbpea-$fjq~~u+oB$cuNAJQ*@{w zwMKZ{X} zflOr*TW)hCv17mupx~ zdPy7<%pAvm^@JJ$Wp{Qi|JMw^V#tzGPzV58--j|ckvSI3yCQ#@Q~G4?%r!%ZJEVmL zVf#l1QC}!aR;tPi{F)vW3`&PIEJzeC5j5N%c7!7UgCUlN;bubb|6G3cLrplPeM8Fa zt71<(M_Zq;3-lT7yb5GR5VJ*6iSl1{>8Ree6G~x!?cL-j#if3WDobX5%NpI%9b%PwtflRBp~=g9_A|taP@`kv zZaX(QB$~A}4g-i@9~w~bs}VO%cSTiK@?q103X-u}!a*c8OYrLFi+}+e2o>eHVkjS8 zV*tv3H9O-7f`mp>6na^B8bX4=Rq?8ToJH$ih9m^9!(K+f7@5moYGwUoC@PuVNmAD`(IH7vCeQ|#Z*_?*S+;P^*Xo!;rSY_uKt9VQ{>drQQF<+$9V zCW4Ef5u0SYLXEm2WsR8}#3FJo_0*eIiFF5mLfzHuWrI|P zJR`=mvsm`*zpn5_RZTrC>qpdyc*LD`6~f1v*_8hRy({9ikh8Y@Q~r@<s3Ezu1y#z&&Qor&bCtZ(HON37o-NH}cfPxiuSNNs$Wjo0g2>gFD z7?q~Mj@#b2%ZM{@YU0uE7|^!m4eY~zPN&KOfnC-{I}=Ye)n*u!Ow&yE%VJi)HrJWA6X-tcCRly{m{}OjSd=62R!m%8=@K z)Wn{>W^ha)NA-@v?4R5+KEaak642+{4bS)BU{;!~Vf9c=qI=$ol zG#NSN)`Cu@DxTZ(%`3N_TeE*=Co)qPp%GwX4-?8-0(yX$)GP2m5Tyyi{H8ixxs1@G zVA9|X>^;5Odq{f60S9M)#N`!-j%l~n*>w>d+&k|kqmMd~M>6uC2Qp6~65{WDuSd~Cg) zM9rfe6>rF;j*UfKi>la1EAphaZtG;Ec1~$A=Owx63;gOnv zYe=iZc?l-d{_J^+=DXiSmcQHaZAK;VkB@N87cEZG&sxbBW#NPt?xhdaG4(2^vJ+;4 zUUA8Sbb0rKdG;{Buk`X&>OC0~_MGulR}LKT&$omO-(Q$GLf`{V<*Roc3zn#wX1`_! zX;uWL7o0x!_Yxp~(Q<~T;mCVK9v{i<<}{uEWx*AqbQpDJY6J!@o@SEk<6)}GONC^& zqJGLib`yl0{F5s8&3EYa9oXWV!dMyxNMHLg)O;NBh;6c#hUeb%(wL(Sg$vLwNvjr2 zX&3)-_3S5*yZZ7*7vbZL(CYY}(i)q$X1<8H zJdOxQ*LFz4qmElcC*_clj&>%pwn6Q>d%Fn*9z8kPnf|V|d%SsUwA_t7jC?+ea@Y<% z>R1rJ0xYNip!&{ZLFyN47=Oe9J_fDJ$&}Vptf7-SDqGyaa)1H= zlZO|DNFfhRLvH<6>KcUOis|Z;iE%`8l7ZIMQR<{~R7eJmA^th^(9!20(A`B}wSxKx6lRJI=ZyIcOVeMDF$vX=;a2E&ps^ zPaVj1?Z*uROBCQ!AER~{nel+d)ds5zfU~e0{_UB~MxV%oTGmF!!AeYS{P6Rp{d+sE zSMfnjtf;cNyAw?YM9JKv$;!E6%APMfVjPkO zlkVexg2V0bL=^?OLm73S`xgRc(AvdJXERQdKhpq`?tXpfnr=2h4(CkX85RkDAkc-m zn20?}ZdxA>(_w4nql-rm3<-2V`Sj2@c~huYVA4%|OcldA+#ytd(6Pa<=fwWAIu>RYA-J=}x@rt~y6~_7 zI5xLTZPcO401_NkzMi<*p~EEUD#NK4i1F;X3$$ydA6-tUDJQx=uxM0C+KM(gNNKHL z86P!1)-()$yCI^pH($*G{~^AV{7x9*n$s9zY(+=aB`$+3LTN0m7j(4yEg`yZ9KIY<*vQ8P)El} z9%8v{MG-X{CZby-1(1R#A;jMl8QllD4kGrL-dxz9c1332u3YFtz(2sPlx*4p#JK`j zZyXSYS3pTg>Q`#|n7WLxBQ00M5{IsT!ix2bXJyCtIquX_SO=@8#o{j|z3FRx805iP z&m4FzvV!8FlO7948lI3ORa&cw%=3%jnQ-oCm=^{!y<=){$DOoDnH1rO(-#r`UP8S| z#&z$x%+Xku79-e1&ln$%%aaL}OB}SzL}u);M_SQMG1qs)n{p8>p5xFlENIJrF4QqF zDo{LKS_*X2T0|)x3yi-#M*5-2!%bB%siE0+1g58obX2xJ%vO$=04^o06vq)}@8fUw zyb++s6Y^*H9E-rzc?;T(Xrg0YTWYs<+y)yW)zA5D-3U6R9{hJ$GgZz(bfKhBM~Uyi zsS(1rdpVS!c4vka2I%Et_<)mt$*nMMU1<6fRQ{g+BuMYjMW@#Muk7lZ&r)!FkSk86^y`Ill`r= z&R$1duyJ#sNL6><~)Bp zm0M4A#TliTNKhTQj3ky9Xi;#GpCa!>pT0h&WeDt-1n_(d(Zn8^57R4ycjW44WgV>1 z)4O^LM23dlV9~;cNMK8U*KM)QzGaPTNP~D_wn-cDFEtx2Z#AO@ahva+C-#MO;#!uS z348V=cP~5U+n_zN8kzZf2?K*o{bu#^YQOUW%LSf|2j8cz33al_)A&dPO3-hCh^z}~ zSFAoC^bqp|@6)E;iG=)#m_}CEUlPpBaoc}1C+1AEwlS}3w zJV=NaJQ3kXbqb|HcMvAoQi0BhEf&dNb;KFD)^=bT4?W#)^3@z`b(c;j#!c_m26SzL zBdP4gqMd`HZTD0_LyZTMgGT)S6DmUs^vC%nR)hVC7^lcz|By&3#A*Sq;sqjsm zM|+$&T;`b0H1)}UtbvqXR>f9xfr(V>ecpW9-q!;y5D){hC1S77UiA)-Y4Yk_i4n<4;XldZ|nD~_wi?K zGN3)HKc<6Z^0|J;0Vwh$QNI_?J_$G%c;wE!NVvmJe-`lO zV@f6|Z4lEogAB7sWk~NoU)uq7j7+~1+RPz&1IFsTFMad3RsRx2{|sfg{yFhZ*ERQk z>bgy9_l~F+yM%Tf-*4C*r}m0?wHo1CWOoqq@37Y3XK#=c8lqOJfQm$~suoe(x20N4 zu`%?-*|y1l13qMwklNe8I2KWyB53A3B=B zv3!J<;B|SNs680gsjqjT6l!1jjOWO@<|4+)YhJp;-PA&3C*Uy^Gtl^XTQ;PR-IF{= zkhEtaT2^yg@D{Sc#hoOu0l(F?UeiA(7`?U1iF!(ZqkIDe#BBMemYU_E)E*l883biD zI(x+0l&q{;r(10+Ho{&j6*-~sK|A~kU##!!*?(*`?%H+xm%)mYee!yCYQij1=`-Pc zwEI`ug}b|5A24%lX@Q&Kn4yG!6muZv)Y~MBLAK5ZzTX?jBSZ4`7&vVK2c;<#2V>`O zHI0*h!;lfR#+l8V5$zE?jn1`FMNqfZ)4L+}pLo5L@Pz?wX?h$&%P~+%p$HHY!_PRx zCr0$sxUb?ejF%@l>jU|JCyT(Hb;pL9^Q9$HfZFf2 zu0X9G`QrMeZD=PdT_#xMb)3{XvVwioC(sUmMw?uzC`iQn$KHf%?0u|yVXAF?AoF0& zZy4X@<8p918?Ydh2Y`Ay%^$^R|J7fp2C`Jk-f|X$RDe*tFiJp9Wfq#Q#}(q%!6Mmm%0fCp*$s2x#7Tv9l*nx3bB zM$k*~6-pTcmq^bql2q1S2^36!)@8|?<{G@xC)|+=XievW7$LZeOJrs?aSTqmGg{M$ z>G~};S=}qOHM#=-tHxoQcg}$4dS>bH;pi_shvc#u(P49QW_Kj>ypq`n1Ipd9-Ac?| zD^+a>w+&6tBCBG`%payCja&fzqKsUBn-9*)nraumlZwJEj&EhnZ^1AB@0+R2BYqqN z#z^~)`Xg>F?01vS>h4Lywl5f1=urG)p47S;MAzje%Ah2Z$wGg2$nlrhcIH*JN`I4Iv{R~?>WD7?PZFH=EI<#s6 zD7HYIbe-duf!62~7-5RD7^-i-d1e*8(}%4BGL~g*(1!3rJ`o02R4mHDmGq$QQR_PK z8!{(#E3j?sD_W~Z3Kd48mg!kqOK(px7X9Bi<$3tZH&qjsu-waxG24lXgG+h5i;QY1 z%>X_Q>GCD3nQ{Wot9U@uiH)yMHt+cYEpYi&#JAp_Kr z!wRZAy0_IU(%F`<&K*r~Fn9+&C22{6D35$f*vH$C_q-vKR}%B}Q_`}3`o;EKYqW(g zv?^jvo*XzorlKAX_6f4lPhwJCzG)88d$b$d(`h(#TvUFJiFNU;*zYf15WBafINp*) zU?Zu(@-5^~^NRV?e~2~OaEw*F0C4~EjFWNAhPn2VI&a#Iz|fb$iC0X9D}}VsXnmbI zd3JNiU-vlP%a;rHo9{t?^ak$9Oh4?^BW~WS@XHwP?%No7e)b)kKt_x7-py64CjFWx zo7?Tc?t+J{6KWN`lD0Sx)s?hs5N-%sOa5rQ9y12)ObvHgH7%)w<{bdt_JrDD^Wac% zNdKX{3nozr_20riyh%hy6<{bXS#{H(v*a1GBB>XGG9qrKaq2&R3+-@aGpMwF@G3=9 z<9K?;#eO@}mrqTqxutY-r8^<`)}6mOT$_KqIY0g9wqr|X{;*esN<>-@>Pw(I2uo5l zHwx9_LcUVB=U9(u`*DOvZ^RghVEXiPHk%y;;Sw2})~fEXqHl7>;Uo*btZXCYRchUp zu=kDKPL3tp6q~evzv9r$4n`@Zl;`B_lzX?Nw_8ch8x|P~JhL+^`-1*N&L&=#XZJm2KG*ccFIgsazgHVfrzS z=?4^0puc?k9}ZQA7~!EF8xcu`TXY$f-5JF8xlY`KGN1#0oA1|L>3N1lH^kl2B?#gB z;!eBiePgZ^U?vMvGmhMw49-D?u*yNGoFZAXg`Fb}yj3Ws$lv)ybB-sOh@@WIZi^~n$=hLs&vIVD4Pb=6RS(X6`Kc?tq{QwhU+%^}%EXlJ@X=qiV z0xeO|IdybGk$2>d?)aXoyNZFVxR`@UVN?pDt9E=rQ*p<9&fD@bWLI!}eIPK9p%x9L z(v`SB^yQ#4SrnR-bjB{tLFb;FogN*?F$d|ci5hr+VY-rQyT>nESLY+WZ{n4?U|UTD zGc9QhW35~L6@K-mpGDD zzgD+xPs2xAhaKv(en-5LDHvZP^)thsCEcq$`U7wFO#_3wdcNaw@fSho`H}Pj$#r|- zd>D6Tn!1AH|B%4O)^#Yc%+m^*P;O~a2yX{}X(1oC2W&GJ#JW^hvG{eeU*LtNosvrR zL)0&k`8%zD!f12phY-VdFjcfLLLP(PJ)e@Fr|^3zd)M2yJw#oYQ=a6+0l>W&gM7WV z3=Fs=+#79slm3r^9ol-fIC3zI533N56lx-FWA#;6L8}cYMI-G8{&pu_r0=r#qKQR+ zOIL~N{}M)q!y_OJSkG)GTzgTK^mim@&vR3)#t-oOw<6C~Mb`BhE0Es~^z~m9ZPTwB zYP;MT^K~73s>fTk44U-B$hQwWs#_*M=wKwDoYl!Wen7`sSw^q5F|z-*W*^75M#cT6 z;TF)w-r*UX5HJama2ZRoVYsy3T*{Mwor>2Y>Xx|A)cPZ}2x?>gPLm$qTeiacLP9H} z1;fgGoZ&kkW;ViT}`6t;7D z9Jw9GsO(pzs8_J2(h2vyP@G|Xg+G*rHBbGfpqurE`%QX#pQK{&L_40h#V1spd6?XA6cwQerB@H*p>O8Z@9#X(FSWA+r| zt8Jtk@y*v@a=lE+_SmJqwKiCPh_I07XG;rbe-dX$5)4^dMOHiF>t$#gwBPM%f5%}% zaSbHNVWJ2wxGO!I0H0Lq41alaS94An-#;d`ZJSx06-a7S*)UgdQBE{}&rGx2R&(q& zh$8_>f(RH!Xxjp&Txjm^COZ9u%}eeEa0}DQ9oc{fl`)3GF7!aO1<(ylv@tX&7%2jL zwqPnbIB6B;m=bq8*_2^_8+nIOzQDq+dq_TEb}x2>%C$howOpx%d+B6HimtL6KeQc5 z+G-RUoJ7idYOE+|^&2rO%T#v81@nfGavFf_1BvH~EOMj?aU| z;LR()7cfK+sc2_^a|4r=CJEEgfsGr*QWBFbPoRkwYmL)0`S+GAVn&Nw_6 zF!6sWU;lOW&|rB@D-({u*{-<$#;~{Ala+!aIk5p$Fo`68lN9z$FcHTi43sNDLL1h< z&b)DSb+zt1x;q$s0O#Y>yCAc*5NtKcMhD$l86)+cm7w@lD7(b}kvzh9`?lY`-xXI3c`&NbY+EJ6+4M&5C38-Yai(iOf z9k`(D6I&PqaVPrBUp!C>ZgrN|{vn?+?rhgW$8Nu-N2nFCs0GDvLx^Ry`8U^M-0J{G z$n)duiPNFCVKds%veR`MC-q?CCIel3jLzNx+J?cKDZ@3EW4B@J2ElfDL5GBd0zuB> zJFDk^=5j|)tTf6+=_^DOO9!iA;3z0cx{`@L0*=KObpmQ1$A)xLjE|9EKg*_%H%hG~ zat$2uhBBWI2SC>(Asbd{RM48e_I(fLMkk|mP)hzO^fnwQwZ%YDE(b907K1Fw)g3nr zNr7I!<%D=M3CYKhAt;MUAY}$tbpN!C`_6VdYt`la<9Z&T=`57CTx6=f+3F==(yaPS1Qa-S88C;=BvPNBA(* z9IU=_gx)R((c2A=D(`QdnT`yd7@JkJujd?BR@1x%YQ54@dF6=r&ml9HM8DOn% zvz|IVLH_?1UEY_xz({BzcwGWcBbsVqC~LPiWYynqdT?t}X=Qo(6>JaqqmTV2|F&03 z3F_ugR-O3^x~S*78sy~m?!Tc zzVMi6dy1h)JhaRZja z-K_|YRyH0GA{onbNrX57aExRi+~YW*(S(4$%u(;Zg?!LAZ%2m$`}8nP-N7%ndxPV~ z;hjTBGvxU=P!{lii`;lx;@yfeK8v{aT9ha;k4lc{0}w1z+;*YgeuI9aK6}*)-fjd9 zybc%Oqp`(=L8Jk!?=R(GpXcH};XyzTaS*6CZI773qC^Qz6V3+gZP;_^>pRG&2)vii zj5JR{$RaI@|IQ715d-o{KaqnvjU6pOS3{?*6+RU!rIlfSoY25-Ibed7(t<#+Iyv@1 z0k4TT9FP2?F=RM%FmhKRS4caCZf|L_lE#dFmqnO#NF^BMn=dRI#7 zUBE8)d2)(0$7*h1SNb}e(5)c3hjcnN%q!|L7v|)+n_%53BYj9f(q$?;RmIv2|sg@vwhk(F`91l`TPY zynkD@P?si#X~PU&GZ>Oje)FR>coA#5bv6@=sRR#=#QAK!&M6+4!L{Fn9VK6%6gTfS z6uYS>v0679u`Fm*xTIt)V3=vG^lk`$Sykh^NSCeFeBdB8bX!_Xu)&)3FA^y4Oyrd* zh3}fy1isn^oVT{B3n$+Ej4_C?q=DxJp0GrT3sE!iI=ND>a!_*8T3gKw!*G?E@359o zWxp03CdK2+a#+ocdCw4)Cuo{YE>A`$yz&Dd{fC={+@B=&xK@FYb@~13(E8qgln!@6 zSr`L5))@AMsU<=PBOmCZ=P%vNi+*rxS~};DjkYA>s6jTT)BeqW9;+b$troNq0(h>>oBBns2+YBwpo5|n>2_mvpYF)R ztX$bQ#8L<2wVKYNsVa3-9*AnHtzjOYs<)sl$-;01UP88O?J{U$-drg#169JK4ML^M zZ$g<4%odi<_YYa2ybez#?UKF*0S7Ywm&%Jx^r+swDzn*gz04QXGR5$J&Ysu1v&dih zgGNW2a!AX7Tl zgN-DKDjH8Ll7KS?{-|Zx;pNqy zpulVVg@p9~2t%fubst_;Cgtkhe+rwvGa7opg8oxDKxF~FkV`qG{o|4Bwp!lw$1^Gy zi<*IlQNZ!-<$%!+eR@}imUm7GUnQ@y5#)rqgC7PSwDwV8_ga1}*p)Gzv#sn3O#*6= zP$VFbS_@8#Nrk#J8WeYHctZ1_Mf+0U?p{~>=~+W4}6Hzp7Ae-BgNliE&& z4i^QA^cIRBux;m9P64vFcUm;`g;3F;KYonwY<~)ne48#O8w2_pqzd$rtgX}PF4orL za&*^y&Mn+cYsKss$C6p_pHjG>Vl&oL%p_vXW56&*qx~zI*#zuORJExXF%qo4&;|UL zoqA@YTvu^%6DyM!e>q!ne-hd6;~lO(CO>{--2uB=&VcB_$R`yjmH~)K$4i+16%hoN z_-dpTD*i*;uk$ATVyTTO8~JtT0YvzRm%XkRH#c$s0<*J$9VdG*{hhl>o@av^rb@2x z@W8_VGtK%`*B%LVmE)`&W!|D|V1@U!8NE@I(w^{1yN~e@c{Y5zS&_L}3{J z>ox&tK$mb|c&l3_=d-TU2qy9CLE2Sys)diEX%;?!gD5TaEQ8oR`B_K(gb&lx7oSma!A10+=Fq8o!2~r=aenpEtkjk_&^D=aZRP+Z7Hq8 z9zemV)4B$^jKh9o2+sE%ojIywAg|u~M^)Yt4-qE34xSNYY6L9^|A)FesPF+ZdyWt- zgXu<5ZxuqbMomodh5r@f#1`W|J5LB6xUBttoCC=H*vR4Ze=~hp7;b7k zP3!#`aKDhI_l9nyL2=qb%j=Y2)l@@S#oPJb`3kwycDe-QYw7czhN&n#tg2~g$;OVkN6)YBy3x|& z!ZYIwO}15KW$)*P1LROUHYHc`Sd3z*VoDJ3rxeyxKA^}5xT@&gdgMCK2fr7*OFeb0 zZ&LB4=~)eD#;HjCsD$oIFva50hcM(ixK}7{Ey*Egf2KCcOO7w|`yMM-HbuW;R|)ir5J6bp_(WNLy$3|6Uu$eNuuLv4;$QQ4xdDC|!patcArI)9U24hG&F zJbHJSFXZH*7fByif2VvUDXy>1tNVo3Hvs1B!Agpa1~;3qryK-?F(do9znESVum zab{(Y4Z8OTfZobVCqbj}fzN-RH`6Q0jDkVwn%d$_yIx(CQ=nDsDpHNwS7zVF{QPLU zeK2r(R?;Qp1$}wYcNaRvYK-xV&9-|1R1#M z=Fc9KjAt?NMi3!r>kEIf;4>-evcf9AX$;;MD0z~5NE`;9VOG~^J}RESB#B=bqy zZNTnHYiS%itm?Bzd^IIU9A%C{vr{1im(W<}sr(BfDT%1H7(enW=Y65np0AlAzz zw~ZXI@EtQ`S@hcim;*;f3G(d2OV(KI;pOTPD@4z4z?9x{seiyk=VbIVH|zd zyXmfBZbTZT1HlNg6FadASHp^3)c=|45v+op3uJ*>N|`pCTs{62*9*Z)lD~(Bt={1?OH9<$kAM4puU7llJx!zd`3cZDPe_oI$tR(`jgDK8Qs`_WIGJYGc$e>0GdL43$!^@1zO?F&S zV)a+q=k+D`?L|S?;&H!iExF~m2HedxHltqGCFsvL;z71NC(cI9QPO)1H&}-h*1=3k zzO%BSD+r6bgk`R&{Nw<9uhKKW0G$Tq;Y+UM7Bf0(jh_%3l3wTEf1N)*dm|T#UZ7lD z$2&LXK^AJ{0didr*`KV^9qKOHKGaA%K`IZ6TD3NcnM+bkV0bB7ExXi=xPh#Ryx0A5 zalM*$8AWx-(dO-7Mg>EU zK)d1`bc>pO3p1`(e~wLJtw7c8)4pf&p0?Syx9XmYpne~^+igkKGR}KJLEb4=@{v0!|_p)f3YS>LMh1AX+KSOa^6q- zLXgCsI&w@uz^!lJJWhz37lE>%Z5u}de-$0)<_;qu%`Hmf*@vDqqkP=>^HGl@d{m1| zU^RA6qKjcY7%t@G8F89CfiX(c;ol}|X7s_jc_LJ&X)(su`!{Wpl)gVQnej<&U_e%h zv(NC1GOI4vf0T`@5I{ogLbS3{RqK2B&#Przl}!l7WQ8F<=58G(7>m$c(C7bq!0mba zjFwR8XKld}ioojaKo@D|4GlAY*hJCcKW7?PC$modtJ9&J*GkC>3E-E7>B7LwCN+4g z9*-oe45BItLLIeg(0&_&k4{POTtD)=+k!3kGXWole;1NW*}TZcDvoxc1RQowc;fl0 z9Up-xepp>dwE^w37UL4^q6_I&W8g!VY_{{ zmTLzN7Hfn9c32m}Gx@MsmT#qOLK=b`6ef^7LCL^t58p4&ldy@ie*L>YWayOK%}+AP z`=9Hp_NacW*rIk*oM5G+NMA-p2$Vc13Cwib+%@!o{c<_-qJ3)DIiPDMRIJ1MY014NrH}m)yhHm zUM}FLwa6(zFWTBY;lSUAfiZu>*7Q0^uEJPdL784|ySsTZjhF~;6A{5={Uqo+^C>o^ ze<Zcxl&M_8OtEv^#zh)y{4Te#$@HxWG46t^k}c%;r_1Muw8Noz8u(mDL5q-> zSK!2l)F%n8>9oD&N=kY<5EL?KLRt0KCdw9Kd^l3634FJwR*Fnoe`Nh9`b5zBG(%57 z;&-8FL8YBx^;SG4&u83eF!iAJxsqo|`oeH9OB@r;8z7znDWY~Zc{v*ihb~EqJ%|_m zW?Sd1AVDLb3WcWgv@g*rtS585V%JKbC5b2;7@;l8%ZG?ehCh^T4HiEk#lHNeqR-8{ zLWs6L;cv=cFc{%leX zmBf0Sqr6f3t?xbf9z<-?Pntdb04bpw`hnQPnIBLe>QquqQFa<6?CoB0yAhFl5aaNk zIeDgDaxe{ZDh`kpQIv5)x+Q$O?N^^QY1pVL$o!}Y@sfmR}*qNM2Y&CB$qAdEqA zm0tb56JbQC0W|1+rlXEozp_uciZ~vgmWXXii^4AecFiH~ zeQxKQG4F1nCfmx`_n*BFT>sR785F?B*d|lyjguDBe`^N;4hY^{c8>paOY`JdCNDGS zhwPB8iYRZ6{VQvnqalXKOt*t2>eGtR?1)Fy=**u>v)_We zb(wX(+wzM=yGd;MKy%HLPc#Lp*p93|r3t^&>F1^b`td|YM@QTDFt@>NO*pE&1z9Sg zOUN0Okgd;NIIKH7mktMYrAKrZs&VOVbI2Q5f4I$f!bM2&r@X|^?7*lJsY2f(p)^IN zmIcf#!$6V;sJL)abSHZ}RgU4|C&q?Exco_NF(~D6@CW@+!fP(5+AEcg2V>Iu=6pug zXF2`ABZ%N0XAUG>(wn|Lj&_f9f&oG5`74~*Cde~M%I@|SMjvIN9TYV(S0KktAGxLF zfA+nB^Qt<&Cb>BNfm7ob-iPj-FW{@w8Ec5Ag9EY0XIGV{$SVE7_7=}nu-{%@m-6|j z7NJv!P>DqhE=O`%7arnry~p6}(Qgb5tO&LYqD2omgSwz8x}_FL?v*(N13wcqonr8{ zRp|5e_<-ZMfeDd-r7zcBwXj;L8=}NCe?Yz)&5m`=CAT4Qr;`tN+dv2^8jMt1+pI%pdx6bACy_-f0yHza|>s0g4!0BHLHU!dwta!es6oBYg`5?ml%)&SM(4WQ&<`~m-ya%ABRVFLaH&WEWo9Rp{M>A-ku8*r*t6S zy8p8}Cx+PFfrhGm-#Q*Xh7+tesh4Wg15$bsUaar^I(_boShL16(&wyk5sRCC8P5*)z+@5DrFe4Ud_)Gd6!LSE(lfDTh2prR?6H)Xk!+`5T#wCp;=SffQ zEq4W4o?^kBqyk!E%bk!)MrJY4n+9u5ox&fCvJ)Q&hC`LO&(l9Jf80Lms;_@qZo7-- z{5liYk4W&gdAnU?cHZDH7xfBa&z374gZ#Sg0=3GC;mn--bXCSQ)M4kv!hD_w!*@q4RIy*Yg#&6TR6j-wDE*SM4}% z!yu8OZHK@^YhXxt>GrTtrka~IE^*M2)e|hgVmN~8MMq7efBHBb=Z->JlEG)|-JQJm zj36wa48kT}{Z6=bhy)=#nG5d~WXnK;hpMG(M|sOx(yrakRLU~-H>p0AI*MkY$o~pI zK>t4BNsp1X@dbJOQ#=Dgh$^do3QtYG4*s*^9||ko?>{fF&q4oV;*Wi{gH*M`C=E9K zD9=}zkC-B6e+p8;GBFqU(1Q*FI(OzZ!ooul5m==wgK3pk+S{_}^rQR)0H8tjOES9Z zmUqdoJSgeey}15Z=<>4mpDUmw4N{kDpR|gZH2u}7*61zy z4Ut?GBFpf9Sd)?@Ojw02+QMbmH+5#S6uEqag*XHgSA#@JsEMVy@a=}afJ!DvHFpkDfO71f98ru!g4wu(sVZq z6a!7La;O@qXl?v8N;h){$3sHw0nVdS+qA-a%~ulOAxPJ#A#sf8CV03oE?XH%;$2MmWo!J$hODN3>4} zON8g4I1ewBF<`N?j>^H&c*S6w;Yii|ev?dqfP3z%FqtVQ1%5?P1~x)A0l^AZlY%R_ zNre8D$|fJbCl64WBo=esR*##k9wAq+%${bP^SJ_Q3^4KVOu_Ror-&Sr> zd7A~Ux^56#u(Fsk?@83le9))IwFiq*yx8fe44{tqp29Vw^Myd`y9}p#np$bkq&sS5 zJiBq_eWDQgt6jqKD#%@{n7+5q{wADgFdpmUSGqBRGWQv+h)i*jVLFa=lnuMzkgI1qy9GW_ZJ2E5gFZ}2ne8qF)@WG%{V+KBbEq>UWH&jYL5#!9>3PFq5dg-ab%edbF>>_#wlx7i} zC3DzVWvHX38*Mm4V+F>Ol;y{IdKJ-+z$?RC`EqN)-i5HSLBd_ai=wJ)e@?UOFpSFa z)XK0lN-9=K9vTgU2I}X!RbCKx_X8s&Iel0nJrYh@bw`_Dec)s^@Aidh6T;03)>(Y| zKT#pOxOsltQ<#sBQsM8S>N&4 z;keS6c>P`B^^4xe@7@b=e*qo=L9L5srka090ZSInpkQzeF=vdAL;8S?-kyL5B-@C( zRZB*cToEjNEkFk$S^rrTez#XpfZ)7R7cpKWM{7}sOvvgRkW~a^V2|J(SN$|_^}P9w zq)#iZo5nt7AMSe#(PFN4J5W-6oXCb`qp0HANpxU74Em`HFH229o}kqPHA|4 zD%n`}yq5y6UR9tuYOCkf#34TOR5fh|+}bytcQ3O~4e?m9?3j60aj>`(h&_3|3@S@F zdoeQuXqO)<@)oUJSNBP51wA;K$I;3Dlm0Xo9lX^EQTzW(E+g z&`xVuXfO2Re~v#kbWh^&F%K10DC1*}X$YL&Dz5!vKiVzQ+T z2^mLbRJH0tsN?H62{nom^p8Qgz(Gy4e&oX1^HTA?lr8zi*mi~frop>70@b@);h z`2MF1f6}#WtH1#Oa3!aGbfu@w_6d)}S~fr5x3_u`v%)3d93t9s|P3$Qe&gpg`H^l3JU zjgGB_Hsz&1LHhJTuQ}AjzF-&+bM9OQ>ZhDUf03p!ZMmGUezc%qglrU=OUo#2U=#H0 z(ISB7m!by%?#RxxOY0ELoLn8*5)SYDF%!!*ny-Z^Eui7>7SsXDH_C& zi(`T9PqyJ!#zGa{YD0_A^+s|SKYcOPh>&$la*OFG-0D#AQ!9V;VZw(Z4tTMGSai6H ze`-9~i~RFb2&;f^Qx+AdFDVTz)`2_puk)|qDh|y(JMlq;8ENGRz2fvAseH19R5NrD zRZ3fQx>4*Z|LLmmW;TP=uVEw3h9y=*Gf9Q(tdXuPS1q9iS4GP1++JK6mz9O=n*%IN z8;=jCNyW-N5nIIgELkMPWFD4(x)A%1fAS=KU)X9h=(*oy|35VL4gj4;;($#_c(Fqy zlsc-02^miZbzSTxFT)TG3(C2yCB$BWR`^@RG{1xr3teUFr9=C0NkIu0ts;!icTl4c zwlx-q=zm#byim z0baW3uS|Wh4#$Z@Wp&r_ai?Z9v@gc z3i|qymJ{Z9A3p-;ZF6@kxTV&RtVVy0c15lAL0P9^$qN@p^gmU7r>4F3f0JQCE!ux? zN@*?^O>!y(t0G6qjeF>RANA07J)yhzMzmd?p(}*vN$UB&u|EJxd2^U`^cYr#)=bik za2Y|hJq>k5YG!E9BVUFd&dKT%e_0hD{DbTzc)3DBtw331h}@+Q;X4y)4U?#ugXJu^Im0qj;#_}oX$jSsiDtD80mHKhQff$A{zJO zT?_1sSnYFugOvChgruLwq_0W`QNT0jqE4DGryut|mx{P0=IASfe`NBk)6|WN`dI&| z?RPiSLP1^~Qrz`+Dp{fnMk^^vK@g5l12jbFM*0l=WRdOJD?sK(vcFcrP$Xb~{z#A{ zV=FEpeqhbz_qT7yn48J_U=ku_RaY<;_tnJK)u*&)ks#e}XQYWVoS-Dzz(gRe=0-b@94|~x)T;8)MzA} zfUkvcV0)${khxurK0BAm-ttn=+8?!*@x|uYBk*RD(b}@EF+mZkM45$(0M^#C>sD_i z5_aYhXZ7 zserDVJV2S9fA%&|@*I*RClxfY#)Vdh(!IoOO|~uJtR|!)bD2MP?Kh*&2Pe;2%p^8>h9rdW-lxi4`lrIP}O z$=v-yDhmjF&+pje)z^iR<$o>H$I3Je`2#tf-DkEtLT)T`Fx(Qj-E&Y9GqF~tq8rt= zlTslHEW}|AX_#SIt0v0la;Uz{IQQFUm9Uc|Z>i~ucdr_$N+uI3C%s~ttHExh-{*z# za6+|(f4cKkXPch8B_}cCX)t+=4ex0BN_+AhCk*qUmeWIO--5F;)ZrdO^Nwcgd?}C^ zG&+-cwf6g6N63zY9nozIl{*L<0!J$9mE4+PUtlsis=YVpxY|}z<>78#n4*st-6w%b zaasz}th&-z_n`e`)fMA&TXZBDcKaF-vyuw6%f&w-CCg zE@BaY?c1wR+|IV*>qp3CBe|^G_lMacblRt4!=LhuEd^=>@(LzzRYFT98&%FoEe zHwy}6BH`2GJe4yC1C)w%ip-1)07htHQv9c;%`PX)<*ERe*kc#pHEK`4vyxTJCY7(t zf6OvrHfXftUXS*Ck^(r=S>;ilfzJH3h-9Ju)fl1r1xho|x0?(L&@ONZlAKPi3JD~U zwk2ZUlCG7yZe!;ua-#%N56Ugns8fVHp2GZTA^}BwfYdz1R5)jkH%YG?c-Saqui^tq zFN}Tr2x%C!lDaGOjM41)PX$}&!p(}Se=9UjU53=0Yi{-`H0)a^`v<==;#;adlD@rj zW`X=h%fDVOzktWrRKxWJ!_=iBcM{~+f8Q~uXDFsFp3)=Jc9b|!)KD!%z=2|dD4(t% zA{pE?Ux23|U=oTvw%X1L$QszL^v2Z636^j+6!x?ZbK|0Fvm-wR$(V`CnRY03f7YlM zh*s9B64ms>>qYF4p`(>yGNHih&pM~X8&(9_#J_y6NvjA3JE3<&X5(2ua zKoa)CuY)rRdiqxyc@yZrprc*!&sw+r_f?KQHJg<5`hXS&5ME@Iwr~lya#*~i?H?5E z^XL}ZXf!Z=EK;0LpgreiZeZGGjpNb0Sq3t^9Vc!}FEP2lMA9fSqWQKDIeklfu@*IFi!c&2e?^gmK z1>R`i#p7zo^S%7Z;aelaH!RO6=@5ZcD+KR7R^Hc(*<>O~C7n!~f1q|%Mj2h~q?dA} zy>~mbbdlx)VRs^Qs_8LUaBq~Q8$4YmJWlYYO-56CjkcsB?+%%FP7Hp!caP97-8}M@ z{Xc-4XhJE@+t06Ct3q4r`|MvGK9=kYNT3w1ndfnJvvZ}>P`Uysl!T8P1G6&wrg5}d z`ZsQls|ZOpj?(}Tf3+B$%Aa;>Dq8R{vEpm?DJBMzpc{~3kgq0Ne5S$sWLet39G3cZ z^?>0jv=D~?M7)(dAYp^rgk>e&@PBfK2FJubS`EDIo8m#|8E~;tGBp6 z&004CHM2s|XQE}Lil8>n8BJC0vwGJkuffqd9Hme^5eDpLe@Bpp>{^i(u3iN@%?k>^ zHsxmy_th*|H?3>|6T)N4pFsZv-G$``&Wet| zw1fP6v`29J8s_mfR)!9quzz&~N-hx1CTa!b9pCB}xUB4#^$Deoak+vXe;L4>f?iuz z)HSWqF1h)tf8VC)AQW|SN{BgAddfpf_Iv!~%}b*Ntmg9aZo`C#wHUE676rwI{?_26 zi*qf=;_BiZVz5CydRu@f%MkN={Qp?iVg2kI59N(rL;sHx2fan_dsimcNxA5Oj?PwS z$kCNHnk8ya3`3whc`r)4NoG)Y_BaNFAaD6CJ(V~ie-k=lsZ%{he@2v-&(ot^VAyQw zD@f|Ic;uQ(IjI;Gsl9!Gv|w4(`lWBEFNlU|Z4>#gip{5aC9Jg|+XiY!7Ihc_l$lLZ zSZgzaUFUO4wzKqWEry8lWg(3oO&$nrLZm6q4zMdhYhq>)V48VJ9Iu| z0IkpMf2ej{XIQL=jv$9G`{%Lw{J}LFAO!omyr>5I@Cw&D;1^ZWWSiutY!?eBouqUy<<6>>gM;*==+y_C6xF*JINyUSsFD2kCzNl<_%k6;v`3*aj61U*XajVCgys z7G<;pF;Xeu!xO4VtB-E_W?J}bEkY|zH8+8_LQF8hK3VUGQf-~an(fQlT=&DJ9g>xKZ57Zc_@1sSdw=Qn;mifFv4dH`hQIoI& zWqVsReioH&#$RC4yLbNOTZa$+6*A9Xm)QJ;N5&wm2z;o|e7`WqD}9^bNE+rhmXIOL zIE%VVYkfm9{0iBl5~G95qr%gq5mxP?f272(B1hvv^s1w5205(L?sHxLDTbMPDWtYy z%r$%p7eagpD3OmeIRg)hu*8XEn5~8&6odjSigk>I?pU_POBdRg+$`}aP6)fb);tr8 z6CFHo7WvjXL9n_@VEF!}Jjvn{I=*P6)@EL?I8h$-1&%L&Kx1shtkL@y)A&q8f4eT0 zuyImUniHonCjV?w7gi`uK~*Lk8B|e}S!dSvMF^Cuu5sh&h&fMP8lu zx-3joT-<5Anou4m`o4Mp;R04je?0w9n)sEGDfg|r%w>reh;EG=?pH*8IYG#?P?C|xo`1yJOCw1xst_|*{8d4PL}9ofAqwk`m1+I zDb`-j?;VPJHb`g|59hrE;m1mTlj?mruNMtUABvmr4AIZpvEB)G8N6{=3=MF@#R@`_ zSBOtmF5K{>Wb^q0*IC{9hNGB1F3ES_h2UIoP>trSCDwIrOoSkiynHcR z4A#QrMUSEazCP#V`_jXz$5;1O65U%+Qj#tGWSuG_`^Ok5W=*Xmf8ZkVIxi65x`*ud zJ_|CG$_tz?z|zEuN~0i`fVL*5(oAo!>6M3$^s?|?5yms(g;u6w zu&kmt5g0L!HT0eOpP;q8mA#}aj@M^vWH$=+Jug@7BQ1U&?n4E23tPQdUe!^l<2E*? zr9LE>fH8Mcntg`Y5JWi>uf?=HTV1tN(g# z_qr<<3vWdH0>3{$5Q*Q1h4y2W?eXSZXcv=-v@fjG6AJch77F{VO>NT~2MUI-M+R>z z&+tb|VBt_JJlAC!Pfe=cam!|~t>LJ`Wu;d5W&2UJeWW}+*%LAp)kfkTnKpi4_aC^4 zC)?O`><`p+e_CQ6?GOw;V<@I)&X%!sk;DvCq($EqtdPz%^E{7vE{{WH>U>!6K>VQ-^KmT zYbMVI_4oh{m30-Z0V_aVw^Zn@$mK}8i6~uKP~`>*e^64I(NjYH@IGh&oFOZ}r3n5Y zCzc8455>abWfZO(mJxB9qDqO&+*A1?E;B!C<8m|MWTG9WG8i)iA$AZwEk>&FuPM@T z^gzu_j-~Z+wl>nzb0%Uf44x82^Z(ong*b9blfly}Rf=1xrM$J??^MYCq~Sz7@|xZ% z`|Q|nf4@KZrDS@-LxENF9yD{*=mFFB%99)pOB}wR#xUL5*DIO5DRMy0qRNnU!RIQv zL;-$Xh#PZ^ZZBfivHy1& z$*AzWv4ShF&kj(j>%fOxu52|tatOJ=NvYFBe;T5OI?$CQ-&K;EeFg|R_akxw(Sr@1 zRh}DU(=n`MOeOz4MKSKUDb5zT~&nS_qVK|C#qH zz?$TdON6o`=AfxX2zhLlWN zf0FM?#()e?VI}W9z8nzx9FFq7D9X9K$|;aObshnR>+aQ?Eag~}oBf#v3K(qwKN751 zvv-Y!$-x#ftM2ik=y8U8$`4kMF`m<1D%r{ig9Dg<#{ulvM$Y z&;Bu=kIWY##%aniwg@27k2FX28O(fQf8rDWm%3ANHxyAD-9sooSQ*Hkzmp;Kv>)M6 zx)@&vy0oRy&#;F*`H>Lw?5^OPIBN0~O|dTXmo@1g=`+qFD5y+KmIN3!6%n)SawBZ3 z^d4yq_6eLQ-4}@n?60~DT0H2LZTQ$;`L}u#DjezjM!XaOlPjis?=m!d)KH6Sn*%2 zjsw+Q82vSiI7M$%q~M_beRc@7!2xrfc3fioSW?a-Ai0+9=|}>iSqB(z^FqrExjCK2 zEFyfJRjZUd0BHH+ljZ_A`u_;=f1%;pfht75gOF_AjG(fJY8(rzpNqL6LPbu@_ZsMX zdIL_ z(toSbHMf=)Tz$16CmS^;UXTGRcjlGN?+K-l%NTYKX-XYBz)_&v%Nc=i?zav|LFr%SrzSBaZ5W z7%q8=;EqYDlX8Njc_8?u4J}S+RBZVya;y1->B5}qK7`t1@IsMXLC~kTvccVA$(kLL z^%q=wEC|qRyD3JliK|0Ue@4-4e~g%k^Az>AW*XIylN)o9O&J@QqTr)Mz}gGTAQ{JXc2PF&Q1w9 zXp>PB92z?f^TFw#XsxOmJ7`b~*AWl@0V)C{w-1|0US}sDqvXY?e@Q~2@LIiEyQcR_ zv-ug2EanGh6q&?e@l?~8LgqzBi1Y~ZEG0!H9F}Iq)A929^Pti~qf!32SU%qxHiIi# z2DoU1TIX#r2eLI*OVZ`GkXbFe)|Xb4y&@`-$%9*IE!yEDSaA_vtNWq7^&lHf6^mNb}cp2kiHTx))P$*TizVUP5Y{jIq}Y^R8ORYQj$7jS-@lL z#e*rnhiPXMG@x}s=R?+Z5Drgs@fnjb#Hv?ZC;1j6c=`Q0Ap4recw_VorovLTd}*oe zep$lqU-(YU_a7k%9=K|r=-g;(l{VpU01DRQc{I3OwZ0{*fA+1C_XPltB>b}kP8!oi zNE(d_)K7)?F>p$gEU6AR(f%r2N0 zB7>K6LRTbQ^1ZaH2`8r)qnd+PNfE{>2xdac?RbK1+ebJ8KrWbx-vP;=(?>HA<(m4( z@h2a20bxL0f4bp8X-_DpW-l3~O;%4=cq3u){(JIaKUccIRwp}EcmxFAGL|_dIF=c< z9k}U#%r*OP_E)Of79Ro`Df#$#upi#D1`42qcc&>6yZt&*6-o;au2d!Rzp1Dnk`zS^ z{Wu1x7O6F9Arc%%>)&S@bUV%?PG+V&A=YU~6~CK3e+)6m?s#NWMqLS0KZM!ftYY=g z{TaU5hsq4Vtuu@uh6}=7rS;(@B}@9lOv$DSdYNuo5<1mWSsO11Z~-)+o}BsIqYjqq zy(#I_Z>ms?&L`PFS#_y~&oh~S-sQE1GV6I4zqKdc=7HX(K~gm9TmC`gB1mnt0)U-u z)%-63e@_GaJe)2*`y(7PH(A#ShaWQFkkH0LnkCtU5DKOFE4CiT7>8KJUg5 z${d869znMzE?gUDrLCk!NW~AqHymbu%0@?*QeV0}yy`EV(w~FTt~SwzR+%K@HHPWR zPR02cIF3u;h_dBp$$=A+7DCq#iVx_-O(b&1z5rv$I7mqT?jXt;^On{vgStR)mfCy> ze{&?@uQ+|mPP~!B$DU_A+k{)A3&IzC$Z54BbLd8(ewBI^p1x`;Gk3N-;t^Rw+di5$ zUYQF3T?g$tJ~6XddV)Nf6cMMj2{X?MfE1)f=SFyH!Yd)HDC~~M5 zFVgYv;G@*=N0Vc4dNj$**Sm{oYg^7Qe_H3YIH}7jqTm=7eg5aD{L=&`Bq-uqxII|c z);idnl+Td%sqX9~#mVqV2&IeU5Ot-*EhLN8b4rhxPE=A>I?78)mFe>IXLbU&=?FXd zyx~GT8h)soA@2xCUan0!?Ckm@BmrR3)l-I*SBw2g+NC{7mz>*aiw5fzIQ-Dp&LyxekG#fp!8JTh|l&l^VFy)GC=71o1lQI z3fs4+`fBZ}s2Q7Im@*bLeT-SKCY@;) z{leF$d7fzvjPAXS@+Z%A(Y7Tis>6$2z3f9t<9g1dv# z{9puK=h)hhDwjL8Y@l_RzLfXDcG(4*^{w%d_@({VY5w{V8QnH&0Euj7Z-iH~b&G;O zsIKxb3@R|MM%elg>5nN*f5#KHU-IdzHgrd83ls#t<-vEdLj`W>wwb>NTjdZ#dKS8Z zTn)q1UKnJ&5r1MQ>{sPh`iu{{rILKleB#%jger_CuWA3ngf_TK*F$I-(uu7~!`@6= zT5m>6IOgqt)DG73fB?A#5T6@9hk%uC@eBvtdb+rWc4_1i5jS0%e{3&MXu~nfT3Koj z8ewcxk=pN!QpW2y6JB zrKU9L<8L4njmVI_NUKUXog#+2hz*QEv&%yd@Ee!&RB9sCNw5PerZvrL0Wd~L1p!fzc* z0pHGxwF|b56o~t>OQ`u)JY3;{K>s7A>_Q3Z9;J3?>=CCOTF=G7vw?^5=SZPFi?vtD zv{0}?!P?@}-zL>7M3XIEyY5F9w%4)2anJ4wYbeHi=PKRMe~QaW52)!1HOa*DvPxMc zK<^lJp0R+iOKBQyFK|M}c>GteEW_4*@Nzr*4spdfu>OM%X!+hmL`NWB8W$_Azee4X zWsQ{~fb=#4a%p>XBBFWnG5?H@N5Gt=y|k=;IwL;L$wWkR&<+cqptk&M@SBT`GGlNl zr<2OW$2IOkf7$3^k%QNI(!b)gt)aGtzbZ==%ULn)>e!>~BAD;xUTO`B1?hbWW(b)l zix6NX0JXgnXdGyU5c%D0PQbFQfS}sznq~5yC6vQ>F1|XUl-w=kp9Y&R?_T80gLuC)LZ@cN%jxdn?_A&OUoHMA*7n@&QIucAP%XZIoec zPIx1RH?`Q~4Y8x55tE%OFw+4foS}`iMO3PTf2)+^K}BwZ7)hz ze`?h)6mpzS&C#05TG=DM#4ZWIMGt( zz0&cv_=ButEwDD9URRKM*?L-U0kjTF@x8xtU>1%-w|8>*D8Zf#%G8l*5GN^W3>XM^ zHR2aBSIK8=Sk%i7fU9UdAvu);mUouMJ>4cjyIBX=?r-wJaZ3IjW~?R69sd> z_o}Trw@7Pr>aCV=F61Gi(^PwNC{K_iqP44E&;tJz!*{uX&7t*D9;bwT;)NETCt<3@ z(SLbsf-9DzX3>>|gO4%GM@*fI9AQ7*yCi#D+JHQm*+!YS;cI@=`3;sW?u29ZSNBr{ zqY9@B9tSL#!gXb5SX?(F3A{0D=E|ez=){lsLwuglZvrNd+fpJ*a$_5lzz$QlN{{ew zDbF=|^y{}xqnu-d(#Zo+Squglh))0H=Y zfTpAO;%@(vkZ&LaQ5&XZ<|B&s5%$u4M68TnA#5B9aPPJrP9stjw&gWBkg{c*usG~O zz?`vrcM_@*apmOENA%1xZQ#rfA=MY37^5gW+<{Re=R4O4ny!pfUd@}7g97~ZJ%3lf z=^C9H$dta#{cu=ZX*4InAPZtkV{Xy09Bn3I`-&*-mkoE=ArYV`sXp>$GJ{4Zy?46R zcd`teqBFKRhOUvYEZaIQ15Jc!(Z<$mLm4ECM{5xpr8zErK=?>AQPQ2qn}r{X@~auW zPPpla@Z_v@V306Rl1&@3>nseA_kWf6Z>pDkI>%y-sKP#hac~F9KW=_VxHcfl0Q1Iu z+^hVG01X_xkWznrP*_(M@~qTPP2H1!iiYC5`>*9{C||_Z?f^YVgfqc!(-8(W11wMHx(7#2KfXN1TTpI9+_^Q zVc41R_J&JYwI;E&Fzz+^t7Mv|XNKY=mM+lekM|S8)?fF6+(OV-=s%2Kpj*R|MocJ^ zhdqjJ8js|3Ph8!7_vnR#Hqy%V$(yU zHqm|FCBOx7IsAo=+<$d(d^Ui;SEOR8bT*w4Ch1`k-6%Jxz;6$aI&^T152AH z>WXvsOhUT1*cCMRsc7IB63N{ONS-!wXsZ9is`irgW$X`=KE>pmaHI@Evo&<>zvRU! z&xjyi1mgYRgOJzFrToYg=0aq)pU+N9`Rln<&_SR_C;|j>H-FT|TkrDJ_E6*|{cR-r zl-hy!>v1E>GyJT)ItK`!2FJ;En>ytiBi-|8t-(Z<{cmz>!^XC-Ge+yyPGk;@4``dZ z7!z=jquF-Eh1Pd{Q3kxT&g=flCA(z?R`DxedYgTB>X^D&=+k0yofl0nEq33=3Pg{{ z74(M?CswP*_kZ$5nx>Vg(;zo3NE`iDNiWTWQd?#DG2UmxNURt;?*Gk^4%LWR3qvHv z7X&97aY4v0W(R^4x)yW&~J>?d6l|9U44E5+V62=mGUg)JMlq55U3* zw2Cp1RF!zAS%7D)SreK7=~E`# zTTz6BPybZrZj<#sjsY~4x{$IN!5gV2mMhha6F-S(*3Y7f4!STtmX37&j9~TUMRUt<0YA0oqDkL@QruMi%O-f#&XI@Ug12tNZ0c+g53C6<~kH<<&w(03@1*&iX?J_>YPZ`V+$pSa_;t~<=`APK14ew zM)wpXViwawfVhU-CZLuG$VWMIv6;D^<>RU4l|To4_z55 zgElee(7e#~d!mp1tk0dLtkUnwFhyAZ3+6pDV4!P6qOOIQyYi2wurdc{^<;oo*h+Ol2lA9S{l%HL`GF+xw7-6x+l97l`3@_!dLfa55(zW1|jMqTBr+d&V-DpW?v zDmeeEW0|3Gz!KD0e*i+N0PryJRwC3fMZ^5oDKN4HXe-UxJuf+YKRh5sgI@n?ihl*g z{Tdq`%#>KUyfLm`N5oydErUyF=jWut<5EqVsR_{qb`-z}5_EiFzhT~-bAkQ8*JK_c z-<#4E_OEt)*}=J2`hs%!|_9U5A=MGJp2m;wW6B$6qSP{rmO&;l~Sp?z8X3fYuu%Y@F;| zkjiz8A<)tMuqm_nxeCqpLOh<~_xkt1JC(qUUhjAVbE&2^4h$i_?JdW&vIa2XNyFr| zBhm$pHh(j`b8o%k zO*yZ`V)KZG-Ku1@@*MD^{+1)5h*D{i2&zLWM~U%H%^t3S)6WT|WL04g@xwv`H8)(mhpi zkJyohZG=MrnSt`Aqftn|MHaUoKX90lTsne64BCZ{vs2@~`*S|W>wkH{4Rh%Ft&UHD zya3F8_Bu=E*_C~k7=w$}+{p4E>p^cWH@C8wNS-+Q}aD@}>y!|zK)IT0`8 z9e$r$=-2QO+Wy47b0p@{femBeU*0`erjUcxiF)T^->swu(SJVRxw%BfxH`%F=60D2 z+3cdQX|-0=gEGO5Dysw=-iq>_CoY0f9ntd`{;6Es*fUS&$fLJ zM0)BT&cL;b={Qcp{^d-!zH|@CGE-F3y35so_xC>l)f<1*+AOSCouR9B+W%(;3CDXU z`kL$p3+&s-Im#{e`ch27%Dc@xPc`j6frz|*u2Yun34gvF|R29M1SJ0)+|xu9?9}^!=bGcge$=omJw6j!Zun2@|n-euC;P zVZcHCqlY&;;wF^;yZR~z6_AFZM2Eku>Z09GktwOB8l4fNtW$pgtP!q+U}FN-qc;EG zuz5EwjemxstgLMe00CM}u>=D2?3)2&0RuK0{_^cDB8b@#hLff?7PTJ64m>VGEcQcS zxvGANii{-vc%i>&Smn%%9Y(*gwztP7Ya;zAMwpc~J{7C`O*1gwSb;iOB|;#dsk~TF z$)N8eM3Z9SHMh34LH)409Ft7Mse~%I%?Lx3;eRxV9s+$CMm`M{KU!ZK5P~Q;?7pc7 ze;8{=PvWWZuWun}0QfQ3%!^JSC#a&nD4z;0zZH?`pAd_EqKY=YM=*W0ix{hulw|T& z$~37=aWsyrnF?_o zIDb>no*FXRy3BNISI?f@W7$a@j&J$z@+a@NS{#}Foy9+S|re6SV%6HzxBu92IfvStm&T4`CF z5DE_ib;f9jQareb#x&0rKif+?AvZkJczbgq8^w#c>=Nw%6Glaus*ahNt3;w2q0n4- z(iQR%m;aAjr6}0dxWotP(<-u+yd?wW(Dn;IPw%4fI?kO3g|uKf#`si^mmwGI!Ka8K w#<~fLzxoL2D&a{00LaO*TL1xv+$ZDlg8={l0Hg_i9h>7(Kmz~(00045S|!`_g#Z8m diff --git a/data/gwasFineMappingLbfExample.rda b/data/gwasFineMappingLbfExample.rda index 750835e957738caf28aa2c80f91b70e187bc8727..8a4c9d6148f23547e236f4805f0c6dca96928b90 100644 GIT binary patch delta 28184 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 PFb#_W00sa600CKA;(iQ` delta 28252 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 diff --git a/data/mvsusieFineMappingExample.rda b/data/mvsusieFineMappingExample.rda index 80aee8adbde396b135cffce2ecc252f75f715432..690f5788ecc56295a5743c84f8b70ac6dfd8bafa 100644 GIT binary patch delta 103047 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 X2eSMgxSOu$J}?c70ssI200CKAdv=!5 delta 103132 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

1q_aMe;CJ|P204AZ*NQG)1 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

t9SCbMXMM<`;6JZTAyRX~Cz+#U94p}g=Ke)O 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 AssI20 delta 113952 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 I00045S|bt8>Hq)$ diff --git a/data/qtlFineMappingLbfExample.rda b/data/qtlFineMappingLbfExample.rda index e58fbf47fcb7ae4c17a940100e41bda4f5491223..691329a6b9e41923cdb6f3503e57665bcc9a8893 100644 GIT binary patch delta 52554 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 H00CKA36buu delta 52639 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

A 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 diff --git a/data/qtlFineMappingPairedExample.rda b/data/qtlFineMappingPairedExample.rda index 2c572b00206fa340d01fdb25f8e98455f2967627..d7863f37a4f82541f44ac46cabf5f20497aa2210 100644 GIT binary patch delta 10599 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�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 a0lk+2p#235ew(&FFb#_W000000a;qo_rJyf diff --git a/man/FineMappingResultBase-class.Rd b/man/FineMappingResultBase-class.Rd index 9ebb68c8..650e495a 100644 --- a/man/FineMappingResultBase-class.Rd +++ b/man/FineMappingResultBase-class.Rd @@ -25,12 +25,15 @@ pipeline combines share an LD reference.} }} \section{Narrowed rows}{ - Each row records in its \code{fitVariants} column - the ids of the variants its fit was made with (none for a row without a - fit). A row narrowed since -- by \code{endoapply()} or \code{[[<-} -- - keeps its fit as it was, so every reader of the fit warns, with - condition class \code{pecotmrFitCoverage}, when a row holds fewer - variants than its fit describes. The readers are the accessors + A row is built from its fit, holding the fit's + variables in the fit's order, so its fit is read off it by position. A + row narrowed since -- by \code{endoapply()} or \code{[[<-} -- keeps its + fit as it was, and is found in the fit by the names the fit gives its + variables (a narrowed row whose fit names none, such as a trimmed fit, + cannot be read). Every reader of the fit warns, with condition class + \code{pecotmrFitCoverage}, when a row holds fewer variants than its fit + describes. A row replaced by one of the same length is read by + position. The readers are the accessors (\code{susieFit()}, \code{lbf()}, \code{cvResult()}, \code{credibleSetSummary()} and the fSuSiE views), \code{computeCsCorrelation()}, \code{susieResult()}, diff --git a/man/FineMappingRow-class.Rd b/man/FineMappingRow-class.Rd index c5bf877e..43a987d7 100644 --- a/man/FineMappingRow-class.Rd +++ b/man/FineMappingRow-class.Rd @@ -20,10 +20,11 @@ columns are the per-variant \code{topLoci} values.} \item{\code{cvResult}}{Cross-validation payload, or \code{NULL}.} -\item{\code{fitVariants}}{The ids of the variants the stored fit was made with, in -the fit's own order, recorded when the row is built; empty for a row with -no fit. A row narrowed to fewer variants keeps them, which is how reading -the fit can tell it describes more variants than the row now holds.} +\item{\code{derivedColumns}}{The credible-set columns (\code{cs_} and +their \code{_purity} partners) the row does not store because its fit +reproduces them exactly, followed by \code{"method="}, the method +tag of their labels; every view derives them back. Empty when it stores +all it was given.} }} \section{Coercion}{ diff --git a/man/H2Estimate-class.Rd b/man/H2Estimate-class.Rd index ab2dc58c..d9d91f97 100644 --- a/man/H2Estimate-class.Rd +++ b/man/H2Estimate-class.Rd @@ -29,8 +29,8 @@ heritability estimates NULL if unstratified. Two shapes are possible, depending on which route produced the estimate: \describe{ - \item{partitioned}{tau-based enrichment of the baseline annotations - (\code{computeBaselineEnrichment}, \code{.gldscEnrichmentDf}), with + \item{partitioned}{enrichment of the user's baseline annotations + from their partitioned heritabilities \eqn{A'A\tau}, with columns \code{annotation}, \code{tau}, \code{tauSe}, \code{enrichment}, \code{enrichmentSe}, \code{enrichmentP}, \code{propH2}, \code{propSnps}.} diff --git a/man/QtlEnrichmentParam.Rd b/man/QtlEnrichmentParam.Rd index ee7a1e5b..1240ede1 100644 --- a/man/QtlEnrichmentParam.Rd +++ b/man/QtlEnrichmentParam.Rd @@ -16,12 +16,15 @@ QtlEnrichmentParam( ) } \arguments{ -\item{numGwas}{Number of GWAS variants used to estimate \code{piGwas}. -\code{NULL} (default) estimates it from the data, which is biased unless -the outcome PIP vector really is genome-wide.} +\item{numGwas}{The total number of variants the GWAS tested (fastenloc's +\code{-total_variants}), over which \code{piGwas} and \code{piQtl} are +estimated. \code{NULL} (default) uses the number of distinct variants in +the outcome PIP vector and the annotation fits, with a warning; that is +biased unless the outcome PIP vector really is genome-wide.} \item{piQtl}{Per-variant prior of being a causal QTL variant. \code{NULL} -(default) estimates it from the data.} +(default) estimates it as fastenloc does: the annotation fits' summed +PIPs over the variant total (see \code{numGwas}).} \item{lambda}{Shrinkage parameter, shrinking the enrichment estimate towards zero as in ridge regression. \code{0} applies no shrinkage. diff --git a/man/QtlFineMappingResult-class.Rd b/man/QtlFineMappingResult-class.Rd index 55b19291..2dbf5c3e 100644 --- a/man/QtlFineMappingResult-class.Rd +++ b/man/QtlFineMappingResult-class.Rd @@ -13,9 +13,8 @@ S4 collection of fine-mapping fits for one or more QTL Required \code{mcols()} columns: the identity tuple \code{study}, \code{context}, \code{trait} and \code{method}, which is unique, and each row's stored fit \code{susieFit} and cross-validation result -\code{cvResult}. The constructor also records \code{fitVariants}, the -variants each fit was made with. There is no LD-block axis: a trait's fit -is one row wherever its window falls. +\code{cvResult}. There is no LD-block axis: a trait's fit is one row +wherever its window falls. Optional columns \code{jointStudies}, \code{jointContexts}, \code{jointTraits} appear when the collection contains rows produced by a diff --git a/man/computeBaselineEnrichment.Rd b/man/computeBaselineEnrichment.Rd deleted file mode 100644 index 6b880b5a..00000000 --- a/man/computeBaselineEnrichment.Rd +++ /dev/null @@ -1,39 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/h2EstimationWrappers.R -\name{computeBaselineEnrichment} -\alias{computeBaselineEnrichment} -\title{Compute Baseline Annotation Enrichment Quantities} -\usage{ -computeBaselineEnrichment( - tau, - tauSe, - annotationJackknifeCoefs, - baselineMat, - annotNames, - h2 -) -} -\arguments{ -\item{tau}{Numeric vector of per-annotation regression coefficients.} - -\item{tauSe}{Numeric vector of SE for tau.} - -\item{annotationJackknifeCoefs}{Numeric matrix (nBlocks x nAnnotations) of -jackknife block-level tau values, or NULL.} - -\item{baselineMat}{Numeric matrix (nSnps x nAnnotations).} - -\item{annotNames}{Character vector of annotation names.} - -\item{h2}{Numeric scalar, total estimated h2.} -} -\value{ -A tibble with columns: annotation, tau, tauSe, enrichment, - enrichmentSe, enrichmentP, propH2, propSnps. -} -\description{ -Given tau coefficients and a baseline annotation matrix, compute - the full set of enrichment quantities: propH2, propSnps, enrichment ratio, - enrichment SE (from jackknife or delta method), and p-value. -} -\keyword{internal} diff --git a/man/fineMappingAnnotations.Rd b/man/fineMappingAnnotations.Rd new file mode 100644 index 00000000..49e47491 --- /dev/null +++ b/man/fineMappingAnnotations.Rd @@ -0,0 +1,96 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/h2Annotations.R +\name{fineMappingAnnotations} +\alias{fineMappingAnnotations} +\title{Annotations From Fine-Mapping Results} +\usage{ +fineMappingAnnotations( + x, + ldRef, + types = c("maxCpp", "sumPip", "credibleSet", "highPip"), + coverage = 0.95, + minPurity = NULL, + pipThreshold = 0.5, + tier = "candidate" +) +} +\arguments{ +\item{x}{A \code{\link{QtlFineMappingResult}} or +\code{\link{GwasFineMappingResult}}.} + +\item{ldRef}{The \code{\linkS4class{LdStatistic}} the annotations will be +used with.} + +\item{types}{Which annotation types to build; see above. Default all four.} + +\item{coverage}{Credible-set coverage for \code{"credibleSet"}. Default +\code{0.95}.} + +\item{minPurity}{Minimum credible-set purity for \code{"credibleSet"}; +\code{NULL} (default) applies none.} + +\item{pipThreshold}{PIP cutoff for \code{"highPip"}. Default \code{0.5}.} + +\item{tier}{The tier the columns take: \code{"candidate"} (default), so +\code{estimateH2} score-tests each for enrichment over the baseline, or +\code{"baseline"}, to fit them jointly with it.} +} +\value{ +An \code{\linkS4class{AnnotationMatrix}} with one row per variant of + \code{ldRef}. Columns are named + \code{"|||"}, omitting an axis \code{x} + does not have. +} +\description{ +Turn fine-mapping results -- typically molecular QTLs -- into + per-variant annotations over an LD reference's variants, for + \code{\link{estimateH2}} to test for heritability enrichment. Each + (\code{study}, \code{context}, \code{method}) unit of \code{x} pools its + traits (e.g. genes) into one column per requested type: + \describe{ + \item{\code{"maxCpp"}}{A variant's largest PIP over the unit's traits + (continuous; Hormozdiari et al. 2018).} + \item{\code{"sumPip"}}{The sum of its PIPs over the traits: the + expected number of the unit's causal effects it carries + (continuous).} + \item{\code{"credibleSet"}}{1 when it sits in a credible set of any + trait at \code{coverage} (and \code{minPurity}), else 0.} + \item{\code{"highPip"}}{1 when its largest PIP is at least + \code{pipThreshold}, else 0.} + } + + Variants are matched to the reference allele-aware (id format, ref/alt + swap, strand) by their coordinates and alleles, so a reference naming + its variants by rsID matches too; a fine-mapped variant the reference + lacks contributes nothing, and a reference variant no trait fine-mapped + takes 0. A column that comes out all zero -- a unit none of whose + variants are in the reference, or none of whose PIPs reach + \code{pipThreshold} -- is dropped, with a warning. + + The rows follow the reference's variants in its order, as + \code{estimateH2} requires. +} +\examples{ +data(qtlFineMappingExample) +fm <- topLoci(qtlFineMappingExample, signalCutoff = 0) +ref <- LdScore( + ldBlocks = GenomicRanges::GRanges( + "chr22", + IRanges::IRanges(min(GenomicRanges::start(fm)), + max(GenomicRanges::start(fm))) + ), + snpInfo = data.frame( + SNP = S4Vectors::mcols(fm)$variant_id, + CHR = "chr22", + BP = GenomicRanges::start(fm), + A1 = S4Vectors::mcols(fm)$A1, + A2 = S4Vectors::mcols(fm)$A2 + ), + nSamples = 1000L, + inSample = FALSE, + ldScores = matrix(1, length(fm), 1, dimnames = list(NULL, "base_l2")), + ldScoreWeights = rep(1, length(fm)) +) +annot <- fineMappingAnnotations(qtlFineMappingExample, ref, pipThreshold = 0.1) +colnames(annot) +} diff --git a/man/qtlEnrichment.Rd b/man/qtlEnrichment.Rd index a9c9b1bd..7465fb56 100644 --- a/man/qtlEnrichment.Rd +++ b/man/qtlEnrichment.Rd @@ -21,19 +21,23 @@ qtlEnrichment( ) } \arguments{ -\item{gwasPip}{This is a vector of GWAS PIP, genome-wide.} +\item{gwasPip}{A named vector of GWAS PIPs, one per variant, ideally +genome-wide.} -\item{susieQtlRegions}{This is a list of SuSiE fitted objects per QTL unit -analyzed} +\item{susieQtlRegions}{A named list of SuSiE fits, one per QTL unit +analyzed (e.g. a gene), each with \code{alpha}, a named \code{pip} and +\code{prior_variance}.} -\item{numGwas}{This parameter is highly important if GWAS input does not -contain all SNPs interrogated (e.g., in some cases, only fine-mapped geomic -regions are included). Then users must pick a value of total_variants and -estimate piGwas beforehand by: sum(gwasPip$pip)/numGwas. If numGwas is -null, piGwas would be sum(gwasPip$pip)/total_variants.} +\item{numGwas}{The total number of variants the GWAS tested (fastenloc's +\code{-total_variants}). It matters whenever \code{gwasPip} does not +carry every variant tested, e.g. when it covers only fine-mapped blocks. +\code{NULL} (default) uses the number of distinct variants in +\code{gwasPip} and the QTL fits, with a warning; a value below that number +is raised to it.} -\item{piQtl}{This parameter can be safely left to default if your input QTL -data has enough regions to estimate it.} +\item{piQtl}{Per-variant prior of being a causal QTL variant. \code{NULL} +(default) estimates it as fastenloc does, from the fits' summed PIPs over +the variant total.} \item{lambda}{Similar to the shrinkage parameter used in ridge regression. It takes any non-negative value and shrinks the enrichment estimate towards 0. @@ -55,12 +59,13 @@ thread. Default \code{SerialParam()}.} \item{verbose}{Logical. Print progress messages. Default \code{TRUE}.} -\item{alignNames}{Logical; when TRUE (default) QTL pip names are aligned to -the GWAS variant-naming convention via \code{matchVariants}. Set FALSE when -the caller has already aligned them (e.g. \code{qtlEnrichmentPipeline} -aligns each QTL tuple once against the union GWAS panel rather than -re-aligning per GWAS study); only the cheap per-study unmatched set is then -recomputed, skipping the costly \code{harmonizeAlleles} pass.} +\item{alignNames}{Logical; when TRUE (default) a QTL pip name not spelled +as any \code{gwasPip} name is matched, allele-aware (id format, ref/alt +swap, strand), to the GWAS variants at its position, and takes the name +of the one it matches. Set FALSE when the caller has already aligned them +(e.g. \code{qtlEnrichmentPipeline} aligns each QTL tuple once against +the union GWAS panel rather than re-aligning per GWAS study); the names +are then matched to \code{gwasPip} exactly as given.} \item{seed}{Integer or \code{NULL}. Base random seed for the multiple- imputation sampler; each imputation round derives its own seed from it, so @@ -73,10 +78,17 @@ A named list of enrichment parameter estimates, carrying the \code{sd (intercept)}, \code{Enrichment (no shrinkage)}, \code{Enrichment (w/ shrinkage)}, \code{sd (no shrinkage)}, \code{sd (w/ shrinkage)}, \code{Alternative (coloc) p1} / \code{p2} / - \code{p12} and \code{Effective MI rounds} -- plus - \code{unused_xqtl_variants}, the QTL variants of each region that no GWAS - variant matched. The names are the original fastenloc's; - \code{\link{qtlEnrichmentPipeline}} is what renames them to a tidy table. + \code{p12} and \code{Effective MI rounds} -- plus diagnostics: + \code{Missing proportion per MI round}, the share of each round's sampled + QTL variants that \code{gwasPip} does not carry (they enter with GWAS + PIP 0); + \code{EM converged per MI round}; \code{EM iterations per MI round}, + how many EM iterations each round took; \code{Null QTL fits}, the number of + fits with no effect of positive prior variance, which contribute no + sampled variants; and \code{unused_xqtl_variants}, the QTL variants of + each region that no GWAS variant matched. The estimate names are the + original fastenloc's; \code{\link{qtlEnrichmentPipeline}} is what renames + them to a tidy table. } \description{ Largely follows from fastenloc @@ -93,38 +105,50 @@ Largely follows from fastenloc \details{ Uses output of \code{\link[susieR]{susie}} from the \code{susieR} package. + + As in fastenloc, the variants the estimate is taken over are every + variant of \code{gwasPip} plus every QTL variant \code{gwasPip} does not + carry. The latter have GWAS PIP 0, so each one sampled in an imputation + round counts as a QTL variant that is not causal for the GWAS trait. The + variant total is \code{numGwas}, raised to the number of those variants + when smaller; \code{piGwas} is \code{sum(gwasPip)} over it and, unless + supplied, \code{piQtl} is the fits' summed PIPs over it. The intercept is + derived from \code{piGwas}, \code{piQtl} and the unshrunk enrichment, + and the coloc priors from that intercept and the shrunk enrichment, both + as fastenloc does. One difference remains: fastenloc's EM keeps the + previous iteration's intercept at convergence where this one updates it, + which changes only \code{sd (intercept)}. } \examples{ - -# Simulate fake data for gwasPip -nGwasPip <- 1000 -gwasPip <- runif(nGwasPip) -names(gwasPip) <- paste0("snp", 1:nGwasPip) -# Simulate fake data for a single SuSiEFit object -simulateSusiefit <- function(n, p) { - pip <- runif(n) - names(pip) <- paste0("snp", 1:n) - alpha <- t(matrix(runif(n * p), nrow = n)) - alpha <- t(apply(alpha, 1, function(row) row / sum(row))) +set.seed(1) +# GWAS PIPs for 2000 variants of a GWAS that tested one million: mostly +# near zero, with two strong signals. +ids <- sprintf("chr1:\%d:A:G", 1000 * seq_len(2000)) +gwasPip <- stats::setNames(stats::rbeta(2000, 0.05, 100), ids) +gwasPip[c(300, 1200)] <- c(0.95, 0.6) +# A SuSiE-like fit per gene: two single effects over the gene's variants, +# each concentrated on a few of them. +simulateFit <- function(idx, hits) { + alpha <- matrix(1e-4, length(hits), length(idx)) + alpha[cbind(seq_along(hits), hits)] <- 1 + alpha <- alpha / rowSums(alpha) list( - pip = pip, alpha = alpha, - prior_variance = runif(p) + pip = stats::setNames(1 - apply(1 - alpha, 2, prod), ids[idx]), + prior_variance = c(0.4, 0.1) ) } -# Simulate multiple SuSiEFit objects -nSusieFits <- 2 -susieFits <- replicate( - nSusieFits, simulateSusiefit(nGwasPip, 10), simplify = FALSE) -# Add these fits to a list, providing names to each element -names(susieFits) <- paste0("fit", seq_along(susieFits)) -# Set other parameters -impN <- 10 -lambda <- 1 -library(pecotmr) +susieFits <- list( + gene1 = simulateFit(251:350, c(50, 10)), + gene2 = simulateFit(1151:1250, c(50, 80)), + gene3 = simulateFit(1601:1700, c(20, 70)) +) en <- qtlEnrichment( - gwasPip, susieFits, lambda = lambda, impN = impN, - BPPARAM = BiocParallel::SerialParam()) + gwasPip, susieFits, + numGwas = 1e6, impN = 10, seed = 1, + BPPARAM = BiocParallel::SerialParam(), verbose = FALSE +) +en[["Enrichment (w/ shrinkage)"]] } \seealso{ diff --git a/man/qtlEnrichmentPipeline.Rd b/man/qtlEnrichmentPipeline.Rd index 15cc4ca5..e281bd35 100644 --- a/man/qtlEnrichmentPipeline.Rd +++ b/man/qtlEnrichmentPipeline.Rd @@ -10,7 +10,8 @@ qtlEnrichmentPipeline( qtlEnrichmentParam = QtlEnrichmentParam(), BPPARAM = SerialParam(), seed = NULL, - verbose = TRUE + verbose = TRUE, + duplicatePips = c("max", "error", "blockEnd") ) } \arguments{ @@ -29,10 +30,21 @@ checked.} its workers. Default \code{SerialParam()}.} \item{seed}{Integer or \code{NULL}. Base random seed forwarded to -\code{\link{qtlEnrichment}} for reproducible multiple imputation. -\code{NULL} (default) draws a nondeterministic seed.} +\code{\link{qtlEnrichment}} for reproducible multiple imputation; every +(outcome, annotation) pair is run with this same seed. \code{NULL} +(default) draws a nondeterministic seed per pair.} \item{verbose}{Logical. Print progress messages. Default \code{TRUE}.} + +\item{duplicatePips}{How to resolve a variant to which the outcome's LD +blocks give different PIPs, as adjacent blocks sharing a boundary variant +do when each block's fit gives it its own. Copies that agree are always +merged. \code{"max"} (default) keeps the largest PIP. \code{"blockEnd"} +keeps the copy from the block whose window was given (see +\code{\link{genomicRegion}}) and ends at the variant --- the upstream of +two blocks sharing it --- and errors when no single block qualifies. +\code{"error"} refuses. fastenloc does none of these: it keeps the last +copy's PIP but counts every copy towards the GWAS prior.} } \value{ A tibble with one row per (outcome fit, annotation unit) pair. diff --git a/man/trimFineMappingResult.Rd b/man/trimFineMappingResult.Rd new file mode 100644 index 00000000..ae255bd7 --- /dev/null +++ b/man/trimFineMappingResult.Rd @@ -0,0 +1,58 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/AllClasses.R +\name{trimFineMappingResult} +\alias{trimFineMappingResult} +\title{Trim A Fine-Mapping Collection To What Its Role Reads} +\usage{ +trimFineMappingResult(x, role = NULL) +} +\arguments{ +\item{x}{A \code{\link{GwasFineMappingResult}} or +\code{\link{QtlFineMappingResult}}.} + +\item{role}{\code{"outcome"} or \code{"annotation"}. \code{NULL} (default) +picks by class: \code{"outcome"} for a \code{GwasFineMappingResult}, +\code{"annotation"} for a \code{QtlFineMappingResult}.} +} +\value{ +\code{x}, trimmed. +} +\description{ +Keep, of each row's fit, only what a fine-mapping collection + is read for in its \code{role}, so a genome-wide collection fits in + memory. Nothing is sampled or summarized ahead of time: a trimmed + collection gives the same enrichment estimates as the untrimmed one, and + can still be resampled. + + \describe{ + \item{\code{"outcome"}}{The side whose PIPs are scanned, as in + \code{\link{qtlEnrichmentPipeline}}'s \code{gwasFineMappingResult}: + each fit keeps its \code{pip} and its credible sets (\code{sets}, + \code{sets_secondary}).} + \item{\code{"annotation"}}{The side whose single effects are sampled, + as in \code{qtlFineMappingResult}: each fit also keeps \code{alpha} + and the prior variances \code{V} of its effects of positive prior + variance -- the only ones the enrichment samples -- with rows and + entries named by effect id (\code{"L"}). A fit with no such + effect keeps a zero-row \code{alpha}.} + } + + Each row's per-variant columns are cut to the identity columns, the + PIPs and the credible-set columns, and those two are stored only where + the trimmed fit cannot give them back. The posterior summaries, marginal + statistics and per-fit metadata columns go, so \code{\link{topLoci}} of a + trimmed collection reports PIPs and credible sets only. The + cross-validation results go as well, so a trimmed collection cannot feed + \code{\link{twasWeightsPipeline}}. Identity columns, names, the genome + build, LD references and \code{metadata()} are kept. Trimming a trimmed + collection changes nothing. +} +\examples{ +data(qtlFineMappingExample) +trimmed <- trimFineMappingResult(qtlFineMappingExample) +names(susieFit(trimmed)) +c( + before = utils::object.size(qtlFineMappingExample), + after = utils::object.size(trimmed) +) +} diff --git a/man/updateObject-methods.Rd b/man/updateObject-methods.Rd index d6c29fb8..ecda74c6 100644 --- a/man/updateObject-methods.Rd +++ b/man/updateObject-methods.Rd @@ -83,9 +83,11 @@ Bring an object saved by an earlier version of pecotmr up to both in one \code{qcInfo} record have it split between the two. Their genome build is in \code{seqinfo()}; ones saved with it in a \code{genome} slot have it moved there. - \item Fine-mapping results and TWAS weights record the variants each - row was fitted on in a \code{fitVariants} column; ones saved without - it have it filled in from their fits. + \item TWAS weights record the variants each row was fitted on in a + \code{fitVariants} column; ones saved without it have it filled in + from their fits. Fine-mapping results no longer record them (a row's + variants are its fit's variables); ones saved with the column have + it dropped. \item A \code{CtwasResult} holds one element per region; one saved as a table of whole runs is rebuilt. \item A \code{QtlDataset} no longer stores run settings (genotype diff --git a/src/cpp11.cpp b/src/cpp11.cpp index e2144631..0a1cccba 100644 --- a/src/cpp11.cpp +++ b/src/cpp11.cpp @@ -69,10 +69,10 @@ extern "C" SEXP _pecotmr_prsCsFactorCpp(SEXP a, SEXP b, SEXP phi, SEXP bhat, SEX END_CPP11 } // qtl_enrichment.cpp -cpp11::writable::list qtlEnrichmentCpp(SEXP rGwasPip, SEXP rQtlSusieFit, double piGwas, double piQtl, int ImpN, double shrinkageLambda, bool doubleShrinkage, bool besselCorrection, int numThreads, cpp11::sexp seed); -extern "C" SEXP _pecotmr_qtlEnrichmentCpp(SEXP rGwasPip, SEXP rQtlSusieFit, SEXP piGwas, SEXP piQtl, SEXP ImpN, SEXP shrinkageLambda, SEXP doubleShrinkage, SEXP besselCorrection, SEXP numThreads, SEXP seed) { +cpp11::writable::list qtlEnrichmentCpp(SEXP rGwasPip, SEXP rQtlSusieFit, double piGwas, double piQtl, double totalVariants, int ImpN, double shrinkageLambda, bool doubleShrinkage, bool besselCorrection, int numThreads, cpp11::sexp seed); +extern "C" SEXP _pecotmr_qtlEnrichmentCpp(SEXP rGwasPip, SEXP rQtlSusieFit, SEXP piGwas, SEXP piQtl, SEXP totalVariants, SEXP ImpN, SEXP shrinkageLambda, SEXP doubleShrinkage, SEXP besselCorrection, SEXP numThreads, SEXP seed) { BEGIN_CPP11 - return cpp11::as_sexp(qtlEnrichmentCpp(cpp11::as_cpp>(rGwasPip), cpp11::as_cpp>(rQtlSusieFit), cpp11::as_cpp>(piGwas), cpp11::as_cpp>(piQtl), cpp11::as_cpp>(ImpN), cpp11::as_cpp>(shrinkageLambda), cpp11::as_cpp>(doubleShrinkage), cpp11::as_cpp>(besselCorrection), cpp11::as_cpp>(numThreads), cpp11::as_cpp>(seed))); + return cpp11::as_sexp(qtlEnrichmentCpp(cpp11::as_cpp>(rGwasPip), cpp11::as_cpp>(rQtlSusieFit), cpp11::as_cpp>(piGwas), cpp11::as_cpp>(piQtl), cpp11::as_cpp>(totalVariants), cpp11::as_cpp>(ImpN), cpp11::as_cpp>(shrinkageLambda), cpp11::as_cpp>(doubleShrinkage), cpp11::as_cpp>(besselCorrection), cpp11::as_cpp>(numThreads), cpp11::as_cpp>(seed))); END_CPP11 } // sdpr.cpp @@ -108,7 +108,7 @@ static const R_CallMethodDef CallEntries[] = { {"_pecotmr_penalizedRssFactorCpp", (DL_FUNC) &_pecotmr_penalizedRssFactorCpp, 12}, {"_pecotmr_prsCsCpp", (DL_FUNC) &_pecotmr_prsCsCpp, 12}, {"_pecotmr_prsCsFactorCpp", (DL_FUNC) &_pecotmr_prsCsFactorCpp, 12}, - {"_pecotmr_qtlEnrichmentCpp", (DL_FUNC) &_pecotmr_qtlEnrichmentCpp, 10}, + {"_pecotmr_qtlEnrichmentCpp", (DL_FUNC) &_pecotmr_qtlEnrichmentCpp, 11}, {"_pecotmr_sdprCpp", (DL_FUNC) &_pecotmr_sdprCpp, 17}, {"_pecotmr_sdprFactorCpp", (DL_FUNC) &_pecotmr_sdprFactorCpp, 17}, {"_pecotmr_vcfGtDosageCpp", (DL_FUNC) &_pecotmr_vcfGtDosageCpp, 2}, diff --git a/src/qtl_enrichment.cpp b/src/qtl_enrichment.cpp index 6fad0cce..303d89eb 100644 --- a/src/qtl_enrichment.cpp +++ b/src/qtl_enrichment.cpp @@ -1,32 +1,34 @@ #include "qtl_enrichment.h" +// `rGwasPip` holds the GWAS PIP values; `rQtlSusieFit` is a list of fits, each +// with `alpha`, `prior_variance` and integer `codes` that index its variables +// into `rGwasPip` (negative for variants it does not carry). `totalVariants` +// is the variant count the EM remainder is taken over. [[cpp11::register]] cpp11::writable::list qtlEnrichmentCpp( SEXP rGwasPip, SEXP rQtlSusieFit, - double piGwas = 0, double piQtl = 0, + double piGwas, double piQtl, double totalVariants, int ImpN = 25, double shrinkageLambda = 1.0, bool doubleShrinkage = false, bool besselCorrection = true, int numThreads = 1, cpp11::sexp seed = R_NilValue) { - // Convert rGwasPip to C++ type - doubles gwas_pip_vec(rGwasPip); - std::vector gwas_pip = cpp11::as_cpp>(gwas_pip_vec); - cpp11::strings pip_names(gwas_pip_vec.attr("names")); - std::vector gwas_pip_names; - gwas_pip_names.reserve(pip_names.size()); - for (int i = 0; i < pip_names.size(); ++i) { - gwas_pip_names.push_back(std::string(pip_names[i])); - } + std::vector gwas_pip = cpp11::as_cpp>(doubles(rGwasPip)); + const int n_gwas = static_cast(gwas_pip.size()); - // Convert rQtlSusieFit to C++ type + // Convert rQtlSusieFit to C++ type, refusing a code that points past the + // GWAS vector, since a sampled variant's code indexes it directly. list susie_fit_list(rQtlSusieFit); std::vector susie_fits; - + susie_fits.reserve(susie_fit_list.size()); for (int i = 0; i < susie_fit_list.size(); ++i) { - SuSiEFit susie_fit(susie_fit_list[i]); - susie_fits.push_back(susie_fit); + susie_fits.emplace_back(susie_fit_list[i]); + for (int code : susie_fits.back().codes) { + if (code >= n_gwas) { + cpp11::stop("A variant code points past the end of the GWAS PIP vector."); + } + } } // Resolve the base seed: use the user-provided value, otherwise a @@ -38,16 +40,31 @@ cpp11::writable::list qtlEnrichmentCpp( base_seed = std::random_device{}(); } - std::map output = qtl_enrichment_workhorse(susie_fits, gwas_pip, gwas_pip_names, piGwas, piQtl, ImpN, shrinkageLambda, doubleShrinkage, besselCorrection, numThreads, base_seed); + EnrichmentOutput output = qtl_enrichment_workhorse(susie_fits, gwas_pip, piGwas, piQtl, totalVariants, ImpN, shrinkageLambda, doubleShrinkage, besselCorrection, numThreads, base_seed); - // Convert std::map to list - using namespace cpp11::literals; + // The estimates (std::map order), then the per-round diagnostics. writable::list output_list; writable::strings names; - for (auto const& element : output) { + for (auto const& element : output.estimates) { output_list.push_back(cpp11::as_sexp(element.second)); names.push_back(element.first); } + writable::doubles missing(ImpN); + writable::logicals converged(ImpN); + writable::integers iterations(ImpN); + for (int k = 0; k < ImpN; ++k) { + missing[k] = output.missing_proportion[k]; + converged[k] = output.em_converged[k] != 0; + iterations[k] = output.em_iterations[k]; + } + output_list.push_back(missing); + names.push_back("Missing proportion per MI round"); + output_list.push_back(converged); + names.push_back("EM converged per MI round"); + output_list.push_back(iterations); + names.push_back("EM iterations per MI round"); + output_list.push_back(cpp11::as_sexp(output.invalid_rounds)); + names.push_back("Invalid MI rounds"); output_list.attr("names") = names; return output_list; diff --git a/src/qtl_enrichment.h b/src/qtl_enrichment.h index 88b4e8cb..3abb9920 100644 --- a/src/qtl_enrichment.h +++ b/src/qtl_enrichment.h @@ -10,53 +10,52 @@ #include #include #include +#include #include +#include using namespace cpp11; using namespace arma; +// One QTL region's fit as the R wrapper hands it over: alpha (effects x +// variables), the effects' prior variances, and each variable's integer code, +// which is the 0-based index of the same variant in the GWAS PIP vector, or a +// negative id for a variant the GWAS vector does not carry. Coding the +// variables in R keeps variant-name strings out of the kernel. Only effects +// with prior variance > 0 are kept; a fit with none of them is a null fit, +// which samples nothing and draws nothing from the random stream. The R +// wrapper validates the fit first; the checks here only guard the kernel. class SuSiEFit { public: -std::vector variable_names; +std::vector codes; mat alpha; -std::vector prior_variance; SuSiEFit(SEXP r_susie_fit) { list susie_fit(r_susie_fit); - doubles pip_vec(susie_fit["pip"]); - // Get names from the pip vector - cpp11::strings pip_names(pip_vec.attr("names")); - variable_names.reserve(pip_names.size()); - for (int i = 0; i < pip_names.size(); ++i) { - variable_names.push_back(std::string(pip_names[i])); - } - alpha = as_Mat(doubles_matrix<>(susie_fit["alpha"])); - prior_variance = cpp11::as_cpp>(susie_fit["prior_variance"]); + std::vector prior_variance = cpp11::as_cpp>(susie_fit["prior_variance"]); + codes = cpp11::as_cpp>(susie_fit["codes"]); if (alpha.n_rows != prior_variance.size()) { cpp11::stop("The number of rows in alpha must match the length of prior_variance."); } - - // Check if all elements in prior_variance are not greater than 0 - if (std::all_of(prior_variance.begin(), prior_variance.end(), [](double x) { - return x <= 0; - })) { - cpp11::stop("At least one element in prior_variance must be greater than 0."); + if (alpha.n_cols != codes.size()) { + cpp11::stop("The number of columns in alpha must match the number of variant codes."); } - // Filter out rows with prior_variance = 0 std::vector valid_rows; for (size_t i = 0; i < prior_variance.size(); ++i) { if (prior_variance[i] > 0) { valid_rows.push_back(i); } } - alpha = alpha.rows(uvec(valid_rows)); - prior_variance.erase(std::remove(prior_variance.begin(), prior_variance.end(), 0), prior_variance.end()); + if (valid_rows.empty()) { + alpha.set_size(0, alpha.n_cols); + } else if (valid_rows.size() < alpha.n_rows) { + alpha = alpha.rows(uvec(valid_rows)); + } - // Add a check to make sure each row of alpha sums to 1 for (uword i = 0; i < alpha.n_rows; ++i) { double row_sum = sum(alpha.row(i)); if (std::abs(row_sum - 1.0) > 1e-6) { @@ -66,18 +65,19 @@ SuSiEFit(SEXP r_susie_fit) { } } -std::vector impute_qtn(std::mt19937 &gen) const { - std::vector qtn_names; +// One sampled variable per kept effect, returned as its code. +std::vector impute_qtn(std::mt19937 &gen) const { + std::vector qtn_codes; for (uword i = 0; i < alpha.n_rows; ++i) { arma::rowvec row_i = alpha.row(i); std::vector alpha_row(row_i.begin(), row_i.end()); std::discrete_distribution<> dist(alpha_row.begin(), alpha_row.end()); int random_index = dist(gen); - qtn_names.push_back(variable_names[random_index]); + qtn_codes.push_back(codes[random_index]); } - return qtn_names; + return qtn_codes; } }; @@ -131,12 +131,68 @@ std::vector filter_outlier_indices( return kept; } -std::vector run_EM( - const std::vector &gwas_pip, - const std::vector & annotation_vector, +// One imputation round's EM estimates. Runs on OpenMP worker threads, so it +// neither prints nor raises; whether it converged, and whether the variant +// total left the (not QTL, not causal) cell positive, are returned instead. +struct EMResult { + double a0; + double a1; + double var0; + double var1; + bool converged; + bool valid; + int iterations; +}; + +// The GWAS variants the EM reads, prepared once for every round: the +// variants of non-zero PIP, each with its prior odds term +// (pip / (1 - pip)) / r_null, computed exactly as the EM loop used to compute +// it; and, for every GWAS variant, its place among them (-1 for a PIP of 0). +// A PIP of 0 has posterior 0 under either prior, so such a variant adds +// exactly one count to its annotation's (not causal) cell whatever the +// priors: the EM adds those counts once per iteration instead of visiting +// each of them. +struct GwasOdds { + std::vector odds; + std::vector place; + double n_zero; +}; + +GwasOdds prepare_gwas_odds(const std::vector &gwas_pip, double pi_gwas) +{ + double r_null = pi_gwas / (1 - pi_gwas); + GwasOdds g; + g.place.assign(gwas_pip.size(), -1); + for (size_t i = 0; i < gwas_pip.size(); i++) { + double val = gwas_pip[i]; + if (val == 0) { + continue; + } + if (val == 1) + val = 1 - 1e-8; + // posterior ratio over the null prior odds: the marginal likelihood + val = val / (1 - val); + g.place[i] = static_cast(g.odds.size()); + g.odds.push_back(val / r_null); + } + g.n_zero = static_cast(gwas_pip.size() - g.odds.size()); + return g; +} + +// `annotated` flags which of the non-zero-PIP variants (GwasOdds::odds) this +// round's QTL sample annotates, and `zero_annotated` how many PIP-0 variants +// it annotates. `qtl_only_sampled` counts this round's distinct sampled QTL +// variants that the GWAS PIP vector does not carry. As in fastenloc, where +// they are part of the SNP universe with GWAS PIP 0, each is a (QTL, not +// causal) variant. +EMResult run_EM( + const GwasOdds & gwas, + const std::vector & annotated, + double zero_annotated, double pi_gwas, double pi_qtl, double total_snp, + double qtl_only_sampled, int max_iter = 1000, double a1_tol = 0.01) { @@ -146,8 +202,9 @@ std::vector run_EM( double var1 = 0; double r0, r1; r0 = r1 = exp(a0); - double r_null = pi_gwas / (1 - pi_gwas); int iter = 0; + const size_t m = gwas.odds.size(); + const double zero_unannotated = gwas.n_zero - zero_annotated; while (true) { iter++; @@ -158,94 +215,99 @@ std::vector run_EM( double e1g0 = pseudo_count * (1 - pi_gwas) * pi_qtl; double e1g1 = pseudo_count * pi_gwas * pi_qtl; - for (size_t i = 0; i < gwas_pip.size(); i++) { - double val = gwas_pip[i]; - if (val == 1) - val = 1 - 1e-8; - // posterior ratio - val = val / (1 - val); - // val/r_null is marginal likelihood/bayes factor - if (annotation_vector[i] == 0) { - val = r0 * (val / r_null); + for (size_t j = 0; j < m; j++) { + if (!annotated[j]) { + double val = r0 * gwas.odds[j]; // updated posterior with current prior given eqtl = 0 val = val / (1 + val); e0g1 += val; e0g0 += 1 - val; - } - - if (annotation_vector[i] == 1) { - val = r1 * (val / r_null); + } else { + double val = r1 * gwas.odds[j]; // updated posterior with current prior given eqtl = 1 val = val / (1 + val); e1g1 += val; e1g0 += 1 - val; } } + // The PIP-0 variants: one (not causal) count each. + e0g0 += zero_unannotated; + e1g0 += zero_annotated; + + // A GWAS PIP of 0 has posterior 0 under either prior, so each sampled + // QTL-only variant adds exactly one (QTL, not causal) count. + e1g0 += qtl_only_sampled; e0g0 += total_snp - (e0g0 + e0g1 + e1g0 + e1g1); + if (!(e0g0 > 0)) { + double nan = std::numeric_limits::quiet_NaN(); + return EMResult{nan, nan, nan, nan, false, false, iter}; + } double a1_new = log(e1g1 * e0g0 / (e1g0 * e0g1)); if (fabs(a1_new - a1) < a1_tol || iter >= max_iter) { + bool converged = fabs(a1_new - a1) < a1_tol; a1 = a1_new; a0 = log(e0g1 / e0g0); var1 = (1.0 / e0g0 + 1.0 / e1g0 + 1.0 / e1g1 + 1.0 / e0g1); var0 = (1.0 / e0g1 + 1.0 / e0g0); - break; + return EMResult{a0, a1, var0, var1, converged, true, iter}; } a1 = a1_new; a0 = log(e0g1 / e0g0); r0 = exp(a0); r1 = exp(a0 + a1); - - if (iter % 100 == 0) { - Rprintf("EM Iteration %d: a0 = %g, a1 = %g\n", iter, a0, a1); - } - } - if (iter == max_iter) { - Rprintf("WARNING: EM algorithm did not converge after %d iterations!\n", iter); } - - std::vector av; - av.push_back(a0); - av.push_back(a1); - av.push_back(var0); - av.push_back(var1); - - return av; } -std::map qtl_enrichment_workhorse( - const std::vector & qtl_susie_fits, - const std::vector & gwas_pip, - const std::vector &gwas_variable_names, - double pi_gwas, - double pi_qtl, - int ImpN, - double shrinkage_lambda, - bool double_shrinkage = false, - bool bessel_correction = true, - int num_threads = 4, - unsigned int base_seed = 0) +// The estimates, plus per-round diagnostics the R wrapper reports: the +// proportion of sampled QTL variants absent from the GWAS PIP vector, whether +// the round's EM converged, and how many rounds the variant total was too +// small for. +struct EnrichmentOutput { + std::map estimates; + std::vector missing_proportion; + std::vector em_converged; + std::vector em_iterations; + int invalid_rounds; +}; + +EnrichmentOutput qtl_enrichment_workhorse( + const std::vector &qtl_susie_fits, + const std::vector & gwas_pip, + double pi_gwas, + double pi_qtl, + double total_snp, + int ImpN, + double shrinkage_lambda, + bool double_shrinkage = false, + bool bessel_correction = true, + int num_threads = 4, + unsigned int base_seed = 0) { std::vector a0_vec(ImpN, 0.0); std::vector v0_vec(ImpN, 0.0); std::vector a1_vec(ImpN, 0.0); std::vector v1_vec(ImpN, 0.0); - - std::map gwas_variant_index; - - for (size_t i = 0; i < gwas_variable_names.size(); ++i) { - gwas_variant_index[gwas_variable_names[i]] = i; + std::vector missing_proportion(ImpN, 0.0); + std::vector em_converged(ImpN, 0); + std::vector em_valid(ImpN, 0); + std::vector em_iterations(ImpN, 0); + const GwasOdds gwas = prepare_gwas_odds(gwas_pip, pi_gwas); + + // QTL-only variants carry the codes -1 .. -n_qtl_only. + int n_qtl_only = 0; + for (const auto &fit : qtl_susie_fits) { + for (int code : fit.codes) { + n_qtl_only = std::max(n_qtl_only, -code); + } } - // pi_gwas = sum(gwas_pip) / total_snp - double total_snp = std::accumulate(gwas_pip.begin(), gwas_pip.end(), 0.0) / pi_gwas; - - Rprintf("Fine-mapped GWAS and QTL data loaded successfully for enrichment analysis!\n"); - + // Each round writes only its own slot of the vectors above, so the loop + // needs no critical section, and nothing in it prints or raises. #pragma omp parallel for num_threads(num_threads) for (int k = 0; k < ImpN; k++) { // Per-round RNG seeded deterministically from the base seed plus the @@ -253,38 +315,58 @@ std::map qtl_enrichment_workhorse( // regardless of which thread runs this round. std::mt19937 gen(base_seed + static_cast(k)); - // Use QTL to annotate GWAS variants - std::vector annotation_vector(gwas_pip.size(), 0); + // Use QTL to annotate GWAS variants; a sampled variant the GWAS vector + // does not carry is counted once, however many fits sampled it. + std::vector annotated(gwas.odds.size(), 0); + std::vector zero_seen; + std::vector qtl_only_seen(n_qtl_only, 0); + int qtl_only_sampled = 0; + int zero_annotated = 0; int missing_qtl_count = 0; int total_qtl_count = 0; for (size_t i = 0; i < qtl_susie_fits.size(); i++) { - std::vector variants = qtl_susie_fits[i].impute_qtn(gen); - for (const auto &variant : variants) { - auto it = gwas_variant_index.find(variant); - if (it != gwas_variant_index.end()) { - annotation_vector[it->second] = 1; + std::vector qtn_codes = qtl_susie_fits[i].impute_qtn(gen); + for (int code : qtn_codes) { + if (code >= 0) { + int at = gwas.place[code]; + if (at >= 0) { + annotated[at] = 1; + } else { + // A PIP-0 variant, counted once however many fits + // sampled it. + if (zero_seen.empty()) { + zero_seen.assign(gwas_pip.size(), 0); + } + if (!zero_seen[code]) { + zero_seen[code] = 1; + ++zero_annotated; + } + } } else { ++missing_qtl_count; + char &seen = qtl_only_seen[-code - 1]; + if (!seen) { + seen = 1; + ++qtl_only_sampled; + } } } - total_qtl_count += variants.size(); - } - double missing_variant_proportion = static_cast(missing_qtl_count) / total_qtl_count; - std::vector rst = run_EM(gwas_pip, annotation_vector, pi_gwas, pi_qtl, total_snp); - - #pragma omp critical - { - a0_vec[k] = rst[0]; - a1_vec[k] = rst[1]; - v0_vec[k] = rst[2]; - v1_vec[k] = rst[3]; - Rprintf("Proportion of xQTL missing from GWAS variants: %g in MI round %d\n", - missing_variant_proportion, k); + total_qtl_count += qtn_codes.size(); } + missing_proportion[k] = total_qtl_count > 0 + ? static_cast(missing_qtl_count) / total_qtl_count + : std::numeric_limits::quiet_NaN(); + EMResult rst = run_EM(gwas, annotated, static_cast(zero_annotated), pi_gwas, pi_qtl, total_snp, static_cast(qtl_only_sampled)); + a0_vec[k] = rst.a0; + a1_vec[k] = rst.a1; + v0_vec[k] = rst.var0; + v1_vec[k] = rst.var1; + em_converged[k] = rst.converged ? 1 : 0; + em_valid[k] = rst.valid ? 1 : 0; + em_iterations[k] = rst.iterations; } - - Rprintf("EM updates completed!\n"); + int invalid_rounds = ImpN - std::accumulate(em_valid.begin(), em_valid.end(), 0); // Apply outlier filtering if shrinkage is specified. // Use index-based filtering to keep all four vectors aligned. @@ -292,10 +374,6 @@ std::map qtl_enrichment_workhorse( std::vector kept_indices; if (pv > 0) { kept_indices = filter_outlier_indices(a1_vec, v1_vec, pv, bessel_correction); - if (kept_indices.size() < static_cast(ImpN)) { - Rprintf("Outlier filtering removed %d MI round(s)\n", - ImpN - static_cast(kept_indices.size())); - } } else { kept_indices.resize(ImpN); std::iota(kept_indices.begin(), kept_indices.end(), 0); @@ -381,7 +459,9 @@ std::map qtl_enrichment_workhorse( } } - a0_est = log(pi_gwas / (1 + pi_qtl * exp(a1_est) - pi_qtl - pi_gwas)); + // The intercept matches piGwas through the unshrunk enrichment, as in + // fastenloc; the coloc priors below then pair it with the shrunk one. + a0_est = log(pi_gwas / (1 + pi_qtl * exp(a1_est_ns) - pi_qtl - pi_gwas)); double pi1_ne = exp(a0_est) / (1 + exp(a0_est)); double pi1_e = exp(a0_est + a1_est) / (1 + exp(a0_est + a1_est)); @@ -403,7 +483,7 @@ std::map qtl_enrichment_workhorse( output_map["Alternative (coloc) p12"] = p12; output_map["Effective MI rounds"] = static_cast(m); - return output_map; + return EnrichmentOutput{output_map, missing_proportion, em_converged, em_iterations, invalid_rounds}; } #endif // QTL_ENRICHMENT_HPP diff --git a/tests/testthat/helper-fineMapping.R b/tests/testthat/helper-fineMapping.R index 8f9956cb..0a0ac22c 100644 --- a/tests/testthat/helper-fineMapping.R +++ b/tests/testthat/helper-fineMapping.R @@ -144,3 +144,84 @@ delayedAssign(".twcvFixture", suppressMessages(.twcv_foldFits())) } fit } + +# ---- The bundled fine-mapping examples, rebuilt row by row ------------- +# Shared by the row and trimming tests: each example row goes back through +# FineMappingRow(), so a test can compare a collection built today with one +# saved by an earlier pecotmr, or rebuild a row with its fit edited. + +# The bundled fine-mapping examples, by name. +.fmExampleNames <- function() { + c( + "qtlFineMappingExample", + "qtlFineMappingLbfExample", + "qtlFineMappingPairedExample", + "gwasFineMappingExample", + "gwasFineMappingLbfExample", + "fsusieFineMappingExample", + "mvsusieFineMappingExample" + ) +} + +.fmLoadExample <- function(name) { + env <- new.env() + data(list = name, package = "pecotmr", envir = env) + get(name, envir = env) +} + +# Row i of `x` as FineMappingRow() takes it: its element's columns as the +# topLoci table, plus its stored fit. +.fmExampleRowInputs <- function(x, i) { + el <- x[[i]] + md <- as.data.frame(S4Vectors::mcols(el), optional = TRUE) + ids <- sprintf( + "%s:%d:%s:%s", + as.character(GenomicRanges::seqnames(el)), + GenomicRanges::start(el), + md$A2, + md$A1 + ) + list( + variantIds = ids, + susieFit = S4Vectors::mcols(x)$susieFit[[i]], + topLoci = cbind(variant_id = ids, md), + cvResult = S4Vectors::mcols(x)$cvResult[[i]] + ) +} + +# Row i of `x` rebuilt through FineMappingRow(). +.fmExampleRow <- function(x, i) { + do.call(FineMappingRow, .fmExampleRowInputs(x, i)) +} + +# `x` rebuilt row by row, keeping its identity columns. +.fmRebuildExample <- function(x) { + md <- S4Vectors::mcols(x) + entry <- lapply(seq_len(nrow(x)), .fmExampleRow, x = x) + col <- function(nm) if (nm %in% colnames(md)) md[[nm]] else NULL + if (methods::is(x, "GwasFineMappingResult")) { + return(GwasFineMappingResult( + studyName = md$study, + method = md$method, + entry = entry, + blockId = col("blockId"), + traitPos = col("traitPos"), + ldReference = ldReference(x) + )) + } + QtlFineMappingResult( + studyName = md$study, + context = md$context, + trait = md$trait, + method = md$method, + entry = entry, + jointContexts = col("jointContexts"), + traitPos = col("traitPos"), + ldReference = ldReference(x) + ) +} + +# The per-variant columns collection `x` stores. +.fmStoredColumns <- function(x) { + colnames(S4Vectors::mcols(unlist(x, use.names = FALSE))) +} diff --git a/tests/testthat/helper-h2Classes.R b/tests/testthat/helper-h2Classes.R index 5150b6a9..470f5a6c 100644 --- a/tests/testthat/helper-h2Classes.R +++ b/tests/testthat/helper-h2Classes.R @@ -1,6 +1,6 @@ # Fixtures shared by the LD-statistic tests (LdEigen, LdScore, LdStatistic), -# the heritability tests (h2EstimationWrappers, H2Estimate) and -# test_genotypeHandle.R. +# the heritability tests (h2EstimationWrappers, H2Estimate, h2Annotations) +# and test_genotypeHandle.R. # ============================================================================= # Test data helpers @@ -150,3 +150,35 @@ makeTestH2Estimate <- function(with_enrichment = TRUE) { traitName = "test" ) } + +# ============================================================================= +# GWAS summary statistics over a reference's variants (shared by the +# heritability and fine-mapping annotation tests) +# ============================================================================= + +makeTestGwasGenotypeHandle <- function() { + new( + "GenotypeHandle", + path = "/tmp/test", + format = "plink2", + snpInfo = data.frame(), + nSamples = 0L, + sampleIds = character(), + pgenPtr = NULL + ) +} + +.dfToGwasGr <- function(df) { + gr <- GenomicRanges::GRanges( + seqnames = df$CHR, + ranges = IRanges::IRanges(start = df$BP, width = 1L) + ) + S4Vectors::mcols(gr) <- S4Vectors::DataFrame( + SNP = df$SNP, + A1 = df$A1, + A2 = df$A2, + Z = df$Z, + N = df$N + ) + gr +} diff --git a/tests/testthat/test_AllClasses.R b/tests/testthat/test_AllClasses.R index ae78338a..1f028727 100644 --- a/tests/testthat/test_AllClasses.R +++ b/tests/testthat/test_AllClasses.R @@ -705,12 +705,13 @@ test_that("variantIds on an empty collection defers too", { endoapply(x, utils::head, k) } -test_that("a fine-mapping row keeps its fit's variants when narrowed", { +test_that("a narrowed fine-mapping row keeps its fit whole", { x <- .rc_makeFmr(.rc_vids(1:10)) - expect_equal(as.character(x$fitVariants[[1L]]), .rc_vids(1:10)) + expect_false("fitVariants" %in% colnames(S4Vectors::mcols(x))) narrowed <- .alc_narrowed(x, 4L) expect_length(narrowed[[1L]], 4L) - expect_equal(as.character(narrowed$fitVariants[[1L]]), .rc_vids(1:10)) + expect_warning(fit <- susieFit(narrowed), "no longer holds") + expect_length(fit$pip, 10L) }) test_that("reading a narrowed row's fit warns and returns it unchanged", { @@ -762,76 +763,38 @@ test_that("intersectVariants restricts a narrowed row's fit by id", { expect_equal(colnames(fit$alpha), .rc_vids(11:30)) kept <- susieFit(x)$alpha[, .rc_vids(11:30)] expect_equal(unname(fit$alpha), unname(kept / rowSums(kept))) - expect_equal(as.character(out$fitVariants[[1L]]), .rc_vids(11:30)) + expect_length(out[[1L]], 20L) + expect_length(fit$pip, 20L) }) -test_that("updateObject() backfills the variants each fit was made with", { +test_that("updateObject() drops the fitVariants column older rows saved", { x <- .rc_makeFmr(.rc_vids(1:10)) saved <- x - saved$fitVariants <- NULL - expect_equal( - as.character(updateObject(saved)$fitVariants[[1L]]), - .rc_vids(1:10) - ) - # A row narrowed before it was saved: its fit still names all ten. - savedNarrowed <- .alc_narrowed(x, 4L) - savedNarrowed$fitVariants <- NULL - up <- updateObject(savedNarrowed) - expect_equal(as.character(up$fitVariants[[1L]]), .rc_vids(1:10)) - expect_warning(susieFit(up), "no longer holds") + saved$fitVariants <- IRanges::CharacterList(list(.rc_vids(1:10))) + up <- updateObject(saved) + expect_false("fitVariants" %in% colnames(S4Vectors::mcols(up))) + expect_identical(up, x) + # A row narrowed before it was saved still reads its whole fit. + savedNarrowed <- .alc_narrowed(saved, 4L) + expect_warning(fit <- susieFit(updateObject(savedNarrowed)), "no longer") + expect_length(fit$pip, 10L) # A current collection is left as it is. - expect_identical(updateObject(x)$fitVariants, x$fitVariants) + expect_identical(updateObject(x), x) expect_message(updateObject(x, verbose = TRUE), "updateObject") }) -test_that("updateObject() backfills fitVariants and keys LD rows in one call", { +test_that("updateObject() drops fitVariants and keys LD rows in one call", { x <- .rc_makeFmr(.rc_vids(1:10)) saved <- x - saved$fitVariants <- NULL + saved$fitVariants <- IRanges::CharacterList(list(.rc_vids(1:10))) up <- updateObject(.savedWithLdSketch(saved, NULL)) expect_true(validObject(up)) - expect_equal(as.character(up$fitVariants[[1L]]), .rc_vids(1:10)) + expect_false("fitVariants" %in% colnames(S4Vectors::mcols(up))) expect_identical(ldReference(up), list()) expect_true(is.na(up$ldReference)) expect_identical(updateObject(up), up) }) -test_that("updateObject(): an unnamed fit records its row, no fit none", { - vids <- .rc_vids(1:3) - tl <- data.frame(variant_id = vids, pip = c(0.5, 0.3, 0.2)) - saved <- QtlFineMappingResult( - studyName = c("s1", "s2"), - context = c("c1", "c1"), - trait = c("g1", "g1"), - method = c("susie", "susie"), - entry = list( - FineMappingRow(vids, list(pip = c(0.5, 0.3, 0.2)), tl), - FineMappingRow(vids, NULL, tl) - ) - ) - saved$fitVariants <- NULL - up <- updateObject(saved) - expect_equal(as.character(up$fitVariants[[1L]]), vids) - expect_equal(as.character(up$fitVariants[[2L]]), character(0)) -}) - -test_that(".fitNamedVariants reads a fit's names, never susieR's null column", { - f <- pecotmr:::.fitNamedVariants - expect_equal(f(NULL), character(0)) - expect_equal(f(list()), character(0)) - # A null_weight fit: one more effect-matrix column, named "null". - alpha <- matrix(0.5, 1L, 3L, dimnames = list(NULL, c("v1", "v2", "null"))) - expect_equal(f(list(alpha = alpha)), c("v1", "v2")) - expect_equal( - f(list(pip = c(v1 = 0.1, v2 = 0.2), alpha = alpha)), - c("v1", "v2") - ) - lbfMat <- matrix(0, 1L, 2L, dimnames = list(NULL, c("a", "b"))) - expect_equal(f(list(lbf_variable = lbfMat)), c("a", "b")) - # fSuSiE names its variables on csd_X. - expect_equal(f(list(csd_X = c(x1 = 1, x2 = 2))), c("x1", "x2")) -}) - # =========================================================================== # adjustPips: entries that share no variant with `keepVariants` # @@ -1075,12 +1038,25 @@ test_that("a flip complements AF but leaves MAF and N alone", { data(qtlSumStatsExample) x <- qtlSumStatsExample swapped <- .alc_replacementGr(x, swap = TRUE, payload = 0.3) + p <- parseVariantId(variantIds(x)) + ambiguous <- paste0(p$A2, p$A1) %in% c("AT", "TA", "CG", "GC") # An allele swap sends af -> 1 - af. maf is min(af, 1 - af) and the # sample size is a count, so both are swap-invariant -- complementing # them would corrupt them. - expect_equal(unique(af(fillFromReference(x, swapped, "AF"))), 0.7) - expect_equal(unique(maf(fillFromReference(x, swapped, "MAF"))), 0.3) - expect_equal(unique(sampleSize(fillFromReference(x, swapped, "N"))), 0.3) + filledAf <- af(fillFromReference(x, swapped, "AF")) + expect_equal(unique(filledAf[!ambiguous]), 0.7) + expect_equal( + unique(maf(fillFromReference(x, swapped, "MAF"))[!ambiguous]), + 0.3 + ) + expect_equal( + unique(sampleSize(fillFromReference(x, swapped, "N"))[!ambiguous]), + 0.3 + ) + # A swapped A/T or C/G variant is a swap or a strand flip and nothing says + # which, so it is not filled. + expect_true(any(ambiguous)) + expect_false(any(filledAf[ambiguous] %in% c(0.3, 0.7))) }) test_that("fillFromReference requires A1/A2 and says which column it read", { @@ -1483,3 +1459,173 @@ test_that("fsusieAffectedRegions on a collection of non-fSuSiE entries is an emp ) expect_equal(length(fsusieAffectedRegions(res)), 0L) }) + +# =========================================================================== +# trimFineMappingResult: roles +# =========================================================================== + +test_that("trimFineMappingResult trims by role, picked by class", { + gwas <- trimFineMappingResult(.fmLoadExample("gwasFineMappingExample")) + expect_setequal(names(susieFit(gwas)), c("pip", "sets", "sets_secondary")) + qtl <- trimFineMappingResult(.fmLoadExample("qtlFineMappingExample")) + expect_setequal( + names(susieFit(qtl)), + c("alpha", "V", "pip", "sets", "sets_secondary") + ) + # Either class can play either role. + asAnnotation <- trimFineMappingResult( + .fmLoadExample("gwasFineMappingExample"), + role = "annotation" + ) + expect_true("alpha" %in% names(susieFit(asAnnotation))) + # The fit's class survives, so dispatch on it does too. + expect_identical( + class(susieFit(qtl)), + class(susieFit(.fmLoadExample("qtlFineMappingExample"))) + ) +}) + +test_that("trimFineMappingResult refuses an unknown role or input", { + x <- .fmLoadExample("qtlFineMappingExample") + expect_error(trimFineMappingResult(x, role = "both"), "must be one of") + expect_error(trimFineMappingResult(list()), "GwasFineMappingResult") +}) + +test_that("an annotation trim keeps the effects of positive prior variance", { + x <- .fmLoadExample("gwasFineMappingExample") + inputs <- .fmExampleRowInputs(x, 1L) + inputs$susieFit$V[c(3L, 5L)] <- 0 + edited <- GwasFineMappingResult( + studyName = "s", + method = "susie", + entry = list(do.call(FineMappingRow, inputs)), + ldReference = ldReference(x) + ) + fit <- susieFit(trimFineMappingResult(edited, role = "annotation")) + kept <- setdiff(seq_along(inputs$susieFit$V), c(3L, 5L)) + expect_identical(rownames(fit$alpha), paste0("L", kept)) + expect_identical(names(fit$V), paste0("L", kept)) + expect_equal(unname(fit$alpha), unname(inputs$susieFit$alpha[kept, ])) + # The credible-set summary reads each effect's V by its id: positionally, + # L4 would get L5's. + full <- credibleSetSummary(edited) + trimmed <- credibleSetSummary(trimFineMappingResult(edited, "annotation")) + keptCs <- full$effect_id != "L3" + expect_equal(trimmed$V[keptCs], full$V[keptCs]) + expect_true(is.na(trimmed$V[!keptCs])) +}) + +test_that("a fit with no effect of positive prior variance keeps no rows", { + x <- .fmLoadExample("qtlFineMappingExample") + inputs <- .fmExampleRowInputs(x, 1L) + inputs$susieFit$V[] <- 0 + null <- QtlFineMappingResult( + "s", + "c", + "t", + "susie", + list(do.call(FineMappingRow, inputs)) + ) + fit <- susieFit(trimFineMappingResult(null)) + expect_identical(dim(fit$alpha), c(0L, ncol(inputs$susieFit$alpha))) + expect_length(fit$V, 0L) +}) + +# =========================================================================== +# trimFineMappingResult: what a trimmed collection keeps +# =========================================================================== + +test_that("trimming keeps names, the genome, LD references and metadata", { + x <- .fmLoadExample("qtlFineMappingExample") + S4Vectors::metadata(x) <- list(source = "test") + trimmed <- trimFineMappingResult(x) + expect_identical(names(trimmed), names(x)) + expect_identical(GenomeInfoDb::seqinfo(trimmed), GenomeInfoDb::seqinfo(x)) + expect_identical(ldReference(trimmed), ldReference(x)) + expect_identical(S4Vectors::metadata(trimmed), list(source = "test")) + expect_identical(studyName(trimmed), studyName(x)) +}) + +test_that("a trimmed collection stores only the variant identities", { + for (name in c("qtlFineMappingExample", "gwasFineMappingExample")) { + x <- .fmLoadExample(name) + trimmed <- trimFineMappingResult(x) + expect_setequal(.fmStoredColumns(trimmed), c("A1", "A2")) + expect_lt(utils::object.size(trimmed), utils::object.size(x) / 2) + expect_null(S4Vectors::mcols(trimmed)$cvResult[[1L]]) + } +}) + +test_that("a trimmed collection reports the same PIPs and credible sets", { + cols <- c("pip", "cs_95", "cs_70", "cs_50", "cs_95_purity") + for (name in c("qtlFineMappingExample", "gwasFineMappingExample")) { + x <- .fmLoadExample(name) + trimmed <- trimFineMappingResult(x) + expect_equal( + S4Vectors::mcols(topLoci(trimmed, signalCutoff = 0))[cols], + S4Vectors::mcols(topLoci(x, signalCutoff = 0))[cols], + info = name + ) + kept <- function(gr) { + S4Vectors::mcols(gr) <- S4Vectors::mcols(gr)[ + c("variant_id", "pip", "cs_70") + ] + gr + } + expect_equal( + kept(credibleSets(trimmed, coverage = 0.7)), + kept(credibleSets(x, coverage = 0.7)), + info = name + ) + } +}) + +test_that("trimming a trimmed collection changes nothing", { + trimmed <- trimFineMappingResult(.fmLoadExample("gwasFineMappingExample")) + expect_identical(trimFineMappingResult(trimmed), trimmed) + expect_identical( + trimFineMappingResult(trimmed, role = "outcome"), + trimmed + ) +}) + +test_that("a narrowed row trims to a fit that names its variables", { + # A row narrowed before trimming is found in its fit by name, so its + # trimmed fit keeps them; any other row's goes unnamed. + x <- .rc_makeFmr(.rc_vids(1:10)) + narrowed <- endoapply(x, utils::tail, 4L) + trimmed <- trimFineMappingResult(narrowed, role = "annotation") + expect_warning(fit <- susieFit(trimmed), "no longer holds") + expect_equal(names(fit$pip), .rc_vids(1:10)) + expect_null(names(susieFit(trimFineMappingResult(x))$pip)) + expect_equal( + suppressWarnings(topLoci(trimmed))$pip, + suppressWarnings(topLoci(narrowed))$pip + ) +}) + +test_that("a trimmed row narrowed afterwards cannot be read", { + # Its fit names no variables, so the PIPs it left to the fit have nowhere + # to come back from. + trimmed <- trimFineMappingResult(.rc_makeFmr(.rc_vids(1:10))) + narrowed <- endoapply(trimmed, utils::tail, 4L) + expect_error(topLoci(narrowed), "does not name its variables") +}) + +test_that("enrichment estimates are the same from trimmed collections", { + gwas <- .fmLoadExample("gwasFineMappingExample") + qtl <- .fmLoadExample("qtlFineMappingExample") + run <- function(g, q) { + suppressWarnings(qtlEnrichmentPipeline( + g, + q, + qtlEnrichmentParam = QtlEnrichmentParam(numGwas = 1e5, impN = 5), + seed = 1L, + verbose = FALSE + )) + } + expect_equal( + run(trimFineMappingResult(gwas), trimFineMappingResult(qtl)), + run(gwas, qtl) + ) +}) diff --git a/tests/testthat/test_GwasFineMappingResult.R b/tests/testthat/test_GwasFineMappingResult.R index cf2e1e50..6e881340 100644 --- a/tests/testthat/test_GwasFineMappingResult.R +++ b/tests/testthat/test_GwasFineMappingResult.R @@ -639,7 +639,7 @@ test_that("GwasFineMappingResult() keeps the caller's metadata", { expect_equal(S4Vectors::metadata(res), list(run = "r1")) }) -test_that("a fit-less entry split across chromosomes records no fit variants", { +test_that("a fit-less entry split across chromosomes reads without warning", { # Its rows hold one chromosome each; with no fit there is nothing for a # row to have narrowed, so none of them warns. ids <- c("chr1:100:A:G", "chr2:200:C:T") @@ -650,6 +650,6 @@ test_that("a fit-less entry split across chromosomes records no fit variants", { entry = list(FineMappingRow(ids, NULL, tl)) ) expect_equal(nrow(res), 2L) - expect_equal(unname(lengths(res$fitVariants)), c(0L, 0L)) + expect_false("fitVariants" %in% colnames(S4Vectors::mcols(res))) expect_no_warning(lbf(res)) }) diff --git a/tests/testthat/test_QtlFineMappingResult.R b/tests/testthat/test_QtlFineMappingResult.R index ab355d3e..b25c38c1 100644 --- a/tests/testthat/test_QtlFineMappingResult.R +++ b/tests/testthat/test_QtlFineMappingResult.R @@ -598,7 +598,7 @@ test_that("QtlFineMappingResult() keeps the caller's metadata", { ) }) -test_that("each row records the variants its fit was made with", { +test_that("rows record no fit variants: a row is its fit's variables", { row <- .sc_makeFineMappingRow(3) res <- QtlFineMappingResult( studyName = "s1", @@ -607,14 +607,13 @@ test_that("each row records the variants its fit was made with", { method = "susie", entry = list(row) ) - expect_s4_class(res$fitVariants, "CharacterList") - expect_equal( - as.character(res$fitVariants[[1L]]), - pecotmr:::.fmRowFitVariants(row) - ) + expect_false("fitVariants" %in% colnames(S4Vectors::mcols(res))) + expect_identical(susieFit(res), susieFit(row)) }) test_that("cvResult() of a narrowed row warns and returns it unchanged", { + # A row is narrowed when it holds fewer variants than its fit has, so + # it is the fit that tells. tl <- data.frame( variant_id = c("chr1:100:A:G", "chr1:200:C:T", "chr1:300:G:A"), pip = c(0.5, 0.3, 0.2) @@ -625,7 +624,12 @@ test_that("cvResult() of a narrowed row warns and returns it unchanged", { context = "c1", trait = "t1", method = "susie", - entry = list(FineMappingRow(tl$variant_id, NULL, tl, cvResult = cv)) + entry = list(FineMappingRow( + tl$variant_id, + list(pip = tl$pip), + tl, + cvResult = cv + )) ) narrowed <- endoapply(res, utils::head, 2L) expect_warning( diff --git a/tests/testthat/test_RangedTupleList.R b/tests/testthat/test_RangedTupleList.R index f8b2b360..47045c4c 100644 --- a/tests/testthat/test_RangedTupleList.R +++ b/tests/testthat/test_RangedTupleList.R @@ -600,6 +600,31 @@ test_that("flattenTupleRanges drops non-broadcastable payload columns", { expect_true(is_in(".study", colnames(mcols(flat)))) }) +test_that("flattenTupleRanges restores a trimmed collection's PIPs and sets", { + # A trimmed row stores neither: every row's come back from its fit, and + # they are the values the untrimmed collection stores. + for (name in .fmExampleNames()) { + x <- .fmLoadExample(name) + trimmed <- S4Vectors::mcols(flattenTupleRanges(trimFineMappingResult( + x + ))) + full <- S4Vectors::mcols(flattenTupleRanges(x)) + shared <- intersect( + colnames(trimmed), + c( + "pip", + grep("^cs_[0-9]+(_purity)?$", colnames(full), value = TRUE) + ) + ) + expect_true("pip" %in% shared, info = name) + expect_equal( + as.data.frame(trimmed[shared]), + as.data.frame(full[shared]), + info = name + ) + } +}) + test_that("flattenTupleRanges rejects a non-collection", { expect_error( flattenTupleRanges(GenomicRanges::GRanges()), diff --git a/tests/testthat/test_colocPipeline.R b/tests/testthat/test_colocPipeline.R index 948c878f..3941fcfa 100644 --- a/tests/testthat/test_colocPipeline.R +++ b/tests/testthat/test_colocPipeline.R @@ -2130,9 +2130,14 @@ test_that("an unnamed LBF matrix is named by the variants of its fit", { context = "c1", trait = "g1", method = "susie", - entry = list(FineMappingRow(vids, list(pip = tl$pip), tl)) + entry = list(FineMappingRow( + vids, + list(pip = set_names(tl$pip, vids)), + tl + )) ) - # The row holds two of the three variants the fit's columns are. + # The row holds two of the three variants the fit's columns are, found + # by the names the fit gives them. parts <- pecotmr:::.fmrRowParts(endoapply(res, utils::head, 2L), 1L) named <- pecotmr:::.colocLbfNamesFrom(matrix(c(1, 2, 3), 1L), parts) expect_equal(colnames(named), vids) diff --git a/tests/testthat/test_fineMappingRow.R b/tests/testthat/test_fineMappingRow.R index 0afcabd8..5fcbfc9a 100644 --- a/tests/testthat/test_fineMappingRow.R +++ b/tests/testthat/test_fineMappingRow.R @@ -514,21 +514,21 @@ test_that("adjustPips errors when alpha's width matches neither variant count", test_that("adjustPips restricts a narrowed row's fit by the fit's own ids", { # The row holds variants 3:6 of the six its fit was made with. The kept - # ones are found among the fit's columns by id, not by their position in - # the row, which would pick the fit's columns 1:2. + # ones are found among the fit's columns by the names the fit gives them, + # not by their position in the row, which would pick the fit's columns + # 1:2. vids <- paste0("chr1:", 1:6, ":A:G") entry <- .makeAdjustEntry(vids) narrowed <- methods::new( "FineMappingRow", variants = variants(entry)[3:6], - susieFit = susieFit(entry), - fitVariants = vids + susieFit = susieFit(entry) ) adj <- adjustPips(narrowed, vids[3:4]) alpha <- susieFit(entry)$alpha[, 3:4] expect_equal(variantIds(adj), vids[3:4]) expect_equal(unname(susieFit(adj)$alpha), unname(alpha / rowSums(alpha))) - expect_equal(pecotmr:::.fmRowFitVariants(adj), vids[3:4]) + expect_length(susieFit(adj)$pip, 2L) }) test_that("adjustPips refuses a row holding a variant its fit never had", { @@ -543,19 +543,6 @@ test_that("adjustPips refuses a row holding a variant its fit never had", { ) }) -test_that("a row records its fit's variants only when it carries a fit", { - vids <- paste0("chr1:", 1:3, ":A:G") - tl <- data.frame(variant_id = vids, pip = c(0.5, 0.3, 0.2)) - fitted <- FineMappingRow(vids, list(pip = tl$pip), tl) - expect_equal(pecotmr:::.fmRowFitVariants(fitted), vids) - cvOnly <- FineMappingRow(vids, NULL, tl, cvResult = list(r2 = 0.1)) - expect_equal(pecotmr:::.fmRowFitVariants(cvOnly), vids) - expect_equal( - pecotmr:::.fmRowFitVariants(FineMappingRow(vids, list(), tl)), - character(0) - ) -}) - test_that("adjustPips recomputes credible sets instead of remapping indices", { vids <- paste0("chr1:", 1:6, ":A:G") p <- length(vids) @@ -1735,3 +1722,164 @@ test_that("a fit whose prior variances all vanished labels nothing", { adj <- adjustPips(entry, vids[1:3]) expect_equal(.fmrRowTopLoci(adj, raw = TRUE)$cs_95, rep("susie_0", 3L)) }) + +# =========================================================================== +# A row stores no per-variant pip column when its fit reproduces it: every +# view restores it from the fit. These tests rebuild each bundled example -- +# saved with the column -- through FineMappingRow() and check that nothing a +# caller can see changes. +# =========================================================================== + +.fpd_hasStoredPip <- function(x) { + "pip" %in% .fmStoredColumns(x) +} + +.fpd_csColumns <- c( + "cs_95", + "cs_70", + "cs_50", + "cs_95_purity", + "cs_70_purity", + "cs_50_purity" +) + +test_that("a rebuilt row stores no pip its fit reproduces", { + x <- .fmLoadExample("qtlFineMappingExample") + expect_true(.fpd_hasStoredPip(x)) + expect_false(.fpd_hasStoredPip(.fmRebuildExample(x))) +}) + +test_that("a rebuilt row stores no credible-set column its fit reproduces", { + x <- .fmLoadExample("qtlFineMappingExample") + expect_true(all(.fpd_csColumns %in% .fmStoredColumns(x))) + new <- .fmRebuildExample(x) + expect_false(any(.fpd_csColumns %in% .fmStoredColumns(new))) + # The row as GRanges derives them back, in buildTopLoci()'s order. + restored <- as(.fmExampleRow(x, 1L), "GRanges") + expect_identical( + colnames(S4Vectors::mcols(restored)), + colnames(S4Vectors::mcols(x[[1L]])) + ) +}) + +test_that("credible-set columns the fit cannot give back are stored", { + inputs <- .fmExampleRowInputs(.fmLoadExample("qtlFineMappingExample"), 1L) + stored <- function(inputs) { + row <- do.call(FineMappingRow, inputs) + q <- QtlFineMappingResult("s", "c", "t", "susie", list(row)) + intersect(.fpd_csColumns, .fmStoredColumns(q)) + } + # Without the secondary credible sets the 0.7 and 0.5 columns have no + # source, and the block is kept whole. + noSecondary <- inputs + noSecondary$susieFit$sets_secondary <- NULL + expect_identical(stored(noSecondary), .fpd_csColumns) + # Nor is a relabelled column re-derived over. + relabelled <- inputs + relabelled$topLoci$cs_70 <- sub("_[0-9]+$", "_9", relabelled$topLoci$cs_70) + expect_identical(stored(relabelled), .fpd_csColumns) + row <- do.call(FineMappingRow, relabelled) + expect_identical( + S4Vectors::mcols(as(row, "GRanges"))$cs_70, + relabelled$topLoci$cs_70 + ) + # A table with only some of the block is not laid out as the fit writes + # it. + partial <- inputs + partial$topLoci$cs_50_purity <- NULL + expect_identical(stored(partial), setdiff(.fpd_csColumns, "cs_50_purity")) +}) + +test_that("every view of a rebuilt example is unchanged", { + for (name in .fmExampleNames()) { + old <- .fmLoadExample(name) + new <- .fmRebuildExample(old) + same <- function(f) { + expect_equal(f(new), f(old), info = name) + } + same(function(x) topLoci(x)) + same(function(x) topLoci(x, signalCutoff = 0)) + same(function(x) topLoci(x, signalCutoff = 0.1, minPurity = 0.5)) + for (coverage in c(0.95, 0.7, 0.5)) { + same(function(x) credibleSets(x, coverage = coverage)) + } + same(function(x) credibleSetSummary(x)) + same(function(x) marginalEffects(x)) + same(flattenTupleRanges) + same(function(x) as(x, "GRanges")) + } +}) + +test_that("pip() of a rebuilt row comes from its fit", { + old <- .fmLoadExample("gwasFineMappingExample") + new <- .fmRebuildExample(old) + expect_equal(pip(new), pip(old)) + expect_false(anyNA(pip(new))) +}) + +test_that("the BED writer writes the same table for a rebuilt example", { + for (name in c("qtlFineMappingExample", "gwasFineMappingExample")) { + old <- .fmLoadExample(name) + paths <- c(withr::local_tempfile(), withr::local_tempfile()) + writeBed(old, paths[[1L]], signalCutoff = 0) + writeBed(.fmRebuildExample(old), paths[[2L]], signalCutoff = 0) + expect_identical( + readLines(paths[[2L]]), + readLines(paths[[1L]]), + info = name + ) + } +}) + +test_that("a flatten / nest round trip keeps the pip column dropped", { + new <- .fmRebuildExample(.fmLoadExample("qtlFineMappingExample")) + flat <- flattenTupleRanges(new) + expect_true("pip" %in% colnames(S4Vectors::mcols(flat))) + expect_true(all(.fpd_csColumns %in% colnames(S4Vectors::mcols(flat)))) + back <- nestTupleRanges(flat, new) + expect_false(.fpd_hasStoredPip(back)) + expect_false(any(.fpd_csColumns %in% .fmStoredColumns(back))) + expect_equal( + topLoci(back, signalCutoff = 0), + topLoci(new, signalCutoff = 0) + ) + # A verb that changes the PIPs keeps its own values. + halved <- flat + S4Vectors::mcols(halved)$pip <- S4Vectors::mcols(halved)$pip / 2 + edited <- nestTupleRanges(halved, new) + expect_true(.fpd_hasStoredPip(edited)) + expect_equal( + S4Vectors::mcols(topLoci(edited, signalCutoff = 0))$pip, + S4Vectors::mcols(topLoci(new, signalCutoff = 0))$pip / 2 + ) +}) + +test_that("a pip its fit does not give is stored", { + inputs <- .fmExampleRowInputs(.fmLoadExample("qtlFineMappingExample"), 1L) + inputs$topLoci$pip <- inputs$topLoci$pip / 2 + edited <- do.call(FineMappingRow, inputs) + expect_equal( + S4Vectors::mcols(as(edited, "GRanges"))$pip, + inputs$topLoci$pip + ) + # No fit at all: the table's pip is the only one there is. + bare <- FineMappingRow( + variantIds = c("chr1:100:A:G", "chr1:200:C:T"), + susieFit = list(), + topLoci = data.frame( + variant_id = c("chr1:100:A:G", "chr1:200:C:T"), + pip = c(0.9, 0.1) + ) + ) + expect_equal(S4Vectors::mcols(as(bare, "GRanges"))$pip, c(0.9, 0.1)) +}) + +test_that("a collection joining saved and rebuilt rows reads every pip", { + old <- .fmLoadExample("qtlFineMappingLbfExample") + new <- .fmRebuildExample(old) + mixed <- c(old[1L], new[2L]) + expect_equal( + topLoci(mixed, signalCutoff = 0), + topLoci(old, signalCutoff = 0) + ) +}) diff --git a/tests/testthat/test_fineMappingWrappers.R b/tests/testthat/test_fineMappingWrappers.R index 8c3c4312..e04e097a 100644 --- a/tests/testthat/test_fineMappingWrappers.R +++ b/tests/testthat/test_fineMappingWrappers.R @@ -3487,7 +3487,10 @@ test_that("extractCsInfo names a narrowed row's sets by the fit's variants", { tl <- data.frame(variant_id = vids, pip = pip, z = c(1, 4, 2, 0.5)) fe <- .testFineMappingRow( variantIds = vids, - susieFit = list(pip = pip, sets = list(cs = list(L_1 = c(2L, 3L)))), + susieFit = list( + pip = set_names(pip, vids), + sets = list(cs = list(L_1 = c(2L, 3L))) + ), topLoci = tl ) narrowed <- endoapply(fe, utils::tail, 3L) @@ -3519,7 +3522,7 @@ test_that("computeCsCorrelation of a narrowed row warns, on the fit's sets", { variantIds = vids, susieFit = list( sets = list(cs = list(L_1 = 1:3, L_2 = 90:91)), - pip = rep(0.01, length(vids)) + pip = set_names(rep(0.01, length(vids)), vids) ) ) full <- computeCsCorrelation(fe, ss) diff --git a/tests/testthat/test_h2Annotations.R b/tests/testthat/test_h2Annotations.R index 53d0606f..a23c767b 100644 --- a/tests/testthat/test_h2Annotations.R +++ b/tests/testthat/test_h2Annotations.R @@ -425,3 +425,210 @@ test_that(".readLdscAnnot errors when CHR/BP columns are absent", { "must contain CHR and BP columns" ) }) + +# ============================================================================= +# fineMappingAnnotations (h2Annotations.R) +# ============================================================================= + +# An LD-score reference over `n` variants at chr1:100, 200, ..., named by +# rsID, in `nBlocks` blocks with identity LD. `flip` lists variants it +# stores with the alleles the other way round. +.fma_ref <- function(n = 6L, nBlocks = 2L, flip = integer(0)) { + a1 <- rep("G", n) + a2 <- rep("A", n) + a1[flip] <- "A" + a2[flip] <- "G" + per <- n / nBlocks + LdScore( + ldBlocks = GenomicRanges::GRanges( + "chr1", + IRanges::IRanges( + start = (seq_len(nBlocks) - 1L) * per * 100L + 1L, + end = seq_len(nBlocks) * per * 100L + ) + ), + snpInfo = data.frame( + SNP = paste0("rs", seq_len(n)), + CHR = "chr1", + BP = seq_len(n) * 100L, + A1 = a1, + A2 = a2 + ), + nSamples = 1000L, + inSample = FALSE, + genome = "hg19", + ldScores = matrix(1, n, 1, dimnames = list(NULL, "base_l2")), + ldScoreWeights = rep(1, n), + ldMatrixList = lapply(seq_len(nBlocks), function(b) { + list( + R = diag(per), + snpIdx = as.integer((b - 1L) * per + seq_len(per)) + ) + }) + ) +} + +# One gene's row over variants `idx` (ids chr1::A:G) with PIPs `pip`, +# 95% credible-set members `cs` and their purity. +.fma_row <- function(idx, pip, cs, purity) { + ids <- sprintf("chr1:%d:A:G", idx * 100L) + FineMappingRow( + variantIds = ids, + susieFit = list(pip = stats::setNames(pip, ids)), + topLoci = data.frame( + variant_id = ids, + pip = pip, + cs_95 = ifelse(seq_along(idx) %in% cs, "susie_1", "susie_0"), + cs_95_purity = ifelse(seq_along(idx) %in% cs, purity, 0) + ) + ) +} + +# Two genes of one context sharing variants 3 and 4. +.fma_qtl <- function() { + QtlFineMappingResult( + studyName = c("Q", "Q"), + context = c("ctx", "ctx"), + trait = c("g1", "g2"), + method = c("susie", "susie"), + entry = list( + .fma_row(1:4, c(0.7, 0.2, 0.05, 0.05), cs = 1:2, purity = 0.9), + .fma_row(3:6, c(0.6, 0.1, 0.2, 0.1), cs = c(1L, 3L), purity = 0.3) + ) + ) +} + +.fma_col <- function(annot, type) { + unname(SummarizedExperiment::assay(annot, "annotations")[, + paste0("Q|ctx|susie|", type) + ]) +} + +test_that("fineMappingAnnotations builds max and summed PIP over the traits", { + annot <- fineMappingAnnotations(.fma_qtl(), .fma_ref()) + # Variant 3 carries both genes: 0.05 and 0.6. + expect_equal(.fma_col(annot, "maxCpp"), c(0.7, 0.2, 0.6, 0.1, 0.2, 0.1)) + expect_equal(.fma_col(annot, "sumPip"), c(0.7, 0.2, 0.65, 0.15, 0.2, 0.1)) + expect_equal(.fma_col(annot, "highPip"), c(1, 0, 1, 0, 0, 0)) + expect_equal(.fma_col(annot, "credibleSet"), c(1, 1, 1, 0, 1, 0)) +}) + +test_that("fineMappingAnnotations rows follow the reference", { + ref <- .fma_ref() + annot <- fineMappingAnnotations(.fma_qtl(), ref) + expect_identical(nrow(annot), length(ref)) + expect_identical( + GenomicRanges::start(SummarizedExperiment::rowRanges(annot)), + GenomicRanges::start(ref) + ) + meta <- as.data.frame(SummarizedExperiment::colData(annot)) + expect_identical( + meta$name, + paste0("Q|ctx|susie|", c("maxCpp", "sumPip", "credibleSet", "highPip")) + ) + expect_identical(unique(meta$tier), "candidate") + expect_identical( + meta$type, + c("continuous", "continuous", "binary", "binary") + ) + baseline <- fineMappingAnnotations(.fma_qtl(), ref, tier = "baseline") + expect_identical( + unique(SummarizedExperiment::colData(baseline)$tier), + "baseline" + ) +}) + +test_that("fineMappingAnnotations matches a reference variant stored flipped", { + annot <- fineMappingAnnotations(.fma_qtl(), .fma_ref(flip = 1L)) + expect_equal(.fma_col(annot, "maxCpp")[[1L]], 0.7) +}) + +test_that("fineMappingAnnotations takes the coverage, purity and threshold", { + qtl <- .fma_qtl() + ref <- .fma_ref() + pure <- fineMappingAnnotations( + qtl, + ref, + types = "credibleSet", + minPurity = 0.5 + ) + expect_equal(.fma_col(pure, "credibleSet"), c(1, 1, 0, 0, 0, 0)) + low <- fineMappingAnnotations( + qtl, + ref, + types = "highPip", + pipThreshold = 0.2 + ) + expect_equal(.fma_col(low, "highPip"), c(1, 1, 1, 0, 1, 0)) + # No credible sets were stored at 70% coverage. + expect_warning( + none <- fineMappingAnnotations( + qtl, + ref, + types = c("maxCpp", "credibleSet"), + coverage = 0.7 + ), + "dropping 1 column" + ) + expect_identical(colnames(none), "Q|ctx|susie|maxCpp") +}) + +test_that("fineMappingAnnotations refuses bad arguments", { + expect_error( + fineMappingAnnotations(.fma_qtl(), .fma_ref(), types = "meanPip"), + "must be one of" + ) + expect_error( + fineMappingAnnotations(.fma_qtl(), .fma_ref(), tier = "tested"), + "must be one of" + ) + expect_error(fineMappingAnnotations(.fma_qtl(), list()), "LdStatistic") +}) + +test_that("estimateH2 takes fineMappingAnnotations as candidates", { + n <- 40L + ref <- .fma_ref(n = n, nBlocks = 4L) + set.seed(5) + df <- data.frame( + SNP = paste0("rs", seq_len(n)), + CHR = "chr1", + BP = seq_len(n) * 100L, + A1 = "G", + A2 = "A", + Z = stats::rnorm(n, sd = 1.5), + N = 50000 + ) + ss <- GwasSumStats( + studyName = "t", + entry = list(.dfToGwasGr(df)), + genome = "hg19", + ldReference = makeTestGwasGenotypeHandle() + ) + qtl <- QtlFineMappingResult( + "Q", + "ctx", + "g1", + "susie", + list(.fma_row( + seq(2L, n, by = 3L), + rep(0.3, length(seq(2L, n, by = 3L))), + cs = 1:3, + purity = 0.9 + )) + ) + annot <- fineMappingAnnotations( + qtl, + ref, + types = c("maxCpp", "credibleSet") + ) + for (method in c("sldsc", "gldsc")) { + z <- scoreStats(estimateH2( + ss, + ref, + method = method, + annotations = annot + ))$z + expect_length(z, 2L) + expect_true(all(is.finite(z)), info = method) + } +}) diff --git a/tests/testthat/test_h2EstimationWrappers.R b/tests/testthat/test_h2EstimationWrappers.R index a0f481d3..7f581076 100644 --- a/tests/testthat/test_h2EstimationWrappers.R +++ b/tests/testthat/test_h2EstimationWrappers.R @@ -352,13 +352,23 @@ test_that("estimators read a panel's LD on demand as they read stored LD", { ) } hdl <- pecotmr:::hdlUnivariate - for (an in list(NULL, annot)) { - expect_equal( - suppressWarnings(hdl(z, n, lazyEigen, an, TRUE)), - suppressWarnings(hdl(z, n, storedEigen, an, TRUE)), - tolerance = 1e-6 - ) + expect_equal( + suppressWarnings(hdl(z, n, lazyEigen, NULL, TRUE)), + suppressWarnings(hdl(z, n, storedEigen, NULL, TRUE)), + tolerance = 1e-6 + ) + # Stratified, this fixture (a 100-sample panel, so the intercept sits at + # its bound) leaves the likelihood flat along the base / annotation + # ridge: the two optima have the same likelihood to 1e-7 but sit apart + # along it, so only the total heritability is pinned down. + stratifiedH2 <- function(ref) { + suppressWarnings(hdl(z, n, ref, annot, TRUE))$h2 } + expect_equal( + stratifiedH2(lazyEigen), + stratifiedH2(storedEigen), + tolerance = 1e-3 + ) # The truncated decompositions HDL conventionally uses agree too. lazy9 <- buildLdEigen( fx$panel, @@ -367,11 +377,7 @@ test_that("estimators read a panel's LD on demand as they read stored LD", { eigenvalueTruncation = 0.9 ) stored9 <- buildLdEigen(fx$ld, genome = "hg19", eigenvalueTruncation = 0.9) - expect_equal( - suppressWarnings(hdl(z, n, lazy9, annot, TRUE)), - suppressWarnings(hdl(z, n, stored9, annot, TRUE)), - tolerance = 1e-6 - ) + expect_equal(stratifiedH2(lazy9), stratifiedH2(stored9), tolerance = 1e-3) }) # =========================================================================== @@ -456,33 +462,6 @@ test_that("h2EstimateToSldscTrait creates 1-row dummy when annotationJackknifeCo # Helper: GwasSumStats matched to a reference panel # =========================================================================== -makeTestGwasGenotypeHandle <- function() { - new( - "GenotypeHandle", - path = "/tmp/test", - format = "plink2", - snpInfo = data.frame(), - nSamples = 0L, - sampleIds = character(), - pgenPtr = NULL - ) -} - -.dfToGwasGr <- function(df) { - gr <- GenomicRanges::GRanges( - seqnames = df$CHR, - ranges = IRanges::IRanges(start = df$BP, width = 1L) - ) - S4Vectors::mcols(gr) <- S4Vectors::DataFrame( - SNP = df$SNP, - A1 = df$A1, - A2 = df$A2, - Z = df$Z, - N = df$N - ) - gr -} - makeTestSumstatsForRef <- function( ref, traitName = "test", @@ -615,6 +594,43 @@ test_that("estimateH2 rejects annotations that do not cover the reference", { ) }) +test_that("estimateH2 rejects annotations at other coordinates or in another order", { + ref <- makeTestEigenRef() + ss <- makeTestSumstatsForRef(ref) + annot <- makeTestAnnotations() + # The right count of rows is not enough: the estimators read annotation + # rows by the reference's variant order. + relocate <- function(starts) { + AnnotationMatrix( + SummarizedExperiment::assay(annot, "annotations"), + GenomicRanges::GRanges( + "chr1", + IRanges::IRanges(starts, width = 1L) + ), + as.data.frame(SummarizedExperiment::colData(annot)), + genome = "hg19" + ) + } + expect_error( + estimateH2( + ss, + ref, + method = "lder", + annotations = relocate(GenomicRanges::start(ref) + 1L) + ), + "`annotations` and the LD reference disagree at 20 of 20 position" + ) + expect_error( + estimateH2( + ss, + ref, + method = "lder", + annotations = relocate(rev(GenomicRanges::start(ref))) + ), + "`annotations` and the LD reference disagree" + ) +}) + test_that("estimateH2 rejects a genome build mismatch", { ref <- makeTestEigenRef() ss <- makeTestSumstatsForRef(ref) @@ -929,71 +945,6 @@ test_that(".jackknifeSeFromLoo equals the pseudo-value jackknife", { ) }) -# ============================================================================= -# computeBaselineEnrichment -# ============================================================================= - -test_that("computeBaselineEnrichment computes enrichment and propSnps", { - M <- 100 - baseline_mat <- matrix(0, nrow = M, ncol = 2) - baseline_mat[1:50, 1] <- 1 - baseline_mat[, 2] <- 1 - tau <- c(0.01, 0.005) - tauSe <- c(0.002, 0.001) - h2 <- 0.5 - annot_names <- c("annot1", "base") - res <- pecotmr:::computeBaselineEnrichment( - tau, - tauSe, - NULL, - baseline_mat, - annot_names, - h2 - ) - expect_s3_class(res, "data.frame") - expected_cols <- c( - "annotation", - "tau", - "tauSe", - "enrichment", - "enrichmentSe", - "enrichmentP", - "propH2", - "propSnps" - ) - expect_named(res, expected_cols) - expect_equal(nrow(res), 2) - expect_equal(res$enrichment, tau * M / h2) - expect_equal(res$propSnps, c(0.5, 1.0)) -}) - -test_that("computeBaselineEnrichment uses jackknife blocks when provided", { - M <- 100 - nBlocks <- 5 - baseline_mat <- matrix(0, nrow = M, ncol = 2) - baseline_mat[1:50, 1] <- 1 - baseline_mat[, 2] <- 1 - tau <- c(0.01, 0.005) - tauSe <- c(0.002, 0.001) - h2 <- 0.5 - annot_names <- c("annot1", "base") - annotationJackknifeCoefs <- matrix( - rep(tau, each = nBlocks), - nrow = nBlocks, - ncol = 2 - ) - res <- pecotmr:::computeBaselineEnrichment( - tau, - tauSe, - annotationJackknifeCoefs, - baseline_mat, - annot_names, - h2 - ) - # With constant annotationJackknifeCoefs, enrichmentSe should be 0 - expect_equal(res$enrichmentSe, c(0, 0)) -}) - # ============================================================================= # standardizeTauStar # ============================================================================= @@ -1404,11 +1355,12 @@ makeCoverageAnnot <- function( AnnotationMatrix(mat, snp_gr, meta, genome = "hg19") } -# The three estimators, each with the reference it reads and the baseline +# The four estimators, each with the reference it reads and the baseline # its annotations take. An all-ones baseline makes the LDER and HDL -# eigenvalue-score column the eigenvalue itself; for g-LDSC it would repeat -# the base LD score column and leave the design singular, so g-LDSC takes a -# half-on/half-off baseline instead. +# eigenvalue-score column the eigenvalue itself; for g-LDSC and S-LDSC it +# would repeat the base LD score column and leave the design singular, so +# they take a half-on/half-off baseline instead. S-LDSC reports its local +# heritability per variant rather than per block (`perBlockLocal`). .h2Runs <- list( lder = list( fn = pecotmr:::lderUnivariate, @@ -1424,6 +1376,12 @@ makeCoverageAnnot <- function( fn = pecotmr:::hdlUnivariate, ref = "eigen_ref", baseline = "ones" + ), + sldsc = list( + fn = pecotmr:::sldscUnivariate, + ref = "ld_score_ref", + baseline = "spatial", + perBlockLocal = FALSE ) ) @@ -1487,6 +1445,9 @@ test_that("lderUnivariate intercept is near zero for well-calibrated data", { test_that("each univariate estimator with local = TRUE returns per-block h2", { for (method in names(.h2Runs)) { + if (isFALSE(.h2Runs[[method]]$perBlockLocal)) { + next + } res <- .h2Run(method, dat, local = TRUE) expect_true(is.data.frame(res$local), info = method) expect_true( @@ -1543,6 +1504,9 @@ test_that("each univariate estimator reports enrichment and score statistics", { test_that("each estimator with annotations and local = TRUE gives local h2", { for (method in names(.h2Runs)) { + if (isFALSE(.h2Runs[[method]]$perBlockLocal)) { + next + } annot <- .h2RunAnnot(method, dat_annot, 1L) res <- .h2Run(method, dat_annot, annotations = annot, local = TRUE) expect_true(is.data.frame(res$local), info = method) @@ -1744,6 +1708,261 @@ test_that("lderUnivariate recovers a known h2 (deterministic, seed = 1)", { expect_equal(mean(ests), 0.389, tolerance = 0.04) }) +# =========================================================================== +# Candidate-annotation score tests: calibration and power +# +# A candidate's score is calibrated by the spread of its LD blocks' scores, so +# under the null its z is close to N(0, 1) whatever the regression weights +# get wrong. Both LD-score estimators are checked through estimateH2(). +# =========================================================================== + +# A half-on/half-off baseline annotation plus the candidate `cand`. +.h2ScoreAnnot <- function(M, cand) { + gr <- GenomicRanges::GRanges( + "chr1", + IRanges::IRanges(start = as.integer(seq_len(M) * 100L), width = 1L) + ) + mat <- cbind(half = as.integer(seq_len(M) <= M / 2), cand = cand) + meta <- data.frame( + name = c("half", "cand"), + tier = c("baseline", "candidate"), + type = "binary" + ) + AnnotationMatrix(mat, gr, meta, genome = "hg19") +} + +# Simulated z-scores over the recovery reference as a GwasSumStats. +.h2ScoreSumstats <- function(d, z) { + df <- data.frame( + SNP = paste0("rs", seq_len(d$M)), + CHR = "chr1", + BP = as.integer(seq_len(d$M) * 100L), + A1 = "A", + A2 = "G", + Z = z, + N = d$N + ) + GwasSumStats( + studyName = "sim", + entry = list(.dfToGwasGr(df)), + genome = "hg19", + ldReference = makeTestGwasGenotypeHandle() + ) +} + +# The reference each method reads. +.h2MethodRef <- function(d, method) { + if (method %in% c("lder", "hdl")) d$eigenRef else d$scoreRef +} + +# Score z of a random 30% candidate whose variants carry `enrich` times the +# per-variant heritability of the rest, for each method, over `nRep` traits. +.h2CandidateZ <- function( + d, + enrich, + nRep, + methods = c("sldsc", "gldsc", "lder", "hdl") +) { + t(replicate(nRep, { + cand <- stats::rbinom(d$M, 1, 0.3) + perSnp <- 0.3 / d$M * ifelse(cand == 1L, enrich, 1) + ss <- .h2ScoreSumstats(d, d$simZ(perSnp)) + annot <- .h2ScoreAnnot(d$M, cand) + vapply( + methods, + function(m) { + scoreStats(suppressWarnings(estimateH2( + ss, + .h2MethodRef(d, m), + method = m, + annotations = annot + )))$z + }, + numeric(1) + ) + })) +} + +test_that("candidate score z is calibrated under the null", { + d <- .h2RecoveryRefs(nBlocks = 20L) + set.seed(11) + z <- .h2CandidateZ(d, enrich = 1, nRep = 60L) + for (method in colnames(z)) { + expect_lt(abs(mean(z[, method])), 0.25) + expect_gt(stats::sd(z[, method]), 0.7) + expect_lt(stats::sd(z[, method]), 1.35) + } +}) + +test_that("candidate score z detects an enriched candidate", { + d <- .h2RecoveryRefs(nBlocks = 20L) + set.seed(12) + z <- .h2CandidateZ(d, enrich = 4, nRep = 15L) + expect_gt(mean(z[, "gldsc"]), 3) + # LDER and HDL read the same eigen-decomposition, and on this reference + # detect it less sharply than g-LDSC's GLS does. + expect_gt(mean(z[, "lder"]), 1.5) + expect_gt(mean(z[, "hdl"]), 1.5) + # S-LDSC spends its weight on the base score and so tests less sharply + # on a reference this small, but still points the right way. + expect_gt(mean(z[, "sldsc"]), 0.5) +}) + +# =========================================================================== +# The baseline design: an all-ones base column unless the baseline spans it +# =========================================================================== + +# A baseline of the given columns over the recovery reference. +.h2BaselineOf <- function(d, cols) { + gr <- GenomicRanges::GRanges( + "chr1", + IRanges::IRanges(start = as.integer(seq_len(d$M) * 100L), width = 1L) + ) + AnnotationMatrix( + cols, + gr, + data.frame(name = colnames(cols), tier = "baseline", type = "binary"), + genome = "hg19" + ) +} + +.h2FitAll <- function(d, ss, annotations) { + lapply( + set_names(c("lder", "hdl", "gldsc", "sldsc")), + function(m) { + suppressWarnings(estimateH2( + ss, + .h2MethodRef(d, m), + method = m, + annotations = annotations + )) + } + ) +} + +test_that("every estimator fits a lone annotation beside a base column", { + # One annotation and the partition it makes with its complement span the + # same designs once the base is added; without it, LDER and HDL used to + # model the uncovered half as carrying no heritability. + d <- .h2RecoveryRefs(nBlocks = 10L) + half <- as.integer(seq_len(d$M) <= d$M / 2) + set.seed(9) + ss <- .h2ScoreSumstats(d, d$simZ(ifelse(half == 1L, 0.5, 0.2) / d$M)) + lone <- .h2FitAll(d, ss, .h2BaselineOf(d, cbind(half = half))) + pair <- .h2FitAll( + d, + ss, + .h2BaselineOf(d, cbind(half = half, rest = 1L - half)) + ) + for (m in c("lder", "hdl")) { + expect_equal( + heritabilityEstimate(lone[[m]]), + heritabilityEstimate(pair[[m]]), + tolerance = 1e-3, + info = m + ) + lonePart <- stratifiedHeritabilityEnrichment(lone[[m]]) + pairPart <- stratifiedHeritabilityEnrichment(pair[[m]]) + expect_equal( + lonePart$enrichment, + pairPart$enrichment[pairPart$annotation == "half"], + tolerance = 1e-3, + info = m + ) + } + # Only the user's annotations are reported, never the added base. + for (m in names(lone)) { + expect_identical( + stratifiedHeritabilityEnrichment(lone[[m]])$annotation, + "half", + info = m + ) + } +}) + +test_that("an all-ones baseline fits as the unstratified model does", { + d <- .h2RecoveryRefs(nBlocks = 10L) + set.seed(9) + ss <- .h2ScoreSumstats(d, d$simZ(rep(0.35 / d$M, d$M))) + ones <- .h2FitAll(d, ss, .h2BaselineOf(d, cbind(ones = rep(1L, d$M)))) + none <- .h2FitAll(d, ss, NULL) + for (m in names(ones)) { + # S-LDSC's one design column is then the all-ones annotation's + # stratified score, formed from the LD, rather than the stored base + # score: the two agree to rounding of the LD. + expect_equal( + heritabilityEstimate(ones[[m]]), + heritabilityEstimate(none[[m]]), + tolerance = 1e-4, + info = m + ) + expect_equal( + stratifiedHeritabilityEnrichment(ones[[m]])$enrichment, + 1, + tolerance = 1e-6, + info = m + ) + } +}) + +test_that("HDL can estimate a depleted annotation", { + # Beside the base an annotation's parameter is its excess over the + # genome-wide rate; a lower bound of 0 used to forbid depletion. + d <- .h2RecoveryRefs(nBlocks = 10L) + half <- as.integer(seq_len(d$M) <= d$M / 2) + set.seed(4) + ss <- .h2ScoreSumstats(d, d$simZ(ifelse(half == 1L, 0.1, 0.6) / d$M)) + fit <- suppressWarnings(estimateH2( + ss, + d$eigenRef, + method = "hdl", + annotations = .h2BaselineOf(d, cbind(half = half)) + )) + part <- stratifiedHeritabilityEnrichment(fit) + expect_lt(part$tau, 0) + expect_lt(part$enrichment, 1) +}) + +test_that("S-LDSC's candidate score test needs the reference's LD", { + # The recovery reference's scores, without the LD they came from. + d <- .h2RecoveryRefs(nBlocks = 4L) + ref <- LdScore( + ldBlocks = ldBlocks(d$scoreRef), + snpInfo = data.frame( + SNP = paste0("rs", seq_len(d$M)), + CHR = "chr1", + BP = as.integer(seq_len(d$M) * 100L), + A1 = "A", + A2 = "G" + ), + nSamples = 500000L, + inSample = FALSE, + genome = "hg19", + ldScores = S4Vectors::mcols(d$scoreRef)$ldScores, + ldScoreWeights = rep(1, d$M) + ) + # Candidates only: the unstratified fit needs no LD, the score does. + cand <- matrix(stats::rbinom(d$M, 1, 0.3), dimnames = list(NULL, "cand")) + annot <- AnnotationMatrix( + cand, + GenomicRanges::GRanges( + "chr1", + IRanges::IRanges(as.integer(seq_len(d$M) * 100L), width = 1L) + ), + data.frame(name = "cand", tier = "candidate", type = "binary"), + genome = "hg19" + ) + expect_error( + estimateH2( + .h2ScoreSumstats(d, stats::rnorm(d$M)), + ref, + method = "sldsc", + annotations = annot + ), + "candidate-annotation score test needs each LD block's LD" + ) +}) + test_that("gldscUnivariate recovers a known h2 (deterministic, seed = 1)", { d <- .h2RecoveryRefs() uni <- rep(0.4 / d$M, d$M) @@ -2033,9 +2252,8 @@ test_that("partitioned S-LDSC reproduces the original ldsc to 1e-5", { ref <- .h2ParityRef()$score M <- length(ref) inA <- as.integer(seq_len(M) <= M / 2) - baselineMat <- matrix(inA, ncol = 1, dimnames = list(NULL, "annotA")) - scores <- pecotmr:::.sldscScoreMatrix(ref, baselineMat, M) A <- cbind(base = 1, annotA = inA) + scores <- pecotmr:::.sldscScoreMatrix(ref, A) reference <- list( list( @@ -2088,11 +2306,7 @@ test_that("the two S-LDSC routes differ, as the original ldsc's do", { inA <- as.integer(seq_len(M) <= M / 2) part <- pecotmr:::.sldscFit( z^2, - pecotmr:::.sldscScoreMatrix( - ref, - matrix(inA, ncol = 1, dimnames = list(NULL, "annotA")), - M - ), + pecotmr:::.sldscScoreMatrix(ref, cbind(base = 1, annotA = inA)), scores[, 1], 10000, cbind(base = 1, annotA = inA), @@ -2264,7 +2478,7 @@ test_that("the chi2 filter is abandoned when too few variants survive it", { ) expect_setequal( names(out), - c("tau", "h2", "estH", "intercept", "coef") + c("tau", "h2", "intercept", "coef") ) expect_false(is.na(out$h2)) }) @@ -2311,7 +2525,7 @@ test_that("the partitioned chi2 filter is abandoned when too few survive", { ) expect_setequal( names(out), - c("tau", "h2", "estH", "intercept", "coef") + c("tau", "h2", "intercept", "coef") ) }) @@ -2391,19 +2605,6 @@ test_that(".lderLocalBlock reports NA for a block too small to fit", { expect_true(is.na(out$h2LocalSe)) }) -test_that(".h2Enrichment names unnamed annotation columns positionally", { - baselineMat <- matrix(c(1, 0, 1, 1), nrow = 2L) - expect_null(colnames(baselineMat)) - out <- pecotmr:::.h2Enrichment( - baselineMat, - tau = c(0.1, 0.2), - tauSe = c(0.01, 0.02), - annotationJackknifeCoefs = matrix(c(0.1, 0.2, 0.1, 0.2), nrow = 2L), - h2 = 0.3 - ) - expect_equal(out$annotation, c("annot_1", "annot_2")) -}) - test_that(".sldscBlockIndex errors when no block covers a variant", { n <- 6L snpInfo <- data.frame( @@ -2455,7 +2656,7 @@ test_that(".sldscIrwls derives its own starting weights when none are given", { intercept = 1, w0 = NULL ) - expect_setequal(names(fit), c("coef", "intercept")) + expect_setequal(names(fit), c("coef", "intercept", "w")) expect_true(all(is.finite(fit$coef))) }) diff --git a/tests/testthat/test_qtlEnrichmentPipeline.R b/tests/testthat/test_qtlEnrichmentPipeline.R index 28dd8846..f45530dd 100644 --- a/tests/testthat/test_qtlEnrichmentPipeline.R +++ b/tests/testthat/test_qtlEnrichmentPipeline.R @@ -224,7 +224,7 @@ test_that("qtlEnrichmentPipeline: keys a QTL outcome side by its trait", { ldReference = .qep_makeHandle() ) local_mocked_bindings( - qtlEnrichment = .qep_mockEnrichment(2.0), + .qtlEnrichmentCoded = .qep_mockEnrichment(2.0), .package = "pecotmr" ) out <- qtlEnrichmentPipeline( @@ -239,7 +239,7 @@ test_that("qtlEnrichmentPipeline: keys a QTL outcome side by its trait", { test_that("qtlEnrichmentPipeline: pairs two GWAS collections", { local_mocked_bindings( - qtlEnrichment = .qep_mockEnrichment(2.0), + .qtlEnrichmentCoded = .qep_mockEnrichment(2.0), .package = "pecotmr" ) out <- qtlEnrichmentPipeline( @@ -261,7 +261,7 @@ test_that("qtlEnrichmentPipeline: a QTL outcome may carry no ldReference", { # The RSS-derived requirement is a GWAS-side contract; an individual-level # QTL outcome has no panel to check. local_mocked_bindings( - qtlEnrichment = .qep_mockEnrichment(2.0), + .qtlEnrichmentCoded = .qep_mockEnrichment(2.0), .package = "pecotmr" ) out <- qtlEnrichmentPipeline( @@ -339,7 +339,7 @@ test_that("qtlEnrichmentPipeline: returns one row per (gwasStudy, qtlStudy, qtlC gfmr <- .qep_makeGwasFmr() qfmr <- .qep_makeQtlFmr(contexts = c("c1", "c2")) local_mocked_bindings( - qtlEnrichment = .qep_mockEnrichment(2.0), + .qtlEnrichmentCoded = .qep_mockEnrichment(2.0), .package = "pecotmr" ) out <- qtlEnrichmentPipeline( @@ -372,7 +372,7 @@ test_that("qtlEnrichmentPipeline: distinguishes two QTL studies that share a con gfmr <- .qep_makeGwasFmr() capturedRegions <- list() local_mocked_bindings( - qtlEnrichment = function(gwasPip, susieQtlRegions, ...) { + .qtlEnrichmentCoded = function(gwasPip, susieQtlRegions, ...) { capturedRegions[[length(capturedRegions) + 1L]] <<- susieQtlRegions .qep_mockEnrichment(2.0)() }, @@ -393,7 +393,7 @@ test_that("qtlEnrichmentPipeline: qtlEnrichment failure produces a warning + ski gfmr <- .qep_makeGwasFmr() qfmr <- .qep_makeQtlFmr() local_mocked_bindings( - qtlEnrichment = function(...) stop("synthetic failure"), + .qtlEnrichmentCoded = function(...) stop("synthetic failure"), .package = "pecotmr" ) expect_warning( @@ -509,11 +509,117 @@ test_that(".enrBuildGwasPipVector: conflicting PIPs across blocks errors", { ldReference = .qep_makeHandle() ) expect_error( - pecotmr:::.enrBuildGwasPipVector(g, .qep_gwasIdent("G1")), + pecotmr:::.enrBuildGwasPipVector(g, .qep_gwasIdent("G1"), "error"), "conflicting PIPs" ) }) +# =========================================================================== +# qtlEnrichmentPipeline(): a variant repeated across GWAS blocks +# =========================================================================== + +# Two GWAS blocks sharing their boundary variant chr1:200, to which each +# block's fit gives its own PIP. `region` gives the blocks' windows. +.qep_boundaryGwasFmr <- function(region = NULL, pips = c(0.3, 0.6)) { + e1 <- .qep_makeFmEntry( + variant_ids = c("chr1:100:A:G", "chr1:200:A:G"), + pip = c(0.5, pips[[1L]]) + ) + e2 <- .qep_makeFmEntry( + variant_ids = c("chr1:200:A:G", "chr1:300:A:G"), + pip = c(pips[[2L]], 0.1) + ) + GwasFineMappingResult( + studyName = c("G1", "G1"), + method = c("susie", "susie"), + entry = list(e1, e2), + region = region, + ldReference = .qep_makeHandle() + ) +} + +.qep_windows <- function(starts, ends) { + GenomicRanges::GRanges("chr1", IRanges::IRanges(starts, ends)) +} + +# The GWAS PIP vector qtlEnrichmentPipeline() hands the estimator. +.qep_capturedGwasPip <- function(gwasFmr, ...) { + captured <- NULL + mock <- .qep_mockEnrichment() + local_mocked_bindings( + .qtlEnrichmentCoded = function(gwasPip, susieQtlRegions, ...) { + # The pipeline hands the PIPs with their variants; named here as + # the variants' ids. + variants <- list(...)$gwasVariants + captured <<- set_names( + gwasPip, + pecotmr:::.variantTableIds(variants) + ) + mock(gwasPip, susieQtlRegions, ...) + }, + .package = "pecotmr" + ) + qtlEnrichmentPipeline(gwasFmr, .qep_makeQtlFmr(), verbose = FALSE, ...) + captured +} + +test_that("qtlEnrichmentPipeline: keeps the largest of conflicting PIPs", { + pip <- .qep_capturedGwasPip(.qep_boundaryGwasFmr()) + expect_equal( + pip, + c(`chr1:100:A:G` = 0.5, `chr1:200:A:G` = 0.6, `chr1:300:A:G` = 0.1) + ) +}) + +test_that("qtlEnrichmentPipeline: duplicatePips = 'error' refuses conflicts", { + expect_error( + .qep_capturedGwasPip(.qep_boundaryGwasFmr(), duplicatePips = "error"), + "'chr1:200:A:G' appears with conflicting PIPs" + ) + expect_error( + .qep_capturedGwasPip(.qep_boundaryGwasFmr(), duplicatePips = "first"), + "must be one of" + ) +}) + +test_that("qtlEnrichmentPipeline: 'blockEnd' keeps the block ending at the variant", { + # The upstream block's window ends at chr1:200; the downstream one starts + # there. + pip <- .qep_capturedGwasPip( + .qep_boundaryGwasFmr(.qep_windows(c(1, 200), c(200, 400))), + duplicatePips = "blockEnd" + ) + expect_equal(pip[["chr1:200:A:G"]], 0.3) + expect_length(pip, 3L) +}) + +test_that("qtlEnrichmentPipeline: 'blockEnd' refuses a copy it cannot choose", { + # No window given, or none ending at the variant: nothing to decide by. + for (region in list(NULL, .qep_windows(c(1, 150), c(250, 400)))) { + expect_error( + .qep_capturedGwasPip( + .qep_boundaryGwasFmr(region), + duplicatePips = "blockEnd" + ), + "cannot choose between them: 0 of its blocks" + ) + } +}) + +test_that("qtlEnrichmentPipeline: agreeing copies merge under every policy", { + for (policy in c("max", "error", "blockEnd")) { + pip <- .qep_capturedGwasPip( + .qep_boundaryGwasFmr(pips = c(0.3, 0.3)), + duplicatePips = policy + ) + expect_equal( + pip, + c(`chr1:100:A:G` = 0.5, `chr1:200:A:G` = 0.3, `chr1:300:A:G` = 0.1), + info = policy + ) + } +}) + test_that(".enrBuildQtlRegionsList: returns per-entry fit shapes for a (study, context) hit", { qfmr <- .qep_makeQtlFmr(contexts = c("c1", "c2")) out <- pecotmr:::.enrBuildQtlRegionsList(qfmr, .qep_qtlIdent("Q1", "c1")) @@ -680,6 +786,7 @@ test_that("qtlEnrichment: errors when piGwas resolves to zero", { qtlEnrichment( gwasPip = zeroGwas, susieQtlRegions = fx$susieQtlRegions, + numGwas = 5000, piQtl = 0.5, BPPARAM = BiocParallel::SerialParam(), verbose = FALSE @@ -768,6 +875,721 @@ test_that("qtlEnrichment: tracks unmatched QTL variants, either alignNames", { }) +# One-hot QTL fixtures for the enrichment kernel. Every alpha row puts all of +# its mass on one variant, so each imputation round samples the same variants +# whatever the random stream: the estimates are exactly reproducible, and do +# not depend on how a standard library implements std::discrete_distribution. + +.qeh_ids <- function(n = 200L) { + sprintf("chr1:%d:A:G", 100L * seq_len(n)) +} + +# A GWAS PIP vector over .qeh_ids(): background 0.001, with high PIPs on the +# last ten variants. +.qeh_gwasPip <- function() { + stats::setNames( + c( + rep(0.001, 190), + 0.9, + 0.8, + 0.5, + 0.3, + 0.2, + 0.1, + 0.05, + 0.02, + 0.01, + 0.6 + ), + .qeh_ids() + ) +} + +# A region over variants `idx` of the GWAS panel whose effects each sit on the +# variant at position `hits[l]` within the region. `ids` relabels the region's +# variants, e.g. to put some outside the GWAS panel. +.qeh_oneHotRegion <- function( + idx, + hits, + priorVariance = c(0.5, 0.2)[seq_along(hits)], + ids = .qeh_ids()[idx] +) { + alpha <- matrix(0, length(hits), length(idx)) + alpha[cbind(seq_along(hits), hits)] <- 1 + list( + alpha = alpha, + pip = stats::setNames(as.numeric(colSums(alpha) > 0), ids), + prior_variance = priorVariance + ) +} + +# Three regions: r1's effects sit on variants 191 (GWAS PIP 0.9) and 152, r2's +# on 192 (0.8) and 195 (0.2), r3's on two background variants. +.qeh_oneHotRegions <- function() { + list( + r1 = .qeh_oneHotRegion(150:200, c(42, 3)), + r2 = .qeh_oneHotRegion(170:200, c(23, 26)), + r3 = .qeh_oneHotRegion(1:60, c(5, 40)) + ) +} + +# =========================================================================== +# qtlEnrichment(): pinned estimates, null fits, fit validation, threads +# Built on the one-hot fixtures above, whose sampling is +# deterministic. +# =========================================================================== + +.qep_oneHotRun <- function( + regions = .qeh_oneHotRegions(), + numGwas = 5000, + piQtl = 0.01, + ... +) { + qtlEnrichment( + .qeh_gwasPip(), + regions, + numGwas = numGwas, + piQtl = piQtl, + impN = 3, + seed = 1L, + verbose = FALSE, + ... + ) +} + +test_that("qtlEnrichment: one-hot fixture reproduces the pinned estimates", { + # Recorded from the kernel before its fits were integer-coded and null + # fits allowed. Without shrinkage the shrunk and unshrunk a1 coincide. + pinned <- c( + `Intercept` = -21.896577386392181, + `sd (intercept)` = 11.186832846318783, + `Enrichment (no shrinkage)` = 19.284745626108926, + `Enrichment (w/ shrinkage)` = 19.284745626108926, + `sd (no shrinkage)` = 13.735002410315799, + `sd (w/ shrinkage)` = 13.735002410315799, + `Alternative (coloc) p1` = 3.0624743716206618e-10, + `Alternative (coloc) p2` = 0.0093161918064975369, + `Alternative (coloc) p12` = 0.00068380819350246172, + `Effective MI rounds` = 3 + ) + res <- .qep_oneHotRun(lambda = 0) + expect_equal(unlist(res[names(pinned)]), pinned, tolerance = 1e-10) +}) + +test_that("qtlEnrichment: one-hot fixture reproduces the pinned shrunk a1", { + keys <- c( + "Enrichment (no shrinkage)", + "Enrichment (w/ shrinkage)", + "sd (no shrinkage)", + "sd (w/ shrinkage)" + ) + single <- .qep_oneHotRun(lambda = 1) + double <- .qep_oneHotRun( + lambda = 1, + doubleShrinkage = TRUE, + besselCorrection = FALSE + ) + expect_equal( + unname(unlist(single[keys])), + c( + 19.284745626108926, + 0.10168582132370414, + 13.735002410315799, + 0.99736008393071596 + ), + tolerance = 1e-10 + ) + expect_equal( + unname(unlist(double[keys])), + c( + 19.284745626108926, + 0.050977308844208112, + 13.735002410315799, + 0.70617157949200415 + ), + tolerance = 1e-10 + ) +}) + +test_that("qtlEnrichment: a null QTL fit samples nothing instead of aborting", { + keys <- c( + "Intercept", + "Enrichment (no shrinkage)", + "sd (no shrinkage)", + "Alternative (coloc) p12" + ) + base <- .qep_oneHotRun(lambda = 0) + # Every effect of prior variance 0: the kernel used to stop on this. + nullFit <- .qeh_oneHotRegion(61:80, c(1, 2), priorVariance = c(0, 0)) + res <- .qep_oneHotRun( + c(.qeh_oneHotRegions(), list(n = nullFit)), + lambda = 0 + ) + expect_equal(unlist(res[keys]), unlist(base[keys])) + expect_equal(res[["Null QTL fits"]], 1L) + # A fit already trimmed to its non-null effects has a 0-row alpha. + trimmed <- list( + alpha = matrix(0, 0L, 3L), + pip = stats::setNames(rep(0, 3), .qeh_ids()[61:63]), + prior_variance = numeric(0) + ) + res <- .qep_oneHotRun( + c(.qeh_oneHotRegions(), list(n = trimmed)), + lambda = 0 + ) + expect_equal(unlist(res[keys]), unlist(base[keys])) +}) + +test_that("qtlEnrichment: refuses a tuple made only of null fits", { + nullFit <- .qeh_oneHotRegion(1:10, c(1, 2), priorVariance = c(0, 0)) + expect_error(.qep_oneHotRun(list(a = nullFit)), "nothing to sample") +}) + +test_that("qtlEnrichment: refuses malformed fits, naming them", { + ok <- .qeh_oneHotRegion(1:10, c(1, 2)) + run <- function(bad) .qep_oneHotRun(list(good = ok, bad = bad)) + # A null_weight fit carries one more alpha column than it has variants. + extraColumn <- ok + extraColumn$alpha <- cbind(ok$alpha, 0) + expect_error(run(extraColumn), "bad: alpha has 11 columns for 10 pip") + shortV <- ok + shortV$prior_variance <- 0.5 + expect_error(run(shortV), "bad: alpha has 2 rows for 1 prior variances") + infV <- ok + infV$prior_variance <- c(Inf, 0.2) + expect_error(run(infV), "bad: prior variances must be finite") + nanAlpha <- ok + nanAlpha$alpha[1, 2] <- NaN + expect_error(run(nanAlpha), "bad: alpha must be finite and non-negative") + negativeAlpha <- ok + negativeAlpha$alpha[1, 1:2] <- c(1.1, -0.1) + expect_error( + run(negativeAlpha), + "bad: alpha must be finite and non-negative" + ) + offSum <- ok + offSum$alpha[1, ] <- offSum$alpha[1, ] / 2 + expect_error(run(offSum), "bad: an alpha row of positive prior variance") +}) + +test_that("qtlEnrichment: estimates do not depend on the thread count", { + skip_on_os("windows") + fx <- .qep_makeRealKernelInputs() + run <- function(bp) { + qtlEnrichment( + fx$gwasPip, + fx$susieQtlRegions, + numGwas = 5000, + piQtl = 0.5, + impN = 6, + BPPARAM = bp, + seed = 7L, + verbose = FALSE + ) + } + expect_identical( + run(BiocParallel::SerialParam()), + run(BiocParallel::MulticoreParam(2)) + ) +}) + +test_that("qtlEnrichment: verbose = FALSE is silent", { + expect_silent(.qep_oneHotRun()) +}) + +test_that("qtlEnrichment: reports per-round diagnostics", { + # r4's second effect sits on a variant the GWAS vector does not carry: + # one of the eight variants sampled each round. + r4 <- .qeh_oneHotRegion( + 1:10, + c(3, 7), + ids = c(.qeh_ids()[1:5], sprintf("chr2:%d:C:T", 1:5)) + ) + regions <- c(.qeh_oneHotRegions(), list(r4 = r4)) + res <- .qep_oneHotRun(regions, lambda = 0) + expect_equal(res[["Missing proportion per MI round"]], rep(1 / 8, 3)) + expect_identical(res[["EM converged per MI round"]], rep(TRUE, 3)) + expect_identical(res[["Null QTL fits"]], 0L) + expect_identical( + res$unused_xqtl_variants$r4, + sprintf("chr2:%d:C:T", 1:5) + ) + expect_null(res$unused_xqtl_variants$r1) + msgs <- testthat::capture_messages(qtlEnrichment( + .qeh_gwasPip(), + regions, + numGwas = 5000, + piQtl = 0.01, + impN = 3, + seed = 1L, + verbose = TRUE + )) + expect_match( + paste(msgs, collapse = ""), + "missing from the GWAS PIP vector: 0.125" + ) +}) + +# An R transcription of fastenloc's enrichment estimator +# (github.com/xqwen/fastenloc, src/controller.cc: run_EM and the +# multiple-imputation post-processing of enrich_est), to check the C++ kernel +# against the original method. It takes the variants each imputation round +# samples directly, so a test can feed it what a one-hot fixture (above) +# makes every round of the kernel sample. + +# One round's EM. `gwasPip` and `eqtlSample` run over every variant fastenloc +# reads, GWAS and QTL alike; a QTL variant the GWAS file lacks has GWAS PIP 0. +.flr_runEm <- function(gwasPip, eqtlSample, pGwas, pEqtl, totalSnp) { + a0 <- log(pGwas / (1 - pGwas)) + a1 <- 0 + r0 <- exp(a0) + r1 <- exp(a0 + a1) + rm <- pGwas / (1 - pGwas) + val <- gwasPip + val[val == 1] <- 1 - 1e-8 + odds <- val / (1 - val) + sampled <- eqtlSample == 1 + repeat { + e0g0 <- (1 - pGwas) * (1 - pEqtl) + e0g1 <- (1 - pEqtl) * pGwas + e1g0 <- (1 - pGwas) * pEqtl + e1g1 <- pGwas * pEqtl + post0 <- r0 * (odds[!sampled] / rm) + post0 <- post0 / (1 + post0) + post1 <- r1 * (odds[sampled] / rm) + post1 <- post1 / (1 + post1) + e0g1 <- e0g1 + sum(post0) + e0g0 <- e0g0 + sum(1 - post0) + e1g1 <- e1g1 + sum(post1) + e1g0 <- e1g0 + sum(1 - post1) + e0g0 <- e0g0 + totalSnp - (e0g0 + e0g1 + e1g0 + e1g1) + a1New <- log(e1g1 * e0g0 / (e1g0 * e0g1)) + if (abs(a1New - a1) < 0.01) { + # fastenloc keeps the previous iteration's a0 here. + return(c( + a0 = a0, + a1 = a1New, + v0 = 1 / e0g1 + 1 / e0g0, + v1 = 1 / e0g0 + 1 / e1g0 + 1 / e1g1 + 1 / e0g1 + )) + } + a1 <- a1New + a0 <- log(e0g1 / e0g0) + r0 <- exp(a0) + r1 <- exp(a0 + a1) + } +} + +# The post-processing of the rounds' estimates (a matrix with rows a0, a1, v0, +# v1): outlier removal on the shrunk a1, which fastenloc's command line always +# applies; Rubin's rules; the intercept from the unshrunk a1; double +# shrinkage; and the coloc priors from the intercept and the shrunk a1. +# `lambda` is fastenloc's -s, where 0 means no shrinkage (a prior variance of +# 1e16). fastenloc takes the outliers' population sd in one pass; two passes +# give the same value without its cancellation. +.flr_combine <- function(rounds, pGwas, pEqtl, lambda) { + pv <- if (lambda == 0) 1e16 else 1 / lambda + shrunk <- rounds["a1", ] * pv / (pv + rounds["v1", ]) + mu <- mean(shrunk) + sdev <- sqrt(mean((shrunk - mu)^2)) + rounds <- rounds[, !(abs(shrunk - mu) > 3 * sdev), drop = FALSE] + m <- ncol(rounds) + a0 <- rounds["a0", ] + a1 <- rounds["a1", ] + v1 <- rounds["v1", ] + postA1 <- a1 * pv / (pv + v1) + postVar <- 1 / (1 / pv + 1 / v1) + sd0 <- sqrt(mean(rounds["v0", ]) + stats::var(a0) * (m + 1) / m) + sd1 <- sqrt(mean(v1) + stats::var(a1) * (m + 1) / m) + sd1Shrink <- sqrt(mean(postVar) + stats::var(postA1) * (m + 1) / m) + intercept <- log(pGwas / (1 + pEqtl * exp(mean(a1)) - pEqtl - pGwas)) + a1Shrink <- pv * mean(postA1) / (pv + sd1Shrink^2) + sd1Shrink <- sqrt(1 / (1 / pv + 1 / sd1Shrink^2)) + c( + `Intercept` = intercept, + `sd (intercept)` = sd0, + `Enrichment (no shrinkage)` = mean(a1), + `Enrichment (w/ shrinkage)` = a1Shrink, + `sd (no shrinkage)` = sd1, + `sd (w/ shrinkage)` = sd1Shrink, + `Alternative (coloc) p1` = (1 - pEqtl) * + exp(intercept) / + (1 + exp(intercept)), + `Alternative (coloc) p2` = pEqtl / (1 + exp(intercept + a1Shrink)), + `Alternative (coloc) p12` = pEqtl * + exp(intercept + a1Shrink) / + (1 + exp(intercept + a1Shrink)), + `Effective MI rounds` = m + ) +} + +# fastenloc on qtlEnrichment()'s inputs, every round sampling the variant ids +# `sampled`. Its variants are the GWAS ones plus the QTL ones they lack, its +# total is -total_variants raised to their number, and its priors are the +# GWAS and QTL PIP mass over that total. +.flr_reference <- function( + gwasPip, + regions, + sampled, + numGwas = NULL, + lambda = 1, + impN = 3 +) { + qtlIds <- unique(unlist( + lapply(regions, function(x) names(x$pip)), + use.names = FALSE + )) + variants <- c(names(gwasPip), setdiff(qtlIds, names(gwasPip))) + pip <- c(unname(gwasPip), rep(0, length(variants) - length(gwasPip))) + totalSnp <- max(if (is.null(numGwas)) 0 else numGwas, length(variants)) + pGwas <- sum(gwasPip) / totalSnp + pEqtl <- sum(unlist(lapply(regions, `[[`, "pip"))) / totalSnp + round <- .flr_runEm( + pip, + as.integer(variants %in% sampled), + pGwas, + pEqtl, + totalSnp + ) + rounds <- matrix( + round, + nrow = length(round), + ncol = impN, + dimnames = list(names(round), NULL) + ) + .flr_combine(rounds, pGwas, pEqtl, lambda) +} + +# The variants every round samples from one-hot regions: the hit of each +# effect with positive prior variance. +.flr_oneHotSamples <- function(regions) { + unlist( + lapply(regions, function(x) { + alpha <- x$alpha[x$prior_variance > 0, , drop = FALSE] + names(x$pip)[max.col(alpha, ties.method = "first")] + }), + use.names = FALSE + ) +} + +# =========================================================================== +# qtlEnrichment(): fastenloc semantics +# Checked against the R transcription of fastenloc above. fastenloc's EM keeps the previous iteration's +# intercept at convergence, so only sd (intercept) is not compared. +# =========================================================================== + +# The one-hot regions plus r4, whose effects sit on a GWAS variant and on +# chr2:2, a variant the GWAS vector lacks; chr2:1 and chr2:3-5 are QTL-only +# variants no round samples. +.qep_qtlOnlyRegions <- function() { + r4 <- .qeh_oneHotRegion( + 1:10, + c(3, 7), + ids = c(.qeh_ids()[1:5], sprintf("chr2:%d:C:T", 1:5)) + ) + c(.qeh_oneHotRegions(), list(r4 = r4)) +} + +.qep_parityKeys <- function() { + c( + "Intercept", + "Enrichment (no shrinkage)", + "Enrichment (w/ shrinkage)", + "sd (no shrinkage)", + "sd (w/ shrinkage)", + "Alternative (coloc) p1", + "Alternative (coloc) p2", + "Alternative (coloc) p12", + "Effective MI rounds" + ) +} + +test_that("qtlEnrichment: matches fastenloc, QTL-only variants included", { + keys <- .qep_parityKeys() + for (regions in list(.qeh_oneHotRegions(), .qep_qtlOnlyRegions())) { + for (numGwas in list(5000, NULL)) { + for (lambda in c(1, 0.5, 0)) { + info <- paste0( + length(regions), + " regions, numGwas = ", + deparse(numGwas), + ", lambda = ", + lambda + ) + reference <- .flr_reference( + .qeh_gwasPip(), + regions, + .flr_oneHotSamples(regions), + numGwas = numGwas, + lambda = lambda + ) + res <- suppressWarnings(qtlEnrichment( + .qeh_gwasPip(), + regions, + numGwas = numGwas, + lambda = lambda, + impN = 3, + doubleShrinkage = TRUE, + besselCorrection = FALSE, + seed = 1L, + verbose = FALSE + )) + expect_equal( + unlist(res[keys]), + reference[keys], + tolerance = 1e-8, + info = info + ) + } + } + } +}) + +test_that("qtlEnrichment: the intercept uses the unshrunk enrichment", { + res <- .qep_oneHotRun(lambda = 1) + piGwas <- sum(.qeh_gwasPip()) / 5000 + a1 <- res[["Enrichment (no shrinkage)"]] + expect_equal( + res[["Intercept"]], + log(piGwas / (1 + 0.01 * exp(a1) - 0.01 - piGwas)) + ) + a01 <- res[["Intercept"]] + res[["Enrichment (w/ shrinkage)"]] + expect_equal(res[["Alternative (coloc) p12"]], 0.01 * plogis(a01)) +}) + +test_that("qtlEnrichment: a QTL-only variant counts as a GWAS PIP of 0", { + # Padding gwasPip with zeros for the QTL-only variants, at a fixed + # variant total, changes nothing but the diagnostics. + regions <- .qep_qtlOnlyRegions() + padded <- c( + .qeh_gwasPip(), + stats::setNames(rep(0, 5), sprintf("chr2:%d:C:T", 1:5)) + ) + keys <- c(.qep_parityKeys(), "sd (intercept)") + asGiven <- .qep_oneHotRun(regions, lambda = 1) + res <- qtlEnrichment( + padded, + regions, + numGwas = 5000, + piQtl = 0.01, + impN = 3, + seed = 1L, + verbose = FALSE + ) + expect_equal(unlist(res[keys]), unlist(asGiven[keys]), tolerance = 1e-10) + expect_equal(res[["Missing proportion per MI round"]], rep(0, 3)) + expect_equal(asGiven[["Missing proportion per MI round"]], rep(1 / 8, 3)) +}) + +test_that("qtlEnrichment: estimates do not depend on variant or region order", { + keys <- c(.qep_parityKeys(), "sd (intercept)") + regions <- .qep_qtlOnlyRegions() + base <- .qep_oneHotRun(regions, lambda = 1) + gwasPip <- .qeh_gwasPip() + res <- qtlEnrichment( + rev(gwasPip), + rev(regions), + numGwas = 5000, + piQtl = 0.01, + impN = 3, + seed = 1L, + verbose = FALSE + ) + expect_equal(unlist(res[keys]), unlist(base[keys]), tolerance = 1e-10) +}) + +test_that("qtlEnrichment: the variant total is the GWAS and QTL-only variants", { + regions <- .qep_qtlOnlyRegions() + # 200 GWAS variants and 5 QTL-only ones. + expect_warning( + res <- qtlEnrichment( + .qeh_gwasPip(), + regions, + piQtl = 0.01, + impN = 3, + seed = 1L, + verbose = FALSE + ), + "numGwas is not provided. Using the 205 distinct variants" + ) + at205 <- .qep_oneHotRun(regions, numGwas = 205) + keys <- .qep_parityKeys() + expect_equal(unlist(res[keys]), unlist(at205[keys])) + expect_warning( + below <- .qep_oneHotRun(regions, numGwas = 100), + "numGwas \\(100\\) is smaller than the 205 distinct variants" + ) + expect_equal(unlist(below[keys]), unlist(at205[keys])) +}) + +test_that("qtlEnrichment: piQtl defaults to the summed QTL PIPs over the total", { + regions <- .qep_qtlOnlyRegions() + expect_warning( + estimated <- qtlEnrichment( + .qeh_gwasPip(), + regions, + numGwas = 5000, + impN = 3, + seed = 1L, + verbose = FALSE + ), + "piQtl is not provided" + ) + # Four regions of two one-hot effects: 8 units of PIP. + supplied <- .qep_oneHotRun(regions, piQtl = 8 / 5000) + keys <- c(.qep_parityKeys(), "sd (intercept)") + expect_equal(unlist(estimated[keys]), unlist(supplied[keys])) +}) + +test_that("qtlEnrichment: refuses priors that do not sum to below 1", { + expect_error( + .qep_oneHotRun(piQtl = 0.9999), + "must sum to less than 1. Supply numGwas" + ) +}) + +test_that("qtlEnrichment: refuses a variant total too small for the data", { + # Every GWAS variant is sampled, so no variant is left that is neither + # QTL nor causal: the EM's (0, 0) cell is negative. + ids <- .qeh_ids(2L) + fit <- list( + alpha = diag(2), + pip = stats::setNames(c(1, 1), ids), + prior_variance = c(0.5, 0.2) + ) + expect_error( + suppressWarnings(qtlEnrichment( + stats::setNames(c(0.5, 0.5), ids), + list(a = fit), + piQtl = 0.1, + impN = 3, + seed = 1L, + verbose = FALSE + )), + "variant total is too small for the data in 3 of 3 MI round" + ) +}) + +# =========================================================================== +# qtlEnrichment(): aligning QTL variant names to the GWAS vector +# =========================================================================== + +# `regions` with the pip names at positions `at` of region `name` replaced. +.qep_renameIds <- function(regions, name, at, ids) { + nm <- names(regions[[name]]$pip) + nm[at] <- ids + names(regions[[name]]$pip) <- nm + regions +} + +.qep_estimates <- function(res) { + unlist(res[c(.qep_parityKeys(), "sd (intercept)")]) +} + +test_that("qtlEnrichment: aligns swapped and reformatted QTL ids to GWAS ids", { + regions <- .qeh_oneHotRegions() + # r1's effects sit on chr1:19100 and chr1:15200 (positions 42 and 3), + # r2's first on chr1:19200 (position 23). + renamed <- .qep_renameIds( + regions, + "r1", + c(42, 3), + c("chr1:19100:G:A", "1_15200_A_G") + ) + renamed <- .qep_renameIds(renamed, "r2", 23, "chr1:19200:G:A") + base <- .qep_oneHotRun(regions) + aligned <- .qep_oneHotRun(renamed) + expect_equal(.qep_estimates(aligned), .qep_estimates(base)) + expect_true(all(vapply(aligned$unused_xqtl_variants, is.null, TRUE))) + # Unaligned, the three names match nothing and count as QTL-only. + unaligned <- .qep_oneHotRun(renamed, alignNames = FALSE) + expect_setequal( + unlist(unaligned$unused_xqtl_variants), + c("chr1:19100:G:A", "1_15200_A_G", "chr1:19200:G:A") + ) + expect_false(isTRUE(all.equal( + .qep_estimates(unaligned), + .qep_estimates(base) + ))) +}) + +test_that("qtlEnrichment: an unparseable id leaves the others allele-aware", { + # An rsID among a tuple's names used to turn the whole match into exact + # string identity, leaving the swapped ids unmatched. + withRsid <- .qep_renameIds(.qeh_oneHotRegions(), "r1", 10, "rs999") + swapped <- .qep_renameIds(withRsid, "r1", 42, "chr1:19100:G:A") + res <- .qep_oneHotRun(swapped) + expect_identical(res$unused_xqtl_variants$r1, "rs999") + expect_equal( + .qep_estimates(res), + .qep_estimates(.qep_oneHotRun(withRsid)) + ) +}) + +test_that("qtlEnrichment: an exactly spelled GWAS id beats a swapped twin", { + # The GWAS vector carries chr1:19100 in both orientations, with + # different PIPs; each QTL spelling must take its own. + gwasPip <- c(.qeh_gwasPip(), `chr1:19100:G:A` = 0.05) + run <- function(regions, alignNames) { + qtlEnrichment( + gwasPip, + regions, + numGwas = 5000, + piQtl = 0.01, + impN = 3, + seed = 1L, + verbose = FALSE, + alignNames = alignNames + ) + } + regions <- .qeh_oneHotRegions() + swapped <- .qep_renameIds(regions, "r1", 42, "chr1:19100:G:A") + for (x in list(regions, swapped)) { + expect_equal( + .qep_estimates(run(x, TRUE)), + .qep_estimates(run(x, FALSE)) + ) + } + expect_false(isTRUE(all.equal( + .qep_estimates(run(regions, TRUE)), + .qep_estimates(run(swapped, TRUE)) + ))) +}) + +test_that("qtlEnrichment: matches a tuple's ids allele-aware in one call", { + calls <- 0L + local_mocked_bindings( + .matchVariantTables = function(a, b, ...) { + calls <<- calls + 1L + list(idxA = integer(0), idxB = integer(0), sign = numeric(0)) + }, + .package = "pecotmr" + ) + # Every name spelled as a GWAS id: nothing is left to match. + .qep_oneHotRun() + expect_identical(calls, 0L) + # Swapped ids in all three regions: one call for the tuple. + renamed <- .qep_renameIds(.qeh_oneHotRegions(), "r1", 42, "chr1:19100:G:A") + renamed <- .qep_renameIds(renamed, "r2", 26, "chr1:19500:G:A") + renamed <- .qep_renameIds(renamed, "r3", 5, "chr1:500:G:A") + .qep_oneHotRun(renamed) + expect_identical(calls, 1L) +}) + +test_that("qtlEnrichment: refuses gwasPip naming a variant twice", { + gwasPip <- .qeh_gwasPip() + expect_error( + qtlEnrichment( + c(gwasPip, gwasPip[1]), + .qeh_oneHotRegions(), + numGwas = 5000, + piQtl = 0.01, + verbose = FALSE + ), + "names variant 'chr1:100:A:G' more than once" + ) +}) + # =========================================================================== # qtlEnrichment(): verbose messages # =========================================================================== @@ -972,7 +1794,7 @@ test_that("qtlEnrichmentPipeline: alignTuple cache is reused across GWAS studies ) qfmr <- .qep_makeQtlFmr() local_mocked_bindings( - qtlEnrichment = .qep_mockEnrichment(2.0), + .qtlEnrichmentCoded = .qep_mockEnrichment(2.0), .package = "pecotmr" ) out <- qtlEnrichmentPipeline( @@ -1021,9 +1843,10 @@ test_that(".enrRunEnrichment turns a stored alignment failure into a warning", { expect_warning( out <- pecotmr:::.enrRunEnrichment( 1L, - gwasPip = NULL, + outcome = NULL, + outcomeAt = NULL, k = 1L, - alignedByTuple = list(cnd), + prep = list(aligned = list(cnd), annotations = list(NULL)), qtlEnrichmentParam = QtlEnrichmentParam(), BPPARAM = BiocParallel::SerialParam(), seed = NULL, @@ -1043,8 +1866,7 @@ test_that(".enrBuildQtlRegionsList reads prior variance under either name", { run <- function(fit) { local_mocked_bindings( .enrMatchRows = function(qtlFmr, ident) 1L, - .fmrRowParts = function(qtlFmr, i) "parts", - susieFit = function(parts) fit, + .fmrFitsAt = function(x, idx) list(fit), .package = "pecotmr" ) pecotmr:::.enrBuildQtlRegionsList("fmr", "ident") @@ -1140,7 +1962,7 @@ test_that("qtlEnrichmentPipeline keeps each fine-mapping method's fits apart", { seen <- new.env() seen$regions <- integer(0) local_mocked_bindings( - qtlEnrichment = function(gwasPip, susieQtlRegions, ...) { + .qtlEnrichmentCoded = function(gwasPip, susieQtlRegions, ...) { seen$regions <- c(seen$regions, length(susieQtlRegions)) .qep_mockEnrichment(2.0)(gwasPip, susieQtlRegions, ...) }, @@ -1175,7 +1997,7 @@ test_that("qtlEnrichmentPipeline keeps each fine-mapping method's fits apart", { test_that("enrichment names a narrowed row's PIPs by its fit's variants", { vids <- c("chr1:100:A:G", "chr1:200:C:T", "chr1:300:G:A") pip <- c(0.5, 0.3, 0.2) - fit <- list(pip = pip, alpha = matrix(pip, 1L), V = 1) + fit <- list(pip = set_names(pip, vids), alpha = matrix(pip, 1L), V = 1) tl <- data.frame(variant_id = vids, pip = pip) row <- FineMappingRow(vids, fit, tl) gwas <- GwasFineMappingResult( @@ -1197,6 +2019,22 @@ test_that("enrichment names a narrowed row's PIPs by its fit's variants", { region <- pecotmr:::.enrRowRegion(1L, endoapply(qtl, utils::head, 2L)) expect_equal(region$pip, set_names(pip, vids)) expect_equal(region$prior_variance, 1) + # A narrowed row whose fit names none has nothing to name them by. + unnamed <- QtlFineMappingResult( + studyName = "q1", + context = "c1", + trait = "g1", + method = "susie", + entry = list(FineMappingRow( + vids, + list(pip = pip, alpha = fit$alpha, V = 1), + tl + )) + ) + expect_error( + pecotmr:::.enrRowRegion(1L, endoapply(unnamed, utils::head, 2L)), + "does not name its variables" + ) }) test_that("qtlEnrichmentPipeline warns about narrowed fits on both sides", { diff --git a/tests/testthat/test_tupleSelectors.R b/tests/testthat/test_tupleSelectors.R index 861a268f..f818b88c 100644 --- a/tests/testthat/test_tupleSelectors.R +++ b/tests/testthat/test_tupleSelectors.R @@ -1121,14 +1121,13 @@ test_that(".checkGwasBlockReach words what it finds", { pip <- c(0.5, 0.3, 0.2) full <- FineMappingRow( .ts_fitted, - list(pip = pip), + list(pip = set_names(pip, .ts_fitted)), data.frame(variant_id = .ts_fitted, pip = pip) ) methods::new( "FineMappingRow", variants = variants(full)[keep], - susieFit = susieFit(full), - fitVariants = .ts_fitted + susieFit = susieFit(full) ) } @@ -1179,33 +1178,62 @@ test_that(".mdFitVariants reads a group's first row, nothing for old rows", { ) }) -test_that(".partsFitIds: the recorded ids, else the fit's, else the row's", { +test_that(".partsFitIds: the row's own ids, else the fit's names", { + # A row holding all of its fit is its fit's variables, read by position. + full <- .ts_fitRow() + expect_equal(pecotmr:::.partsFitIds(full), .ts_fitted) + # A narrowed row's fit names them, wherever it keeps the names. expect_equal(pecotmr:::.partsFitIds(.ts_fitRow(1:2)), .ts_fitted) - unrecorded <- methods::new( + named <- matrix(0, 1L, 3L, dimnames = list(NULL, rev(.ts_fitted))) + fitless <- methods::new( "FineMappingRow", - variants = variants(.ts_fitRow()), + variants = variants(full)[1:2], susieFit = NULL ) - named <- matrix(0, 1L, 3L, dimnames = list(NULL, rev(.ts_fitted))) - expect_equal(pecotmr:::.partsFitIds(unrecorded, named), rev(.ts_fitted)) - expect_equal(pecotmr:::.partsFitIds(unrecorded), .ts_fitted) + expect_equal(pecotmr:::.partsFitIds(fitless, named), rev(.ts_fitted)) + # A narrowed row whose fit names none cannot be placed in it. + unnamed <- methods::new( + "FineMappingRow", + variants = variants(full)[1:2], + susieFit = list(pip = c(0.5, 0.3, 0.2)) + ) + expect_error( + pecotmr:::.partsFitIds(unnamed), + "holds 2 variants but its fit was made with 3" + ) }) -test_that("a row records fit variants only when it carries a fit", { +test_that(".fitColumnsFor reads a row holding its whole fit by position", { + f <- pecotmr:::.fitColumnsFor + gr <- variants(.ts_fitRow()) + fit <- list(pip = c(0.5, 0.3, 0.2)) + expect_equal(f(gr, fit), 1:3) + # Narrowed: by the fit's names, or not at all without them. + expect_equal(f(gr[2:3], list(pip = set_names(fit$pip, .ts_fitted))), 2:3) + expect_null(f(gr[2:3], fit)) + # A fit of unknown width describes the row as it is. + expect_equal(f(gr[2:3], NULL), 1:2) +}) + +test_that(".fitWidth counts the fit's variables, never the null column", { + f <- pecotmr:::.fitWidth + alpha <- matrix(0.25, 1L, 4L) + expect_equal(f(list(pip = c(0.1, 0.2, 0.3), alpha = alpha)), 3L) + expect_equal(f(list(alpha = alpha)), 4L) + expect_equal(f(list(), alpha), 4L) + expect_true(is.na(f(NULL))) + expect_true(is.na(f(list(list(pip = 1))))) +}) + +test_that("a TWAS row records fit variants only when it carries a fit", { w <- c(0.1, 0.2, 0.3) withCv <- TwasWeightsRow(.ts_fitted, w, cvResult = list(r2 = 0.5)) - expect_equal(pecotmr:::.rowFitVariants(withCv), .ts_fitted) - # Weights alone are no fit payload, and topLoci alone no fit. + expect_equal(pecotmr:::.twRowFitVariants(withCv), .ts_fitted) + # Weights alone are no fit payload. expect_equal( - pecotmr:::.rowFitVariants(TwasWeightsRow(.ts_fitted, w)), + pecotmr:::.twRowFitVariants(TwasWeightsRow(.ts_fitted, w)), character(0) ) - fitless <- FineMappingRow( - .ts_fitted, - NULL, - data.frame(variant_id = .ts_fitted, pip = c(0.5, 0.3, 0.2)) - ) - expect_equal(pecotmr:::.rowFitVariants(fitless), character(0)) }) test_that(".fitCoverageChecked warns about a narrowed row and returns it", { @@ -1238,12 +1266,12 @@ test_that(".fitCoverageCheckedRows names at most five narrowed rows", { )) }) -test_that(".fitCoverageCheckedRows is silent without a record or rows", { +test_that(".fitCoverageCheckedRows is silent without a fit or rows", { x <- .ts_narrowedCollection(1L) expect_no_warning(pecotmr:::.fitCoverageCheckedRows(x[0], "f()")) - unrecorded <- x - unrecorded$fitVariants <- NULL - expect_no_warning(pecotmr:::.fitCoverageCheckedRows(unrecorded, "f()")) + fitless <- x + fitless$susieFit <- S4Vectors::SimpleList(list(NULL)) + expect_no_warning(pecotmr:::.fitCoverageCheckedRows(fitless, "f()")) # An optional input left out is nothing to check. expect_no_warning(pecotmr:::.fitCoverageCheckedRows(NULL, "f()")) }) @@ -1354,13 +1382,17 @@ test_that(".naLikeColumn pads a list column with empty entries of its kind", { expect_null(sl[[1L]]) }) -test_that("binding a collection saved before fitVariants pads the column", { - x <- .ts_narrowedCollection(2L) - old <- x[1L] - old$fitVariants <- NULL - out <- pecotmr:::.rbindCollections(list(old, x[2L])) - expect_s4_class(out$fitVariants, "CharacterList") - expect_equal(unname(lengths(out$fitVariants)), c(0L, 3L)) +test_that("binding a collection saved before derivedColumns pads the column", { + x <- .fmRebuildExample(.fmLoadExample("qtlFineMappingExample")) + recorded <- which(lengths(x$derivedColumns) > 0L)[[1L]] + old <- x[-recorded] + old$derivedColumns <- NULL + out <- pecotmr:::.rbindCollections(list(old, x[recorded])) + expect_s4_class(out$derivedColumns, "CharacterList") + expect_equal( + unname(lengths(out$derivedColumns)), + c(rep(0L, nrow(old)), length(x$derivedColumns[[recorded]])) + ) }) # =========================================================================== diff --git a/tests/testthat/test_twasWeightsPipeline.R b/tests/testthat/test_twasWeightsPipeline.R index 169873e1..2c14181f 100644 --- a/tests/testthat/test_twasWeightsPipeline.R +++ b/tests/testthat/test_twasWeightsPipeline.R @@ -4789,9 +4789,15 @@ test_that("twasWeightsPipeline refuses a phenotype QC its fits cannot take", { # =========================================================================== # The stub fine-mapping result with its rows narrowed to two of their three -# variants. +# variants. A row is narrowed when it holds fewer variants than its fit has, +# so the stub fits carry the PIPs of all three. .tp_narrowedFineMapping <- function(...) { - endoapply(.tp_makeStubFineMappingResult(...), utils::head, 2L) + x <- .tp_makeStubFineMappingResult(...) + x$susieFit <- S4Vectors::SimpleList(map( + as.list(x$susieFit), + function(fit) c(fit, list(pip = c(0.9, 0.5, 0.1))) + )) + endoapply(x, utils::head, 2L) } test_that("each twasWeightsPipeline method warns about narrowed fits", { diff --git a/tests/testthat/test_variantId.R b/tests/testthat/test_variantId.R index 1d4fc9e6..eba5dbb5 100644 --- a/tests/testthat/test_variantId.R +++ b/tests/testthat/test_variantId.R @@ -390,24 +390,83 @@ test_that("matchVariants reports sign -1 for an allele swap", { expect_equal(m$sign, -1) }) -test_that("matchVariants handles strand-ambiguous (A/T) swaps with the QC heuristic", { - # A lone A/T swap has no unambiguous strand flip to corroborate a strand - # interpretation, so (mirroring summaryStatsQc) it is treated as a plain - # allele swap and kept with sign -1, not dropped. +test_that("matchVariants judges each strand-ambiguous (A/T) swap on its own", { + # An A/T vs T/A pair is a swap or a strand flip and nothing says which: + # it is dropped by default, whatever else the batch holds ... m <- pecotmr:::matchVariants("chr1:100:A:T", "chr1:100:T:A") - expect_equal(m$idxA, 1L) - expect_equal(m$sign, -1) - - # When the batch contains a genuine unambiguous strand flip ([1]), the - # ambiguous A/T swap ([2]) is dropped as untrustworthy by default ... + expect_length(m$idxA, 0L) a <- c("chr1:100:A:C", "chr2:200:A:T") b <- c("chr1:100:T:G", "chr2:200:T:A") expect_equal(pecotmr:::matchVariants(a, b)$idxA, 1L) - # ... but is kept when ambiguity checking is disabled. + # ... and kept as a swap (sign -1) when ambiguity checking is disabled. + m <- pecotmr:::matchVariants( + "chr1:100:A:T", + "chr1:100:T:A", + removeStrandAmbiguous = FALSE + ) + expect_equal(m$idxA, 1L) + expect_equal(m$sign, -1) expect_equal( sort(pecotmr:::matchVariants(a, b, removeStrandAmbiguous = FALSE)$idxA), c(1L, 2L) ) + # An exact A/T pair is no ambiguity at all. + expect_equal( + pecotmr:::matchVariants("chr1:100:A:T", "chr1:100:A:T")$sign, + 1 + ) +}) + +test_that("matchVariants matches within maxDistance only when alleles agree", { + a <- c("chr1:100:A:G", "chr1:500:C:T") + b <- c("chr1:103:A:G", "chr1:520:C:T", "chr1:101:A:C") + # The same position by default. + expect_length(pecotmr:::matchVariants(a, b)$idxA, 0L) + # Within 5 bp: the A:G copy, not the A:C variant beside it. + m <- pecotmr:::matchVariants(a, b, maxDistance = 5L) + expect_equal(m$idxA, 1L) + expect_equal(m$idxB, 1L) + m <- pecotmr:::matchVariants(a, b, maxDistance = 20L) + expect_equal(m$idxA, c(1L, 2L)) + expect_equal(m$idxB, c(1L, 2L)) + # A swapped copy in the window matches with sign -1; a window never + # crosses chromosomes. + expect_equal( + pecotmr:::matchVariants( + "chr1:100:A:G", + "chr1:102:G:A", + maxDistance = 2L + )$sign, + -1 + ) + expect_length( + pecotmr:::matchVariants( + "chr1:100:A:G", + "chr2:100:A:G", + maxDistance = 10L + )$idxA, + 0L + ) +}) + +test_that("matchVariants takes GRanges of variants", { + ids <- c("chr1:100:A:G", "chr1:200:C:T") + # Ensembl-style seqnames; the first variant stored with its alleles + # swapped. + gr <- GenomicRanges::GRanges( + c("1", "1"), + IRanges::IRanges(c(100L, 200L), width = 1L), + A2 = c("G", "C"), + A1 = c("A", "T") + ) + m <- pecotmr:::matchVariants(gr, ids) + expect_equal(m$idxA, 1:2) + expect_equal(m$sign, c(-1, 1)) + expect_equal(pecotmr:::matchVariants(gr, ids, allowFlip = FALSE)$idxA, 2L) + expect_error( + pecotmr:::matchVariants(GenomicRanges::granges(gr), ids), + "A1 and A2" + ) }) test_that("matchVariants matches non-autosomal variants (chrX, chr23 synonym)", { diff --git a/vignettes/coloc-pipeline.Rmd b/vignettes/coloc-pipeline.Rmd index 9c093c1a..f7c5cf68 100644 --- a/vignettes/coloc-pipeline.Rmd +++ b/vignettes/coloc-pipeline.Rmd @@ -162,6 +162,15 @@ with $P_{\text{eQTL}}$ the per-variant QTL prior: p_2 = P_{\text{eQTL}}\,\bigl(1 - \sigma(a_0 + a_1)\bigr), \quad p_{12} = P_{\text{eQTL}}\,\sigma(a_0 + a_1) \] +As in `fastenloc`, $P_{\text{eQTL}}$ and the GWAS prior $P_{\text{GWAS}}$ are +PIP mass per variant: the QTL fits' summed PIPs, and the GWAS PIPs' sum, over +the total number of variants the GWAS tested (`QtlEnrichmentParam(numGwas =)`). +The intercept is the one that keeps the GWAS prior at that rate given the +unshrunk enrichment $\hat a_1$, +$a_0 = \log\{P_{\text{GWAS}} / (1 + P_{\text{eQTL}} e^{\hat a_1} - +P_{\text{eQTL}} - P_{\text{GWAS}})\}$, while the priors above use the shrunk +$a_1$. + `qtlEnrichmentPipeline()` carries all three out as the `colocP1`, `colocP2` and `colocP12` columns, so the table you pass already holds them. Because the enrichment determines the priors, supplying `priors` as well is an error diff --git a/vignettes/heritability.Rmd b/vignettes/heritability.Rmd index 8b6b78d5..ed79d7cf 100644 --- a/vignettes/heritability.Rmd +++ b/vignettes/heritability.Rmd @@ -281,14 +281,21 @@ annot <- readAnnotations( The `tier` column decides how each annotation is used: `"baseline"` annotations enter the model and get an enrichment estimate, while -`"candidate"` annotations are scored against the fitted baseline (the sHDL -score test, via `scoreStats()`). - -One structural caveat: a set of baseline annotations that exactly partitions -the variants is rank-deficient by construction, because the model's implicit -all-ones base annotation is then their sum. Real baseline models — the LDSC -baselineLD set, for instance — use overlapping annotations and do not have -this problem. +`"candidate"` annotations are scored against the fitted baseline, one score +test each, via `scoreStats()`. Every estimator calibrates that test by the +spread of its LD blocks' scores, as it does its standard errors, so it stays +valid when the regression weights are only approximately right. Molecular QTL +annotations built by `fineMappingAnnotations()` from fine-mapping results are +candidates by default. + +All four estimators fit the same baseline design. An all-ones base +annotation is added ahead of the baseline annotations unless they already +cover every variant between them, as a partition of the genome does. Without +it the variants no annotation covers would be modelled as carrying no +heritability. Beside the base, an annotation's coefficient is its excess over +the genome-wide rate, which is negative for a depleted annotation. Annotations +may overlap; each one's heritability is taken from the overlap-aware +partition \(A'A\tau\), and only the annotations you supplied are reported. ## Postprocessing external polyfun runs diff --git a/vignettes/xqtl-enrichment.Rmd b/vignettes/xqtl-enrichment.Rmd index 090879d3..84eba03e 100644 --- a/vignettes/xqtl-enrichment.Rmd +++ b/vignettes/xqtl-enrichment.Rmd @@ -105,6 +105,28 @@ supplied to a colocalization analysis. This synthetic single-region example is for illustration only; stable enrichment estimates require many fine-mapped regions. +## The variant total + +As in `fastENLOC`, both priors are PIP mass per variant: the GWAS prior is the +GWAS PIPs' sum, and the QTL prior the QTL fits' summed PIPs, over the total +number of variants the GWAS tested. QTL variants the GWAS PIP vector lacks take +part with GWAS PIP 0. A GWAS fine-mapping collection usually covers only its +fine-mapped blocks, far fewer variants than were tested, so pass that total as +`numGwas`, `fastENLOC`'s `-total_variants`. Without it the pipeline uses the +number of distinct variants in the two inputs and warns, as it did above; +that overstates both priors unless the GWAS PIPs are genome-wide. + +```{r enrichment-num-gwas, eval = FALSE} +qtlEnrichmentPipeline( + gwasFineMappingResult = gwasFmr, + qtlFineMappingResult = qtlFmr, + # e.g. the number of variants in the GWAS summary statistics + qtlEnrichmentParam = QtlEnrichmentParam(numGwas = 12e6), + BPPARAM = BiocParallel::MulticoreParam(8), + seed = 1 +) +``` + ## Session information Here are some details about the computing environment, including the versions From 4cbb505d2f16a4083a46a84aa46f58495ca5f12f Mon Sep 17 00:00:00 2001 From: Daniel Nachun Date: Sun, 1 Nov 2026 13:54:51 -0800 Subject: [PATCH 2/2] fix coding style issues --- DESCRIPTION | 1 - NAMESPACE | 4 +- R/AllClasses.R | 45 ++- R/RangedTupleList.R | 27 +- R/fineMappingRow.R | 63 ++-- R/fineMappingWrappers.R | 9 +- R/genotypeIo.R | 37 +- R/h2Annotations.R | 62 ++-- R/h2EstimationWrappers.R | 114 +++--- R/qtlEnrichmentPipeline.R | 389 ++++++++++++-------- R/tupleSelectors.R | 154 ++++---- R/variantId.R | 241 ++++++------ man/fineMappingAnnotations.Rd | 5 +- tests/testthat/test_AllClasses.R | 15 + tests/testthat/test_RangedTupleList.R | 25 ++ tests/testthat/test_fineMappingRow.R | 95 +++++ tests/testthat/test_genotypeIo.R | 32 ++ tests/testthat/test_h2Annotations.R | 32 ++ tests/testthat/test_qtlEnrichmentPipeline.R | 98 +++++ tests/testthat/test_tupleSelectors.R | 204 ++++++++++ tests/testthat/test_variantId.R | 8 + 21 files changed, 1173 insertions(+), 487 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 5120edf6..f70cb96b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -51,7 +51,6 @@ Imports: Rsamtools, S4Arrays, S4Vectors, - stringi, stringr, SummarizedExperiment, susieR (>= 0.16.4), diff --git a/NAMESPACE b/NAMESPACE index b131bd8c..a1ffad9a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -707,6 +707,7 @@ importFrom(dplyr, case_when, coalesce, count, + cumall, desc, distinct, everything, @@ -825,7 +826,6 @@ importFrom(stats, setNames, var ) -importFrom(stringi,stri_split_fixed) importFrom(stringr, fixed, regex, @@ -842,6 +842,7 @@ importFrom(stringr, str_replace_all, str_split, str_split_1, + str_split_fixed, str_starts, str_sub, str_to_lower, @@ -876,6 +877,7 @@ importFrom(utils, head ) importFrom(vctrs, + vec_chop, vec_duplicate_detect, vec_group_id, vec_match, diff --git a/R/AllClasses.R b/R/AllClasses.R index 67b736dc..5149c223 100644 --- a/R/AllClasses.R +++ b/R/AllClasses.R @@ -1108,10 +1108,17 @@ setMethod( #' @export trimFineMappingResult <- function(x, role = NULL) { assertMultiClass(x, c("GwasFineMappingResult", "QtlFineMappingResult")) - role <- role %||% - if (methods::is(x, "GwasFineMappingResult")) "outcome" else "annotation" - role <- arg_match0(role, c("outcome", "annotation")) - entries <- map(seq_len(nrow(x)), .trimRow, x = x, role = role) + byClass <- if (methods::is(x, "GwasFineMappingResult")) { + "outcome" + } else { + "annotation" + } + chosen <- arg_match0( + role %||% byClass, + c("outcome", "annotation"), + arg_nm = "role" + ) + entries <- map(seq_len(nrow(x)), .trimRow, x = x, role = chosen) .fmrFromEntries(x, entries) } @@ -1161,10 +1168,8 @@ trimFineMappingResult <- function(x, role = NULL) { sets = fit[["sets"]], sets_secondary = .trimSecondarySets(fit[["sets_secondary"]]) )) - if (role == "annotation") { - kept <- c(.trimEffects(fit, fitIds), kept) - } - `class<-`(kept, class(fit)) + effects <- if (role == "annotation") .trimEffects(fit, fitIds) else list() + `class<-`(c(effects, kept), class(fit)) } # `pip` named by `fitIds`, or unnamed when there are none to name it by. @@ -1184,7 +1189,12 @@ trimFineMappingResult <- function(x, role = NULL) { if (length(sec) == 0L) { return(NULL) } - map(sec, function(s) list(sets = s$sets)) + map(sec, .trimSetsOnly) +} + +# @noRd +.trimSetsOnly <- function(secondary) { + list(sets = secondary$sets) } # The alpha rows and prior variances of the fit's effects of positive prior @@ -1192,12 +1202,11 @@ trimFineMappingResult <- function(x, role = NULL) { # An already trimmed fit's names are its ids. # @noRd .trimEffects <- function(fit, fitIds = NULL) { - alpha <- fit[["alpha"]] priorVariance <- fit[["V"]] %||% fit[["prior_variance"]] - if (is.null(alpha) || is.null(priorVariance)) { + if (is.null(fit[["alpha"]]) || is.null(priorVariance)) { return(list()) } - alpha <- as.matrix(alpha) + alpha <- as.matrix(fit[["alpha"]]) ids <- if (.namedByEffect(alpha)) { rownames(alpha) } else { @@ -1612,11 +1621,15 @@ setMethod( message(str_c("updateObject(object = '", class(object)[[1L]], "')")) } md <- mcols(object, use.names = FALSE) - if (is_in("fitVariants", colnames(md))) { - md$fitVariants <- NULL - object <- `mcols<-`(object, value = md) + current <- if (is_in("fitVariants", colnames(md))) { + `mcols<-`( + object, + value = md[, colnames(md) != "fitVariants", drop = FALSE] + ) + } else { + object } - methods::callNextMethod(object, ..., verbose = verbose) + methods::callNextMethod(current, ..., verbose = verbose) } ) diff --git a/R/RangedTupleList.R b/R/RangedTupleList.R index ffbe833a..3cdb1f97 100644 --- a/R/RangedTupleList.R +++ b/R/RangedTupleList.R @@ -622,13 +622,14 @@ setMethod("trim", "RangedTupleList", function(x, use.names = TRUE, ...) { n <- lengths(x) has <- n > 0L flat <- unlist(x, use.names = FALSE) - group <- rep(seq_along(x), n) first <- (cumsum(n) - n + 1L)[has] - starts <- vapply(split(start(flat), group), min, integer(1)) - ends <- vapply(split(end(flat), group), max, integer(1)) + # min()/max() of a list of starts/ends are taken per element, in C. spans <- GenomicRanges::GRanges( seqnames(flat)[first], - IRanges::IRanges(starts, ends), + IRanges::IRanges( + unname(min(start(x)[has])), + unname(max(end(x)[has])) + ), strand = BiocGenerics::strand(flat)[first], seqinfo = GenomeInfoDb::seqinfo(flat) ) @@ -1367,9 +1368,11 @@ nestTupleRanges <- function(flat, template) { abort(msg) } keys <- .rtlNestKeys(flat, template, .rtlTupleKeyCols(template)) - elements <- map(keys$wanted, .rtlPickByKey, flat = flat, have = keys$have) - if (methods::is(template, "FineMappingResultBase")) { - elements <- .fmrDropRestoredColumns(elements, template) + picked <- map(keys$wanted, .rtlPickByKey, flat = flat, have = keys$have) + elements <- if (methods::is(template, "FineMappingResultBase")) { + .fmrDropRestoredColumns(picked, template) + } else { + picked } .rtlRebuild(template, elements, seq_len(length(template))) } @@ -1410,14 +1413,12 @@ nestTupleRanges <- function(flat, template) { } fit <- susieFit(parts) cols <- .fitColumnsFor(g, fit) - if (!storedPip) { - g <- .fmRowDropFitPip(g, fit, cols) - } + slim <- if (storedPip) g else .fmRowDropFitPip(g, fit, cols) if (length(recorded) == 0L) { - return(g) + return(slim) } - cs <- .fmRowDropFitCs(g, fit, cols) - if (identical(cs$derived, recorded)) cs$variants else g + cs <- .fmRowDropFitCs(slim, fit, cols) + if (identical(cs$derived, recorded)) cs$variants else slim } # Element and range keys for re-nesting. The identity tuple alone keys an diff --git a/R/fineMappingRow.R b/R/fineMappingRow.R index 4f167108..9db22cca 100644 --- a/R/fineMappingRow.R +++ b/R/fineMappingRow.R @@ -167,8 +167,7 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { if (is.null(derived) || !identical(derived, as.numeric(md$pip))) { return(gr) } - md$pip <- NULL - `mcols<-`(gr, value = md) + `mcols<-`(gr, value = rest) } # The PIP the fit gives the variants at its columns `cols` @@ -201,12 +200,11 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # where the pip goes when it is not stored either. # @noRd .fmRowCsSlot <- function(cn) { - for (anchor in c("logBF", "pip")) { - if (is_in(anchor, cn)) { - return(match(anchor, cn)) - } + anchor <- intersect(c("logBF", "pip"), cn) + if (length(anchor) == 0L) { + return(.fmRowPipSlot(cn)) } - .fmRowPipSlot(cn) + match(anchor[[1L]], cn) } # A row's variants with every column the constructor dropped derived back @@ -233,8 +231,12 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { } derived <- .fitPipFor(fit, .fitColumnsPlaced(gr, fit)) if (has) { - md$pip <- coalesce(as.numeric(md$pip), derived) - return(`mcols<-`(gr, value = md)) + filled <- `[[<-`( + md, + "pip", + value = coalesce(as.numeric(md$pip), derived) + ) + return(`mcols<-`(gr, value = filled)) } .fmRowInsertColumns(gr, list(pip = derived), .fmRowPipSlot(colnames(md))) } @@ -310,7 +312,7 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # labels themselves; NULL unless they all carry the same one. # @noRd .fmRowCsLabelTag <- function(labels) { - values <- unique(as.character(unlist(as.list(labels), use.names = FALSE))) + values <- unique(list_c(map(as.list(labels), as.character))) tags <- unique(str_remove(values[!is.na(values)], "_[0-9]+$")) if (length(tags) != 1L || !nzchar(tags)) { return(NULL) @@ -336,12 +338,12 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { # otherwise. # @noRd .fmRowCsBlock <- function(cn) { - labelCols <- cn[str_detect(cn, "^cs_[0-9]+$")] - if (length(labelCols) == 0L) { + found <- cn[str_detect(cn, "^cs_[0-9]+$")] + if (length(found) == 0L) { return(NULL) } - coverage <- as.numeric(str_remove(labelCols, "^cs_")) / 100 - labelCols <- labelCols[order(coverage, decreasing = TRUE)] + coverage <- as.numeric(str_remove(found, "^cs_")) / 100 + labelCols <- found[order(coverage, decreasing = TRUE)] expected <- c(labelCols, str_c(labelCols, "_purity")) at <- .fmRowCsSlot(setdiff(cn, expected)) if (!identical(cn[at + seq_along(expected)], expected)) { @@ -384,16 +386,29 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { } c( set_names( - map(perCoverage, function(p) .btlCsLabel(p$effect[col], tag)), + map(perCoverage, .fitCsLabelsAt, col = col, tag = tag), labelCols ), set_names( - map(perCoverage, function(p) p$purity[col]), + map(perCoverage, .fitCsPurityAt, col = col), str_c(labelCols, "_purity") ) ) } +# One coverage's credible-set labels (.fitCsAtCoverage()) for the variants at +# the fit's columns `col`. +# @noRd +.fitCsLabelsAt <- function(perCoverage, col, tag) { + .btlCsLabel(perCoverage$effect[col], tag) +} + +# One coverage's credible-set purities for the variants at `col`. +# @noRd +.fitCsPurityAt <- function(perCoverage, col) { + perCoverage$purity[col] +} + # One coverage's per-variable effect index and purity, as .btlCsMembership() # computes them, from the credible sets the fit keeps for that coverage; NULL # when it keeps none. @@ -442,12 +457,18 @@ FineMappingRow <- function(variantIds, susieFit, topLoci, cvResult = NULL) { if (length(present) == 0L) { return(.fmRowInsertColumns(gr, derived, .fmRowCsSlot(colnames(md)))) } - for (nm in present) { - if (all(is.na(md[[nm]]))) { - md[[nm]] <- derived[[nm]] - } + filled <- reduce(present, .fmRowFillColumn, derived = derived, .init = md) + `mcols<-`(gr, value = filled) +} + +# `md` with its column `nm` taken from `derived` when it is all NA, as a +# collection joining rows with and without it leaves it. +# @noRd +.fmRowFillColumn <- function(md, nm, derived) { + if (!all(is.na(md[[nm]]))) { + return(md) } - `mcols<-`(gr, value = md) + `[[<-`(md, nm, value = derived[[nm]]) } # Whether `md` has column `nm` with a value somewhere: a column absent, or diff --git a/R/fineMappingWrappers.R b/R/fineMappingWrappers.R index 1f8bb44d..4c0d836c 100644 --- a/R/fineMappingWrappers.R +++ b/R/fineMappingWrappers.R @@ -5222,11 +5222,12 @@ extractTopPipInfo <- function(fmRow, sumstats) { # once per variant of every fit. # @noRd .csPurityAt <- function(i, pv) { - out <- numeric(length(i)) inRange <- i > 0L & i <= length(pv) - v <- as.numeric(pv[i[inRange]]) - out[inRange] <- replace(v, is.na(v), 0) - out + replace( + numeric(length(i)), + inRange, + coalesce(as.numeric(pv[i[inRange]]), 0) + ) } # Max of the finite entries of x (NA when none). diff --git a/R/genotypeIo.R b/R/genotypeIo.R index fcf82049..1f0253b1 100644 --- a/R/genotypeIo.R +++ b/R/genotypeIo.R @@ -1241,23 +1241,28 @@ readPvar <- function(pvarPath) { } # The .pvar's column names, from its #CHROM header line, and how many lines -# (## meta lines and the header) precede the variants; NULL without one. -# @noRd -.pvarHeader <- function(pvarPath) { - con <- file(pvarPath, "r") - on.exit(close(con), add = TRUE) - lines <- 0L - repeat { - line <- readLines(con, n = 1L, warn = FALSE) - if (length(line) == 0L || !str_detect(line, "^#")) { - return(NULL) - } - lines <- lines + 1L - if (str_detect(line, "^#CHROM")) { - columns <- str_split(str_remove(line, "^#"), "\t")[[1L]] - return(list(columns = columns, lines = lines)) - } +# (## meta lines and the header) precede the variants; NULL without one. Read +# in windows of growing size: a header of thousands of ## lines (a VCF's +# contigs) costs a few reads, and a short one reads little. +#' @importFrom readr read_lines +#' @importFrom dplyr cumall +#' @noRd +.pvarHeader <- function(pvarPath, window = 1024L) { + top <- read_lines(pvarPath, n_max = window, progress = FALSE) + # The meta lines: the run of "#" lines the file starts with. + meta <- cumall(str_starts(top, "#")) + header <- which(meta & str_starts(top, "#CHROM")) + if (length(header) > 0L) { + line <- top[[header[[1L]]]] + return(list( + columns = str_split_1(str_remove(line, "^#"), "\t"), + lines = header[[1L]] + )) + } + if (!all(meta) || length(top) < window) { + return(NULL) } + .pvarHeader(pvarPath, window * 8L) } # Any .pvar pgenlibr reads, a variant at a time. diff --git a/R/h2Annotations.R b/R/h2Annotations.R index cc7310ea..73f7afc1 100644 --- a/R/h2Annotations.R +++ b/R/h2Annotations.R @@ -270,7 +270,10 @@ setMethod( #' ldScores = matrix(1, length(fm), 1, dimnames = list(NULL, "base_l2")), #' ldScoreWeights = rep(1, length(fm)) #' ) -#' annot <- fineMappingAnnotations(qtlFineMappingExample, ref, pipThreshold = 0.1) +#' annot <- fineMappingAnnotations( +#' qtlFineMappingExample, ref, +#' pipThreshold = 0.1 +#' ) #' colnames(annot) #' @importFrom checkmate assertMultiClass assertClass assertNumber #' @importFrom rlang arg_match arg_match0 @@ -287,11 +290,11 @@ fineMappingAnnotations <- function( ) { assertMultiClass(x, c("QtlFineMappingResult", "GwasFineMappingResult")) assertClass(ldRef, "LdStatistic") - types <- arg_match(types, multiple = TRUE) + chosenTypes <- arg_match(types, multiple = TRUE) assertNumber(coverage, lower = 0, upper = 1) assertNumber(minPurity, lower = 0, upper = 1, null.ok = TRUE) assertNumber(pipThreshold, lower = 0, upper = 1) - tier <- arg_match0(tier, c("candidate", "baseline")) + chosenTier <- arg_match0(tier, c("candidate", "baseline")) # The reference's variants, read off its ranges and alleles. refTable <- .variantTable(ldRef) tuples <- .enrAnnotationTuples(x) @@ -301,16 +304,16 @@ fineMappingAnnotations <- function( x = x, tuples = tuples, refTable = refTable, - types = types, + types = chosenTypes, coverage = coverage, minPurity = minPurity, pipThreshold = pipThreshold ) mat <- .fmaDropEmptyColumns(exec(cbind, !!!columns)) colTypes <- str_extract(colnames(mat), "[^|]+$") - meta <- data.frame( + meta <- tibble( name = colnames(mat), - tier = rep(tier, ncol(mat)), + tier = rep(chosenTier, ncol(mat)), type = if_else( is_in(colTypes, c("maxCpp", "sumPip")), "continuous", @@ -355,28 +358,19 @@ fineMappingAnnotations <- function( }, highPip = as.numeric(maxPip >= pipThreshold) )[types] - mat <- exec(cbind, !!!out) - colnames(mat) <- str_c(.fmaUnitName(tuples, k), "|", types) - mat + named <- set_names(out, str_c(.fmaUnitName(tuples, k), "|", types)) + exec(cbind, !!!named) } # A reference-length vector holding the largest (`f = "max"`) or the sum # (`"sum"`) of the values at each reference index `at`, 0 where none falls. -# @noRd +#' @importFrom dplyr summarise +#' @noRd .fmaScatter <- function(M, at, values, f) { - out <- numeric(M) - if (length(at) == 0L) { - return(out) - } - if (f == "sum") { - sums <- rowsum(values, at) - out[as.integer(rownames(sums))] <- sums[, 1L] - return(out) - } - o <- order(at, -values) - first <- o[!duplicated(at[o])] - out[at[first]] <- values[first] - out + combine <- switch(f, max = max, sum = sum) + byIndex <- tibble(at = at, value = values) |> + summarise(value = combine(.data$value), .by = "at") + replace(numeric(M), byIndex$at, byIndex$value) } # 1 for the reference variants (at their indices `at`) in a credible set of @@ -390,7 +384,7 @@ fineMappingAnnotations <- function( return(out) } labels <- as.character(md[[csCol]]) - inCs <- !is.na(labels) & + labelled <- !is.na(labels) & str_length(labels) > 0L & !str_detect(labels, "_0$") purCol <- str_c(csCol, "_purity") @@ -401,11 +395,13 @@ fineMappingAnnotations <- function( "{coverage}; minPurity filter skipped." )) } - if (!is.null(minPurity) && hasPurity) { + pure <- if (!is.null(minPurity) && hasPurity) { purity <- as.numeric(md[[purCol]]) - inCs <- inCs & !is.na(purity) & purity >= minPurity + !is.na(purity) & purity >= minPurity + } else { + TRUE } - members <- at[inCs] + members <- at[labelled & pure] replace(out, members[!is.na(members)], 1) } @@ -413,10 +409,20 @@ fineMappingAnnotations <- function( # collection does not have. # @noRd .fmaUnitName <- function(tuples, k) { - axes <- unlist(tuples[k, c("qtlStudy", "qtlContext", "qtlMethod")]) + axes <- map_chr( + c("qtlStudy", "qtlContext", "qtlMethod"), + .fmaTupleAxis, + tuples = tuples, + k = k + ) str_flatten(axes[!is.na(axes)], "|") } +# @noRd +.fmaTupleAxis <- function(column, tuples, k) { + as.character(tuples[[column]][[k]]) +} + # The columns with at least one non-zero entry, warning about the rest. # @noRd .fmaDropEmptyColumns <- function(mat) { diff --git a/R/h2EstimationWrappers.R b/R/h2EstimationWrappers.R index 0f66cd5f..56e9e663 100644 --- a/R/h2EstimationWrappers.R +++ b/R/h2EstimationWrappers.R @@ -417,8 +417,7 @@ NULL # @noRd .h2SpansOnes <- function(B) { decomp <- qr(crossprod(B)) - beta <- qr.coef(decomp, colSums(B)) - beta[is.na(beta)] <- 0 + beta <- coalesce(qr.coef(decomp, colSums(B)), 0) max(abs(1 - as.vector(B %*% beta))) < 1e-6 } @@ -744,7 +743,8 @@ NULL 1e-8 ) w <- 1 / (2 * mu^2) - ldCand <- exec(rbind, !!!map(blockStats, "ldCand")) + blockCands <- map(blockStats, "ldCand") + ldCand <- exec(rbind, !!!blockCands) Ub <- .h2EfficientScoreBlocks( N * lam * ldCand, cbind(N * lam * design$ldAnnot, N), @@ -769,16 +769,7 @@ lderUnivariate <- function( ) { rough <- !inSample(eigenRef) baselineMat <- .h2DesignMat(annotations) - # One pass over the blocks, each decomposed only while its statistics are - # taken, so a reference read from a panel holds one block at a time. - blockStats <- map( - .ldEigenBlocks(eigenRef), - .lderBlockStats, - eigenRef = eigenRef, - z = z, - baselineMat = baselineMat, - candMat = .h2CandidateMat(annotations) - ) + blockStats <- .lderAllBlockStats(eigenRef, z, baselineMat, annotations) design <- .lderDesign(blockStats, baselineMat) M <- length(design$x) fit <- .lderGetRes( @@ -812,6 +803,21 @@ lderUnivariate <- function( ) } +# Each LD block's LDER statistics, in one pass over the blocks, each +# decomposed only while its statistics are taken, so a reference read from a +# panel holds one block at a time. +# @noRd +.lderAllBlockStats <- function(eigenRef, z, baselineMat, annotations) { + map( + .ldEigenBlocks(eigenRef), + .lderBlockStats, + eigenRef = eigenRef, + z = z, + baselineMat = baselineMat, + candMat = .h2CandidateMat(annotations) + ) +} + # LDER's score statistics for the candidate annotations; NULL when there are # none to test. # @noRd @@ -1008,11 +1014,11 @@ NULL A = A, N = N ) - jkCoefs <- exec(rbind, !!!map(loo, "tau")) + taus <- map(loo, "tau") list( h2Se = .jackknifeSeFromLoo(map_dbl(loo, "h2")), intSe = .jackknifeSeFromLoo(map_dbl(loo, "intercept")), - annotationJackknifeCoefs = jkCoefs + annotationJackknifeCoefs = exec(rbind, !!!taus) ) } @@ -1061,14 +1067,22 @@ NULL # baseline and trusted the plug-in Omega. .gldscScoreStats <- function(contrib, coef) { left <- reduce(map(contrib, "L"), `+`) - lX <- reduce(map(contrib, function(cb) t(cb$cand$UX)), `+`) + lX <- reduce(map(contrib, .gldscCandidateCross), `+`) ridge <- 1e-8 * mean(abs(diag(left))) beta <- solve(left + diag(ridge, nrow(left)), lX) - Ub <- exec( - rbind, - !!!map(contrib, .gldscCandidateBlock, coef = coef, beta = beta) + blockScores <- map( + contrib, + .gldscCandidateBlock, + coef = coef, + beta = beta ) - .h2BlockScoreStats(Ub) + .h2BlockScoreStats(exec(rbind, !!!blockScores)) +} + +# One block's candidate cross-products X' Omega^-1 l_c, design by candidate. +# @noRd +.gldscCandidateCross <- function(cb) { + t(cb$cand$UX) } # Each LD block's efficient score for every candidate (a blocks x candidates @@ -1083,11 +1097,11 @@ NULL # signal -- and it needs no refit. `blockOf` gives each observation's block. # @noRd .h2EfficientScoreBlocks <- function(gC, G, info, e, blockOf) { - gC <- as.matrix(gC) + grad <- as.matrix(gC) gtg <- crossprod(G, G * info) ridge <- 1e-8 * mean(abs(diag(gtg))) - beta <- solve(gtg + diag(ridge, ncol(G)), crossprod(G, gC * info)) - rowsum((gC - G %*% beta) * e, blockOf) + beta <- solve(gtg + diag(ridge, ncol(G)), crossprod(G, grad * info)) + rowsum((grad - G %*% beta) * e, blockOf) } # Candidate score statistics from each LD block's score (a blocks x @@ -1099,12 +1113,12 @@ NULL # is. The candidates' correlation is that of their block scores. # @noRd .h2BlockScoreStats <- function(Ub) { - Ub <- as.matrix(Ub) - nB <- nrow(Ub) - U <- colSums(Ub) - centered <- sweep(Ub, 2L, U / nB) + blockScores <- as.matrix(Ub) + nB <- nrow(blockScores) + U <- colSums(blockScores) + centered <- sweep(blockScores, 2L, U / nB) V <- nB / (nB - 1) * colSums(centered^2) - R <- if (ncol(Ub) == 1L) { + R <- if (ncol(blockScores) == 1L) { matrix(1, 1, 1) } else { Rc <- stats::cov2cor(crossprod(centered)) @@ -1509,10 +1523,10 @@ NULL return(list(enrichment = NULL, scoreStats = NULL)) } lam <- design$lam - gradient <- function(scaled) scaled * lam^2 - lam / nPanel - ldCand <- exec(rbind, !!!map(blockData, "ldCand")) - gC <- gradient(sweep(ldCand, 2L, colSums(candMat), "/")) - G <- cbind(gradient(design$ldAnnotScaled), lam / n) + blockCands <- map(blockData, "ldCand") + ldCand <- exec(rbind, !!!blockCands) + gC <- .shdlGradient(sweep(ldCand, 2L, colSums(candMat), "/"), lam, nPanel) + G <- cbind(.shdlGradient(design$ldAnnotScaled, lam, nPanel), lam / n) Ub <- .h2EfficientScoreBlocks( gC, G, @@ -1528,6 +1542,14 @@ NULL ) } +# The derivative of each eigen-direction's modelled variance in an +# annotation's heritability, from the annotation's LD scores scaled by its +# size: l_ia lam_i^2 / M_a - lam_i / nPanel. +# @noRd +.shdlGradient <- function(scaled, lam, nPanel) { + scaled * lam^2 - lam / nPanel +} + # ============================================================================= # hdlUnivariate -- orchestrator # ============================================================================= @@ -1729,7 +1751,7 @@ sldscUnivariate <- function( parts <- attr(fit, "scoreParts") ldCand <- .h2StratifiedScores(ldRef, candMat)[parts$keep, , drop = FALSE] blockOf <- rep(seq_along(blockIdx), lengths(blockIdx))[ - order(unlist(blockIdx, use.names = FALSE)) + order(list_c(blockIdx)) ] Ub <- .h2EfficientScoreBlocks( ldCand, @@ -1896,18 +1918,23 @@ sldscUnivariate <- function( w0 = w0 ) fit <- .sldscCoefToFit(c(step2$coef, intercept), n, A) - # What the candidate score test reads (.sldscCandidateScores()): the - # step-2 regression, with the intercept step 1 estimated as a column so - # the candidates are residualized on it too. `attr<-`( fit, "scoreParts", - list( - keep = rep(TRUE, length(chi2)), - design = cbind(scores, 1), - w = step2$w, - resid = as.vector(chi2 - intercept - scores %*% step2$coef) - ) + .sldscUnivariateScoreParts(chi2, scores, intercept, step2) + ) +} + +# What the candidate score test reads (.sldscCandidateScores()) of a +# univariate fit: the step-2 regression, with the intercept step 1 estimated +# as a column so the candidates are residualized on it too. +# @noRd +.sldscUnivariateScoreParts <- function(chi2, scores, intercept, step2) { + list( + keep = rep(TRUE, length(chi2)), + design = cbind(scores, 1), + w = step2$w, + resid = as.vector(chi2 - intercept - scores %*% step2$coef) ) } @@ -2034,10 +2061,11 @@ sldscUnivariate <- function( A = A, nIter = nIter ) + taus <- map(loo, "tau") list( h2Se = .jackknifeSeFromLoo(map_dbl(loo, "h2")), intSe = .jackknifeSeFromLoo(map_dbl(loo, "intercept")), - annotationJackknifeCoefs = exec(rbind, !!!map(loo, "tau")) + annotationJackknifeCoefs = exec(rbind, !!!taus) ) } diff --git a/R/qtlEnrichmentPipeline.R b/R/qtlEnrichmentPipeline.R index c6cb4ea3..e100baa7 100644 --- a/R/qtlEnrichmentPipeline.R +++ b/R/qtlEnrichmentPipeline.R @@ -180,12 +180,12 @@ qtlEnrichmentPipeline <- function( ) { .assertMethodParam(qtlEnrichmentParam, "QtlEnrichmentParam") .assertBpparam(BPPARAM) - duplicatePips <- arg_match(duplicatePips) + pipRule <- arg_match(duplicatePips) .enrValidateInputs(gwasFineMappingResult, qtlFineMappingResult) prep <- .enrPrepare( gwasFineMappingResult, qtlFineMappingResult, - duplicatePips + pipRule ) gwasTuples <- prep$gwasTuples qtlTuples <- prep$qtlTuples @@ -393,10 +393,10 @@ qtlEnrichmentPipeline <- function( BPPARAM, seed, verbose, - gwasFineMappingResult = gwasFineMappingResult, - gwasTuples = gwasTuples, - qtlFineMappingResult = qtlFineMappingResult, - qtlTuples = qtlTuples + gwasFineMappingResult, + gwasTuples, + qtlFineMappingResult, + qtlTuples ) { outcome <- prep$outcomes[[gi]] if (length(outcome$pip) == 0L) { @@ -409,8 +409,11 @@ qtlEnrichmentPipeline <- function( return(list()) } # Where each union variant sits in this outcome's PIP vector. - outcomeAt <- rep(NA_integer_, .variantTableSize(prep$union$table)) - outcomeAt[prep$union$of[[gi]]] <- seq_along(outcome$pip) + outcomeAt <- replace( + rep(NA_integer_, .variantTableSize(prep$union$table)), + prep$union$of[[gi]], + seq_along(outcome$pip) + ) compact(map( seq_len(nrow(qtlTuples)), .enrScoreTuple, @@ -442,10 +445,10 @@ qtlEnrichmentPipeline <- function( BPPARAM, seed, verbose, - gwasFineMappingResult = gwasFineMappingResult, - gwasTuples = gwasTuples, - qtlFineMappingResult = qtlFineMappingResult, - qtlTuples = qtlTuples + gwasFineMappingResult, + gwasTuples, + qtlFineMappingResult, + qtlTuples ) { if (length(prep$annotations[[k]]$regions) == 0L) { msg <- glue( @@ -517,33 +520,18 @@ qtlEnrichmentPipeline <- function( qtlFineMappingResult, qtlTuples ) { - aligned <- prep$aligned[[k]] - annotation <- prep$annotations[[k]] try_fetch( - { - if (inherits(aligned, "condition")) { - cnd_signal(aligned) - } - nullFits <- .enrValidateFits(annotation$regions) - coded <- .enrCodeAligned( - annotation, - outcomeAt[aligned], - aligned, - prep$union$table - ) - exec( - .qtlEnrichmentCoded, - gwasPip = outcome$pip, - susieQtlRegions = annotation$regions, - coded = coded, - nullFits = nullFits, - gwasVariants = outcome$table, - BPPARAM = BPPARAM, - seed = seed, - verbose = verbose, - !!!qtlEnrichmentParam - ) - }, + .enrFitPair( + prep$aligned[[k]], + prep$annotations[[k]], + outcome, + outcomeAt, + prep$union$table, + qtlEnrichmentParam, + BPPARAM, + seed, + verbose + ), error = function(cnd) { eMsg <- conditionMessage(cnd) msg <- glue( @@ -558,6 +546,45 @@ qtlEnrichmentPipeline <- function( ) } +# The enrichment of one (outcome, annotation tuple) pair: the tuple's regions +# coded against the outcome through the precomputed alignment `aligned` +# (an error from aligning the tuple, kept as a value, is raised here). +# @noRd +.enrFitPair <- function( + aligned, + annotation, + outcome, + outcomeAt, + unionTable, + qtlEnrichmentParam, + BPPARAM, + seed, + verbose +) { + if (inherits(aligned, "condition")) { + cnd_signal(aligned) + } + nullFits <- .enrValidateFits(annotation$regions) + coded <- .enrCodeAligned( + annotation, + outcomeAt[aligned], + aligned, + unionTable + ) + exec( + .qtlEnrichmentCoded, + gwasPip = outcome$pip, + susieQtlRegions = annotation$regions, + coded = coded, + nullFits = nullFits, + gwasVariants = outcome$table, + BPPARAM = BPPARAM, + seed = seed, + verbose = verbose, + !!!qtlEnrichmentParam + ) +} + # Row-bind the enrichment records into the id-first result table. # @noRd .enrAssemble <- function(results) { @@ -608,22 +635,19 @@ qtlEnrichmentPipeline <- function( # is read once per tuple however many genes it has. Used by qtlEnrichment(), # whose interface is named vectors; the pipeline aligns variant tables # (.alignTablesToPanel()). -# @noRd +#' @importFrom vctrs vec_chop +#' @noRd .enrAlignRegions <- function( regions, panel, - panelTable = .lazyVariantTable(panel) + panelTable = .idsVariantTable(panel) ) { ids <- map(regions, .enrRegionIds) - flat <- as.character(unlist(ids, use.names = FALSE)) + flat <- as.character(list_c(ids)) idx <- .alignIdsToPanel(flat, panel, panelTable) matched <- !is.na(idx) aligned <- replace(flat, matched, panel[idx[matched]]) - regionOf <- factor( - rep(seq_along(regions), lengths(ids)), - levels = seq_along(regions) - ) - map2(regions, unname(split(aligned, regionOf)), .enrRenamePip) + map2(regions, vec_chop(aligned, sizes = lengths(ids)), .enrRenamePip) } # A region with its pip renamed (an unnamed pip has nothing to rename). @@ -648,14 +672,14 @@ qtlEnrichmentPipeline <- function( gwasFmr, idx[usable], fits[usable], - unplaced = function(i) NULL + onUnplaced = "skip" ) - pips <- map(fits[usable], function(fit) as.numeric(fit$pip)) + pips <- map(map(fits[usable], "pip"), as.numeric) n <- vars$n lined <- !is.na(n) & n == lengths(pips) held <- rep(lined[!is.na(n)], n[!is.na(n)]) list( - pip = unlist(pips[lined], use.names = FALSE), + pip = list_c(pips[lined]), table = .variantTableRows(vars$table, which(held)), row = rep(idx[usable][lined], n[lined]) ) @@ -713,25 +737,18 @@ qtlEnrichmentPipeline <- function( #' @noRd .enrCollapseDuplicateVariants <- function(pieces, duplicatePips, gwasFmr) { group <- vec_group_id(.variantKeyFrame(pieces$table)) - first <- which(!duplicated(group)) + first <- vec_unique_loc(group) if (length(first) == length(group)) { return(list(pip = pieces$pip, table = pieces$table)) } - out <- list( + collapsed <- list( pip = pieces$pip[first], table = .variantTableRows(pieces$table, first) ) - copied <- which(is_in(group, group[duplicated(group)])) - distinctPips <- copied[vec_unique_loc(data.frame( - group = group[copied], - pip = round(pieces$pip[copied], 12) - ))] - nPips <- tabulate(group[distinctPips], nbins = attr(group, "n")) - conflicting <- which(nPips > 1L) - if (length(conflicting) == 0L) { - return(out) + copies <- .enrConflictingCopies(group, pieces$pip) + if (length(copies) == 0L) { + return(collapsed) } - copies <- copied[is_in(group[copied], conflicting)] resolved <- switch( duplicatePips, error = .enrAbortConflictingPips( @@ -740,10 +757,24 @@ qtlEnrichmentPipeline <- function( max = .enrMaxPips(pieces, copies, group), blockEnd = .enrBlockEndPips(pieces, copies, group, gwasFmr) ) - # `out` holds each group once, in the order of first appearance, which - # is the order of the group ids. - out$pip[as.integer(names(resolved))] <- resolved - out + # `collapsed` holds each group once, in the order of first appearance, + # which is the order of the group ids. + list_assign( + collapsed, + pip = replace(collapsed$pip, as.integer(names(resolved)), resolved) + ) +} + +# The positions of every copy of each variant whose copies' PIPs conflict +# (differ to 12 digits); `group` is the variant at each position. +#' @importFrom vctrs vec_duplicate_detect +#' @importFrom dplyr filter n_distinct pull +#' @noRd +.enrConflictingCopies <- function(group, pip) { + copied <- which(vec_duplicate_detect(group)) + tibble(at = copied, group = group[copied], pip = round(pip[copied], 12)) |> + filter(n_distinct(.data$pip) > 1L, .by = "group") |> + pull("at") } # @noRd @@ -757,9 +788,12 @@ qtlEnrichmentPipeline <- function( } # The largest PIP of each conflicting variant, named by its group. -# @noRd +#' @importFrom dplyr summarise +#' @noRd .enrMaxPips <- function(pieces, copies, group) { - vapply(split(pieces$pip[copies], group[copies]), max, numeric(1)) + best <- tibble(group = group[copies], pip = pieces$pip[copies]) |> + summarise(pip = max(.data$pip), .by = "group") + set_names(best$pip, best$group) } # The PIP of each conflicting variant's copy from the one block whose given @@ -775,23 +809,32 @@ qtlEnrichmentPipeline <- function( given & as.character(seqnames(windows)) == pieces$table$chrom[copies] & end(windows) == pieces$table$pos[copies] - nAtEnd <- vapply(split(atEnd, group[copies]), sum, integer(1)) - undecided <- names(nAtEnd)[nAtEnd != 1L] - if (length(undecided) > 0L) { - which1 <- copies[group[copies] == as.integer(undecided[[1L]])][[1L]] - id <- .variantTableIds(.variantTableRows(pieces$table, which1)) - msg <- glue( - "qtlEnrichmentPipeline: variant '{id}' appears with ", - "conflicting PIPs across GWAS blocks, and duplicatePips = ", - "\"blockEnd\" cannot choose between them: ", - "{nAtEnd[[undecided[[1L]]]]} of its blocks were given a window ", - "ending at it, where one must be." - ) - abort(msg) + undecided <- tibble(group = group[copies], atEnd = atEnd) |> + summarise(nAtEnd = sum(.data$atEnd), .by = "group") |> + filter(.data$nAtEnd != 1L) |> + arrange(.data$group) + if (nrow(undecided) > 0L) { + .enrAbortUndecidedBlockEnd(pieces, copies, group, undecided) } set_names(pieces$pip[copies][atEnd], group[copies][atEnd]) } +# The first variant `undecided` lists (its group and how many of its blocks' +# windows end at it), refused for duplicatePips = "blockEnd". +# @noRd +.enrAbortUndecidedBlockEnd <- function(pieces, copies, group, undecided) { + first <- copies[group[copies] == undecided$group[[1L]]][[1L]] + id <- .variantTableIds(.variantTableRows(pieces$table, first)) + msg <- glue( + "qtlEnrichmentPipeline: variant '{id}' appears with ", + "conflicting PIPs across GWAS blocks, and duplicatePips = ", + "\"blockEnd\" cannot choose between them: ", + "{undecided$nAtEnd[[1L]]} of its blocks were given a window ", + "ending at it, where one must be." + ) + abort(msg) +} + # The union of the outcome tuples' variants, and each tuple's variants' index # in it: list(table, of). #' @importFrom vctrs vec_match vec_unique_loc @@ -802,16 +845,20 @@ qtlEnrichmentPipeline <- function( n <- .variantTableSize(tables[[1L]]) return(list(table = tables[[1L]], of = list(seq_len(n)))) } - all <- .bindVariantTables(tables) - frame <- .variantKeyFrame(all) - union <- .variantTableRows(all, vec_unique_loc(frame)) - unionFrame <- .variantKeyFrame(union) + joined <- .bindVariantTables(tables) + union <- .variantTableRows(joined, vec_unique_loc(.variantKeyFrame(joined))) list( table = union, - of = map(tables, function(t) vec_match(.variantKeyFrame(t), unionFrame)) + of = map(tables, .enrUnionIndex, unionFrame = .variantKeyFrame(union)) ) } +# Each variant of `table`'s index in the union's key frame `unionFrame`. +# @noRd +.enrUnionIndex <- function(table, unionFrame) { + vec_match(.variantKeyFrame(table), unionFrame) +} + # One annotation tuple's region fits for qtlEnrichment -- alpha, pip and the # prior variances -- and their variants as one variant table, region after # region: list(regions, table, n). Filters on BOTH study and context so @@ -828,11 +875,16 @@ qtlEnrichmentPipeline <- function( qtlFmr, idx[usable], fits[usable], - unplaced = function(i) .partsFitIds(.fmrRowParts(qtlFmr, i)) + onUnplaced = "error" + ) + list( + regions = set_names( + map(fits[usable], .enrRegionOf), + names(qtlFmr)[idx[usable]] + ), + table = vars$table, + n = vars$n ) - regions <- map(fits[usable], .enrRegionOf) - names(regions) <- names(qtlFmr)[idx[usable]] - list(regions = regions, table = vars$table, n = vars$n) } # Rows `idx`'s region payloads for qtlEnrichment with their PIPs named by @@ -842,28 +894,27 @@ qtlEnrichmentPipeline <- function( .enrRegionsAt <- function(qtlFmr, idx) { fits <- .fmrFitsAt(qtlFmr, idx) usable <- which(map_lgl(fits, .enrHasRegion)) - out <- vector("list", length(idx)) if (length(usable) == 0L) { - return(out) + return(vector("list", length(idx))) } vars <- .fmrRowsFitVariants( qtlFmr, idx[usable], fits[usable], - unplaced = function(i) .partsFitIds(.fmrRowParts(qtlFmr, i)) - ) - ids <- split( - .variantTableIds(vars$table), - factor(rep(seq_along(usable), vars$n), levels = seq_along(usable)) + onUnplaced = "error" ) - out[usable] <- map2( + regions <- map2( map(fits[usable], .enrRegionOf), - unname(ids), - function(region, ids) { - list_assign(region, pip = set_names(region$pip, ids)) - } + vec_chop(.variantTableIds(vars$table), sizes = vars$n), + .enrNamedRegion ) - out + replace(vector("list", length(idx)), usable, regions) +} + +# A region payload with its PIPs named by `ids`. +# @noRd +.enrNamedRegion <- function(region, ids) { + list_assign(region, pip = set_names(region$pip, ids)) } # One row's region payload for qtlEnrichment (see .enrRegionsAt()). @@ -880,9 +931,7 @@ qtlEnrichmentPipeline <- function( if (length(idx) == 0L) { return(list()) } - regions <- .enrRegionsAt(qtlFmr, idx) - names(regions) <- names(qtlFmr)[idx] - compact(regions) + compact(set_names(.enrRegionsAt(qtlFmr, idx), names(qtlFmr)[idx])) } # Whether `fit` carries what a region payload needs. @@ -912,40 +961,33 @@ qtlEnrichmentPipeline <- function( #' @noRd .enrCodeAligned <- function(annotation, outcomeIdx, unionIdx, unionTable) { absent <- which(is.na(outcomeIdx)) - codes <- outcomeIdx - 1L - nQtlOnly <- 0L - if (length(absent) > 0L) { - own <- .variantTableRows(annotation$table, absent) - inUnion <- !is.na(unionIdx[absent]) - key <- own - if (any(inUnion)) { - fromUnion <- .variantTableRows( - unionTable, - unionIdx[absent][inUnion] - ) - for (nm in names(key)) { - key[[nm]][inUnion] <- fromUnion[[nm]] - } - } - group <- vec_group_id(.variantKeyFrame(key)) - codes[absent] <- -as.vector(group) - nQtlOnly <- attr(group, "n") - } - regionOf <- factor( - rep(seq_along(annotation$regions), annotation$n), - levels = seq_along(annotation$regions) - ) + group <- .enrAbsentGroups(annotation$table, absent, unionIdx, unionTable) + codes <- replace(outcomeIdx - 1L, absent, -as.vector(group)) list( fits = map2( annotation$regions, - unname(split(codes, regionOf)), + vec_chop(codes, sizes = annotation$n), .enrCodedFit ), unmatched = NULL, - nQtlOnly = nQtlOnly + nQtlOnly = attr(group, "n") ) } +# The group id (vctrs) of each of the tuple's variables `absent` from the +# outcome: one per distinct variant -- the union's variant where the union +# holds it, else the tuple's own. +# @noRd +.enrAbsentGroups <- function(table, absent, unionIdx, unionTable) { + inUnion <- !is.na(unionIdx[absent]) + key <- .variantTableWithRows( + .variantTableRows(table, absent), + which(inUnion), + .variantTableRows(unionTable, unionIdx[absent][inUnion]) + ) + vec_group_id(.variantKeyFrame(key)) +} + # Pull one enrichment field from qtlEnrichment's list output as a scalar numeric # (NA when absent). # @noRd @@ -1209,22 +1251,21 @@ qtlEnrichment <- function( seed = NULL, gwasVariants = NULL ) { - # As in fastenloc, the variant universe is every GWAS variant plus every - # QTL variant the GWAS vector does not carry, which has GWAS PIP 0. - totalVariants <- .enrTotalVariants( + priors <- .enrPriors( + gwasPip, + susieQtlRegions, + coded$nQtlOnly, numGwas, - length(gwasPip) + coded$nQtlOnly + piQtl, + verbose ) - piGwas <- .enrEstimatePiGwas(gwasPip, totalVariants, numGwas, verbose) - piQtl <- .enrEstimatePiQtl(susieQtlRegions, piQtl, totalVariants, verbose) - .enrValidatePi(piGwas, piQtl) # cpp11 requires exact integer types for int parameters. en <- qtlEnrichmentCpp( rGwasPip = as.numeric(gwasPip), rQtlSusieFit = coded$fits, - piGwas = piGwas, - piQtl = piQtl, - totalVariants = totalVariants, + piGwas = priors$piGwas, + piQtl = priors$piQtl, + totalVariants = priors$totalVariants, ImpN = as.integer(impN), shrinkageLambda = lambda, doubleShrinkage = doubleShrinkage, @@ -1242,6 +1283,31 @@ qtlEnrichment <- function( ) } +# The variant total and the two priors the enrichment is taken over, checked. +# As in fastenloc, the variant universe is every GWAS variant plus every QTL +# variant the GWAS vector does not carry (`nQtlOnly` of them), which has GWAS +# PIP 0. +# @noRd +.enrPriors <- function( + gwasPip, + susieQtlRegions, + nQtlOnly, + numGwas, + piQtl, + verbose +) { + totalVariants <- .enrTotalVariants(numGwas, length(gwasPip) + nQtlOnly) + piGwas <- .enrEstimatePiGwas(gwasPip, totalVariants, numGwas, verbose) + qtlPrior <- .enrEstimatePiQtl( + susieQtlRegions, + piQtl, + totalVariants, + verbose + ) + .enrValidatePi(piGwas, qtlPrior) + list(totalVariants = totalVariants, piGwas = piGwas, piQtl = qtlPrior) +} + # The variant total both priors are taken over: fastenloc's -total_variants, # which may not fall below the number of distinct variants the data carry (the # GWAS PIP vector plus the QTL variants it lacks). Without numGwas that number @@ -1298,12 +1364,12 @@ qtlEnrichment <- function( "inside of credible sets or signal clusters." ) warn(msg) - piQtl <- sum(map_dbl(susieQtlRegions, .enrPipSum)) / totalVariants + estimate <- sum(map_dbl(susieQtlRegions, .enrPipSum)) / totalVariants if (verbose) { - piQtlR <- round(piQtl, 5) + piQtlR <- round(estimate, 5) inform(glue("Estimated piQtl: {piQtlR}\n", .trim = FALSE)) } - piQtl + estimate } # @noRd @@ -1391,7 +1457,7 @@ qtlEnrichment <- function( if (length(problems) > 0L) { abort(c( "qtlEnrichment: malformed QTL fit(s):", - set_names(utils::head(unlist(problems), 5L), "x") + set_names(utils::head(map_chr(problems, as.character), 5L), "x") )) } nullFit <- map_lgl(susieQtlRegions, .enrIsNullFit) @@ -1465,27 +1531,30 @@ qtlEnrichment <- function( # @noRd .enrCodeRegions <- function(regions, gwasNames) { ids <- map(regions, .enrRegionIds) - flat <- as.character(unlist(ids, use.names = FALSE)) + flat <- as.character(list_c(ids)) idx <- match(flat, gwasNames) absent <- is.na(idx) qtlOnly <- unique(flat[absent]) - codes <- idx - 1L - codes[absent] <- -match(flat[absent], qtlOnly) - regionOf <- factor( - rep(seq_along(regions), lengths(ids)), - levels = seq_along(regions) - ) - unmatched <- map( - unname(split(flat[absent], regionOf[absent])), - .enrNullIfEmpty + codes <- if_else(absent, -match(flat, qtlOnly), idx - 1L) + sizes <- lengths(ids) + unmatched <- map2( + vec_chop(flat, sizes = sizes), + vec_chop(absent, sizes = sizes), + .enrAbsentNames ) list( - fits = map2(regions, unname(split(codes, regionOf)), .enrCodedFit), + fits = map2(regions, vec_chop(codes, sizes = sizes), .enrCodedFit), unmatched = set_names(unmatched, names(regions)), nQtlOnly = length(qtlOnly) ) } +# A region's variable names `ids` the GWAS lacks (`absent`), or NULL for none. +# @noRd +.enrAbsentNames <- function(ids, absent) { + .enrNullIfEmpty(ids[absent]) +} + # @noRd .enrRegionIds <- function(x) { names(x$pip) @@ -1500,12 +1569,12 @@ qtlEnrichment <- function( # and the variables' integer codes. # @noRd .enrCodedFit <- function(x, codes) { - alpha <- x$alpha - if (!is.double(alpha)) { - storage.mode(alpha) <- "double" - } list( - alpha = alpha, + alpha = if (is.double(x$alpha)) { + x$alpha + } else { + `storage.mode<-`(x$alpha, value = "double") + }, prior_variance = as.numeric(x$prior_variance), codes = as.integer(codes) ) diff --git a/R/tupleSelectors.R b/R/tupleSelectors.R index cafa2ee1..3b2f642b 100644 --- a/R/tupleSelectors.R +++ b/R/tupleSelectors.R @@ -1250,8 +1250,8 @@ if (!is.null(restored)) { return(restored) } - pieces <- map(idx, .fmrRowVariantsAt, x = x) - suppressWarnings(exec(c, !!!unname(pieces))) + pieces <- unname(map(idx, .fmrRowVariantsAt, x = x)) + suppressWarnings(exec(c, !!!pieces)) } # The joined elements `gr` of rows `idx` with their pip and credible-set @@ -1262,12 +1262,7 @@ # restore (.fmRowRestoredVariants()) to handle. # @noRd .fmrRestoreAbsentColumns <- function(x, idx, gr) { - md <- mcols(x, use.names = FALSE) - records <- if (is.null(md$derivedColumns)) { - rep(list(character(0)), length(idx)) - } else { - map(idx, function(i) as.character(md$derivedColumns[[i]])) - } + records <- map(idx, .mdDerivedColumns, md = mcols(x, use.names = FALSE)) if (!all(map_lgl(records, identical, records[[1L]]))) { return(NULL) } @@ -1281,18 +1276,16 @@ if (any(map_lgl(pieces, is.null))) { return(NULL) } - joined <- map( - set_names(names(pieces[[1L]])), - function(nm) unlist(map(pieces, nm), use.names = FALSE) - ) - out <- gr - if (length(record$labels) > 0L) { - out <- .fmRowInsertColumns(out, joined[csCols], .fmRowCsSlot(cn)) + joined <- map(set_names(names(pieces[[1L]])), .joinedField, parts = pieces) + withCs <- if (length(record$labels) > 0L) { + .fmRowInsertColumns(gr, joined[csCols], .fmRowCsSlot(cn)) + } else { + gr } .fmRowInsertColumns( - out, + withCs, joined["pip"], - .fmRowPipSlot(colnames(mcols(out, use.names = FALSE))) + .fmRowPipSlot(colnames(mcols(withCs, use.names = FALSE))) ) } @@ -1312,12 +1305,13 @@ } else { .fitColumnsPlaced(x[[i]], fit) } - cs <- list() - if (length(record$labels) > 0L) { - cs <- .fitCsColumns(fit, record$labels, record$tag, cols, n) - if (is.null(cs)) { - return(NULL) - } + cs <- if (length(record$labels) > 0L) { + .fitCsColumns(fit, record$labels, record$tag, cols, n) + } else { + list() + } + if (is.null(cs)) { + return(NULL) } c(cs, list(pip = as.numeric(pip)[cols])) } @@ -1647,62 +1641,86 @@ # for a row placed nowhere, which contributes none). A fit's variants are the # names it gives its PIPs; else, for a row holding all of its fit, the row's # own variants, read off its ranges without rendering an id; else, for a -# narrowed row, the names the fit gives its variables, or `unplaced(i)`. +# narrowed row, the names the fit gives its variables. A narrowed row whose +# fit names none is placed nowhere when `onUnplaced` is "skip", and is an +# error when it is "error" (.abortUnnamedNarrowedFit()). # @noRd -#' @importFrom purrr map2_lgl -.fmrRowsFitVariants <- function(x, idx, fits, unplaced) { +#' @importFrom purrr map2_lgl pmap +.fmrRowsFitVariants <- function(x, idx, fits, onUnplaced = c("skip", "error")) { + rule <- arg_match(onUnplaced) n <- unname(lengths(x))[idx] - named <- map(fits, function(fit) names(fit[["pip"]])) - holds <- map2_lgl(n, map_int(fits, .fitWidth), .rowHoldsFit) - fromRows <- map_lgl(named, is.null) & holds - for (k in which(map_lgl(named, is.null) & !holds)) { - named[k] <- list(.fitVariableNames(fits[[k]]) %||% unplaced(idx[[k]])) - } - len <- ifelse(fromRows, n, lengths(named)) - len[!fromRows & map_lgl(named, is.null)] <- NA_integer_ + widths <- map_int(fits, .fitWidth) + pipNames <- map(fits, .fitPipNames) + fromRows <- map_lgl(pipNames, is.null) & map2_lgl(n, widths, .rowHoldsFit) + named <- pmap( + list(pipNames, fits, fromRows, n, widths), + .fmrRowFitNames, + onUnplaced = rule + ) + len <- if_else( + fromRows | !map_lgl(named, is.null), + if_else(fromRows, n, lengths(named)), + NA_integer_ + ) if (all(fromRows)) { - return(list( - table = .variantTable(.rtlGatherElements(x, idx)), - n = as.integer(len) - )) + return(list(table = .variantTable(.rtlGatherElements(x, idx)), n = len)) } - counts <- replace(len, is.na(len), 0L) - offset <- cumsum(c(0L, counts))[seq_along(counts)] - at <- function(ks) { - unlist( - map(ks, function(k) offset[[k]] + seq_len(counts[[k]])), - use.names = FALSE - ) + list(table = .fmrRowsFitTable(x, idx, named, fromRows, len), n = len) +} + +# @noRd +.fitPipNames <- function(fit) { + names(fit[["pip"]]) +} + +# The names one row's fit gives its variants (see .fmrRowsFitVariants()): its +# PIPs' names, or none for a row read off its own ranges (`fromRows`); else, +# for a narrowed row, the names the fit gives its variables. +# @noRd +.fmrRowFitNames <- function(pipNames, fit, fromRows, n, width, onUnplaced) { + if (!is.null(pipNames) || fromRows) { + return(pipNames) } - total <- sum(counts) - out <- list( - chrom = rep(NA_character_, total), - pos = rep(NA_integer_, total), - A2 = rep(NA_character_, total), - A1 = rep(NA_character_, total) - ) - fill <- function(out, where, tab) { - for (f in names(out)) { - out[[f]][where] <- tab[[f]] - } - out + named <- .fitVariableNames(fit) + if (is.null(named) && onUnplaced == "error") { + .abortUnnamedNarrowedFit(n, width) } - if (any(fromRows)) { - out <- fill( - out, - at(which(fromRows)), + named +} + +# The variant table of rows `idx` (see .fmrRowsFitVariants()), row after row: +# the rows read off their own ranges in one read, and the rest from the names +# their fits give in one parse, each placed at its rows' slots. +# @noRd +.fmrRowsFitTable <- function(x, idx, named, fromRows, len) { + counts <- coalesce(len, 0L) + starts <- cumsum(c(0L, counts))[seq_along(counts)] + empty <- .naVariantTable(sum(counts)) + withRows <- if (any(fromRows)) { + .variantTableWithRows( + empty, + .rowSlots(which(fromRows), starts, counts), .variantTable(.rtlGatherElements(x, idx[fromRows])) ) + } else { + empty } byName <- which(!fromRows & !is.na(len)) - if (length(byName) > 0L) { - out <- fill( - out, - at(byName), - .idsVariantTable(unlist(named[byName], use.names = FALSE)) - ) + if (length(byName) == 0L) { + return(withRows) } - list(table = out, n = as.integer(len)) + .variantTableWithRows( + withRows, + .rowSlots(byName, starts, counts), + .idsVariantTable(list_c(named[byName])) + ) +} + +# The positions rows `ks` take in a table of rows laid out row after row, +# row k starting after `starts[k]` and holding `counts[k]`. +# @noRd +.rowSlots <- function(ks, starts, counts) { + rep(starts[ks], counts[ks]) + sequence(counts[ks]) } # The fits of rows `idx` of a fine-mapping collection, as a list. diff --git a/R/variantId.R b/R/variantId.R index a937b574..306fbae5 100644 --- a/R/variantId.R +++ b/R/variantId.R @@ -521,7 +521,10 @@ normalizeVariantId <- function(ids, chrPrefix = TRUE, convention = NULL) { # UCSC chromosome, a position without leading zeros, and two alleles, with # no build suffix and no underscore. # @noRd -.CANONICAL_VARIANT_ID <- "^chr(1[0-9]|2[0-2]|[1-9]|X|Y|M):[1-9][0-9]*:[^:_]+:[^:_]+$" +.CANONICAL_VARIANT_ID <- str_c( + "^chr(1[0-9]|2[0-2]|[1-9]|X|Y|M)", + ":[1-9][0-9]*:[^:_]+:[^:_]+$" +) # Complement a DNA allele string (A<->T, C<->G) for strand flipping. # @noRd @@ -741,13 +744,20 @@ harmonizeAlleles <- function( .frameVariantTable(refVariants) ) keys <- c("chrom", "pos") + # Indexed, not slice()d: a caller's frame may carry NA or "" column + # names, which dplyr refuses. left <- targetData[pairs$query, , drop = FALSE] - right <- refVariants[pairs$subject, , drop = FALSE] - right <- right[, !is_in(colnames(right), keys), drop = FALSE] + right <- refVariants[ + pairs$subject, + !is_in(colnames(refVariants), keys), + drop = FALSE + ] both <- setdiff(intersect(colnames(left), colnames(right)), keys) - colnames(left) <- .suffixed(colnames(left), both, ".target") - colnames(right) <- .suffixed(colnames(right), both, ".ref") - bind_cols(left, right, .name_repair = "minimal") |> + bind_cols( + set_names(left, .suffixed(colnames(left), both, ".target")), + set_names(right, .suffixed(colnames(right), both, ".ref")), + .name_repair = "minimal" + ) |> as_tibble(.name_repair = "minimal") |> .sanitizeNames() } @@ -1172,10 +1182,9 @@ harmonizeAlleles <- function( # @noRd #' @importFrom IRanges findOverlaps IRanges .variantPairs <- function(a, b, maxDistance = 0L) { - levels <- unique(c(a$chrom, b$chrom)) - levels <- levels[!is.na(levels)] - ra <- .variantPairRanges(a, levels) - rb <- .variantPairRanges(b, levels) + chromLevels <- setdiff(c(a$chrom, b$chrom), NA) + ra <- .variantPairRanges(a, chromLevels) + rb <- .variantPairRanges(b, chromLevels) hits <- findOverlaps( ra$gr, rb$gr, @@ -1212,31 +1221,31 @@ harmonizeAlleles <- function( # alleles leave the strand undecidable (A/T, C/G). Case-insensitive. # @noRd .variantPairFlags <- function(a1t, a2t, a1r, a2r) { - a1t <- .upperAlleles(a1t) - a2t <- .upperAlleles(a2t) - a1r <- .upperAlleles(a1r) - a2r <- .upperAlleles(a2r) - flip1 <- .strandFlip(a1r) - flip2 <- .strandFlip(a2r) - differ <- a1t != a1r & a2t != a2r + t1 <- .upperAlleles(a1t) + t2 <- .upperAlleles(a2t) + r1 <- .upperAlleles(a1r) + r2 <- .upperAlleles(a2r) + flip1 <- .strandFlip(r1) + flip2 <- .strandFlip(r2) + differ <- t1 != r1 & t2 != r2 list( - strandUnambiguous = !((a1t == "A" & a2t == "T") | - (a1t == "T" & a2t == "A") | - (a1t == "C" & a2t == "G") | - (a1t == "G" & a2t == "C")), - exact = a1t == a1r & a2t == a2r, - signFlip = ((a1t == a2r & a2t == a1r) | - (a1t == flip2 & a2t == flip1)) & + strandUnambiguous = !((t1 == "A" & t2 == "T") | + (t1 == "T" & t2 == "A") | + (t1 == "C" & t2 == "G") | + (t1 == "G" & t2 == "C")), + exact = t1 == r1 & t2 == r2, + signFlip = ((t1 == r2 & t2 == r1) | + (t1 == flip2 & t2 == flip1)) & differ, - strandFlip = ((a1t == flip1 & a2t == flip2) | - (a1t == flip2 & a2t == flip1)) & + strandFlip = ((t1 == flip1 & t2 == flip2) | + (t1 == flip2 & t2 == flip1)) & differ, - indel = a2t == "I" | - a2t == "D" | - str_length(a2t) > 1L | - str_length(a1t) > 1L, - idMatch = (a2t == "D" | a2t == "I") & - (str_length(a1r) > 1L | str_length(a2r) > 1L) + indel = t2 == "I" | + t2 == "D" | + str_length(t2) > 1L | + str_length(t1) > 1L, + idMatch = (t2 == "D" | t2 == "I") & + (str_length(r1) > 1L | str_length(r2) > 1L) ) } @@ -1247,15 +1256,15 @@ harmonizeAlleles <- function( # @noRd .variantPairKeep <- function(flags, removeStrandAmbiguous, removeIndels) { decided <- if (removeStrandAmbiguous) flags$strandUnambiguous else TRUE - keep <- ifelse( + allelesMatch <- if_else( flags$strandFlip, decided | flags$exact | flags$idMatch, flags$exact | flags$signFlip | flags$idMatch ) - if (removeIndels) { - keep <- ifelse(flags$indel, FALSE, keep) + if (!removeIndels) { + return(allelesMatch) } - keep + if_else(flags$indel, FALSE, allelesMatch) } # `keep` with each target settled on at most one reference variant. A target @@ -1270,7 +1279,7 @@ harmonizeAlleles <- function( if (anyDuplicated(target) == 0L) { return(keep) } - distinctSigns <- vec_unique_loc(data.frame( + distinctSigns <- vec_unique_loc(tibble( target = target, sign = signFlip[hit] )) @@ -1299,17 +1308,14 @@ harmonizeAlleles <- function( } flags <- .variantPairFlags(a$A1[q], a$A2[q], b$A1[sbj], b$A2[sbj]) keep <- .variantPairKeep(flags, removeStrandAmbiguous, removeIndels) - kept <- which(.variantPairResolve(q, keep, flags$signFlip) %in% TRUE) - claimed <- kept[vec_unique_loc(data.frame( - chrom = b$chrom[sbj[kept]], - pos = b$pos[sbj[kept]], - A2 = b$A2[sbj[kept]], - A1 = b$A1[sbj[kept]] - ))] + kept <- which(is_in(.variantPairResolve(q, keep, flags$signFlip), TRUE)) + claimed <- kept[vec_unique_loc( + .variantKeyFrame(.variantTableRows(b, sbj[kept])) + )] list( idxA = q[claimed], idxB = sbj[claimed], - sign = as.numeric(ifelse(flags$signFlip[claimed], -1, 1)) + sign = if_else(flags$signFlip[claimed], -1, 1) ) } @@ -1440,32 +1446,46 @@ matchVariants <- function( # ("chr1:100:A:G") is split on its separator, at a fraction of the cost of the # regex every other spelling takes: a genome-wide panel holds millions. # @noRd -#' @importFrom stringi stri_split_fixed .idsVariantTable <- function(ids) { - ids <- as.character(ids) - canon <- str_detect(ids, .CANONICAL_VARIANT_ID) - canon[is.na(canon)] <- FALSE + spelled <- as.character(ids) + canon <- coalesce(str_detect(spelled, .CANONICAL_VARIANT_ID), FALSE) if (all(canon)) { - return(.canonicalVariantTable(ids)) + return(.canonicalVariantTable(spelled)) } - out <- list( - chrom = rep(NA_character_, length(ids)), - pos = rep(NA_integer_, length(ids)), - A2 = rep(NA_character_, length(ids)), - A1 = rep(NA_character_, length(ids)) + withCanon <- .variantTableWithRows( + .naVariantTable(length(spelled)), + which(canon), + .canonicalVariantTable(spelled[canon]) ) - if (any(canon)) { - fields <- .canonicalVariantTable(ids[canon]) - for (nm in names(out)) { - out[[nm]][canon] <- fields[[nm]] - } - } - p <- parseVariantId(ids[!canon]) - out$chrom[!canon] <- as.character(p$chrom) - out$pos[!canon] <- as.integer(p$pos) - out$A2[!canon] <- as.character(p$A2) - out$A1[!canon] <- as.character(p$A1) - .unparsedAsSpelled(out, ids) + parsed <- .variantTableWithRows( + withCanon, + which(!canon), + .variantTable(spelled[!canon]) + ) + .unparsedAsSpelled(parsed, spelled) +} + +# A variant table of `n` variants with every field missing. +# @noRd +.naVariantTable <- function(n) { + list( + chrom = rep(NA_character_, n), + pos = rep(NA_integer_, n), + A2 = rep(NA_character_, n), + A1 = rep(NA_character_, n) + ) +} + +# The variant table `tab` with its rows `rows` taken, in order, from the +# variant table `from`. +# @noRd +.variantTableWithRows <- function(tab, rows, from) { + map2(tab, from[names(tab)], .replaceRows, rows = rows) +} + +# @noRd +.replaceRows <- function(column, values, rows) { + replace(column, rows, values) } # A variant table's rows whose id did not parse (an rsID), each made a variant @@ -1475,17 +1495,16 @@ matchVariants <- function( # while the rest are matched by their variants. # @noRd .unparsedAsSpelled <- function(tab, ids) { - bad <- which(is.na(tab$chrom) | is.na(tab$pos)) - if (length(bad) == 0L) { + bad <- (is.na(tab$chrom) | is.na(tab$pos)) & !is.na(ids) + if (!any(bad)) { return(tab) } - spelled <- !is.na(ids[bad]) - bad <- bad[spelled] - tab$chrom[bad] <- str_c(.UNPARSED_CHROM, ids[bad]) - tab$pos[bad] <- 1L - tab$A2[bad] <- ids[bad] - tab$A1[bad] <- "" - tab + list( + chrom = if_else(bad, str_c(.UNPARSED_CHROM, ids), tab$chrom), + pos = if_else(bad, 1L, tab$pos), + A2 = if_else(bad, ids, tab$A2), + A1 = if_else(bad, "", tab$A1) + ) } # The chromosome-name prefix of the variants .unparsedAsSpelled() makes. @@ -1506,27 +1525,34 @@ matchVariants <- function( length(tab$pos) } -# A variant table as a data.frame keyed by every field, for hashing variants +# A variant table as a tibble keyed by every field, for hashing variants # (vctrs) without rendering ids. # @noRd .variantKeyFrame <- function(tab) { - data.frame(chrom = tab$chrom, pos = tab$pos, A2 = tab$A2, A1 = tab$A1) + tibble(chrom = tab$chrom, pos = tab$pos, A2 = tab$A2, A1 = tab$A1) } # Variant tables joined, in order. # @noRd .bindVariantTables <- function(tables) { - fields <- c("chrom", "pos", "A2", "A1") - set_names( - map(fields, function(f) unlist(map(tables, f), use.names = FALSE)), - fields + map( + set_names(c("chrom", "pos", "A2", "A1")), + .joinedField, + parts = tables ) } +# Field `field` of each of `parts`, joined into one vector. +# @noRd +.joinedField <- function(field, parts) { + unname(list_c(map(parts, field))) +} + # The fields of canonical ids, split on ":". # @noRd +#' @importFrom stringr str_split_fixed .canonicalVariantTable <- function(ids) { - m <- stri_split_fixed(ids, ":", n = 4L, simplify = TRUE) + m <- str_split_fixed(ids, fixed(":"), 4L) list( chrom = m[, 1L], pos = as.integer(m[, 2L]), @@ -1538,21 +1564,7 @@ matchVariants <- function( # A variant table subset to rows `i`. # @noRd .variantTableRows <- function(tab, i) { - map(tab, function(col) col[i]) -} - -# A panel's variant table, computed on first use: parsing a genome-wide -# panel's ids costs seconds, and when every id matched against it is spelled -# as a panel id, none is needed. -# @noRd -.lazyVariantTable <- function(panel) { - tab <- NULL - function() { - if (is.null(tab)) { - tab <<- .idsVariantTable(panel) - } - tab - } + map(tab, `[`, i) } # Match variant tables `query` to a `panel`: each query variant's index in the @@ -1565,10 +1577,10 @@ matchVariants <- function( #' @importFrom vctrs vec_match vec_group_id .alignTablesToPanel <- function(query, panel) { qf <- .variantKeyFrame(query) - idx <- vec_match(qf, .variantKeyFrame(panel)) - unmatched <- which(is.na(idx) & !is.na(query$pos)) + exact <- vec_match(qf, .variantKeyFrame(panel)) + unmatched <- which(is.na(exact) & !is.na(query$pos)) if (length(unmatched) == 0L) { - return(idx) + return(exact) } group <- vec_group_id(qf[unmatched, , drop = FALSE]) first <- unmatched[match(seq_len(attr(group, "n")), group)] @@ -1577,36 +1589,35 @@ matchVariants <- function( panel, removeStrandAmbiguous = FALSE ) - hit <- rep(NA_integer_, length(first)) - hit[m$idxA] <- m$idxB - idx[unmatched] <- hit[as.vector(group)] - idx + hit <- replace(rep(NA_integer_, length(first)), m$idxA, m$idxB) + replace(exact, unmatched, hit[as.vector(group)]) } # Match variant ids to a panel of variant ids: each id's index in `panel`, or # NA. An id spelled exactly as a panel id takes that one; the rest that parse # are matched by their variants (.alignTablesToPanel()), and an id that does -# not parse (an rsID) only by its spelling. `panelTable` supplies the panel's -# variant table (see .lazyVariantTable()). +# not parse (an rsID) only by its spelling. `panelTable` is the panel's +# variant table; as a default argument it is read only when some id is not +# spelled as a panel id, since parsing a genome-wide panel's ids costs +# seconds. # @noRd .alignIdsToPanel <- function( ids, panel, - panelTable = .lazyVariantTable(panel) + panelTable = .idsVariantTable(panel) ) { - idx <- match(ids, panel) - unmatched <- which(is.na(idx)) + exact <- match(ids, panel) + unmatched <- which(is.na(exact)) if (length(unmatched) == 0L) { - return(idx) + return(exact) } rest <- .idsVariantTable(ids[unmatched]) parsed <- which(!is.na(rest$chrom) & !is.na(rest$pos)) if (length(parsed) == 0L) { - return(idx) + return(exact) } - at <- .alignTablesToPanel(.variantTableRows(rest, parsed), panelTable()) - idx[unmatched[parsed]] <- at - idx + at <- .alignTablesToPanel(.variantTableRows(rest, parsed), panelTable) + replace(exact, unmatched[parsed], at) } #' Classify variant type from allele strings diff --git a/man/fineMappingAnnotations.Rd b/man/fineMappingAnnotations.Rd index 49e47491..869eb7d7 100644 --- a/man/fineMappingAnnotations.Rd +++ b/man/fineMappingAnnotations.Rd @@ -91,6 +91,9 @@ ref <- LdScore( ldScores = matrix(1, length(fm), 1, dimnames = list(NULL, "base_l2")), ldScoreWeights = rep(1, length(fm)) ) -annot <- fineMappingAnnotations(qtlFineMappingExample, ref, pipThreshold = 0.1) +annot <- fineMappingAnnotations( + qtlFineMappingExample, ref, + pipThreshold = 0.1 +) colnames(annot) } diff --git a/tests/testthat/test_AllClasses.R b/tests/testthat/test_AllClasses.R index 1f028727..b4761604 100644 --- a/tests/testthat/test_AllClasses.R +++ b/tests/testthat/test_AllClasses.R @@ -1485,6 +1485,21 @@ test_that("trimFineMappingResult trims by role, picked by class", { ) }) +test_that("trimming passes over what has nothing to trim", { + # A cross-validation-only row holds no variants and no fit. + cvOnly <- QtlFineMappingResult( + studyName = "s1", + context = "c1", + trait = "g1", + method = "susie", + entry = list(pecotmr:::.fmCvOnlyRow()) + ) + expect_identical(lengths(trimFineMappingResult(cvOnly)), lengths(cvOnly)) + expect_null(pecotmr:::.trimFit(NULL, "outcome")) + expect_identical(pecotmr:::.trimFit(list(), "annotation"), list()) + expect_null(pecotmr:::.trimNamed(NULL, "chr1:100:A:G")) +}) + test_that("trimFineMappingResult refuses an unknown role or input", { x <- .fmLoadExample("qtlFineMappingExample") expect_error(trimFineMappingResult(x, role = "both"), "must be one of") diff --git a/tests/testthat/test_RangedTupleList.R b/tests/testthat/test_RangedTupleList.R index 47045c4c..4698b9bc 100644 --- a/tests/testthat/test_RangedTupleList.R +++ b/tests/testthat/test_RangedTupleList.R @@ -1273,3 +1273,28 @@ test_that("genomicRegion() is each row's span unless a region was stored", { expect_identical(genomicRegion(x), stored) expect_length(genomicRegion(x[0]), 0L) }) + +test_that("nesting a flattened trimmed collection leaves its fits' columns", { + # A trimmed collection leaves its pip and credible-set columns to its + # fits; flattening restores them, and re-nesting drops them again once + # the fits give them back exactly. + trimmed <- trimFineMappingResult(.fmLoadExample("qtlFineMappingExample")) + recorded <- S4Vectors::mcols(trimmed)$derivedColumns[[1L]] + expect_true(length(recorded) > 0L) + flat <- flattenTupleRanges(trimmed) + derived <- c("pip", "cs_95", "cs_95_purity") + expect_true(all(derived %in% colnames(S4Vectors::mcols(flat)))) + nested <- nestTupleRanges(flat, trimmed) + expect_false(any(derived %in% .fmStoredColumns(nested))) + expect_equal( + topLoci(nested, signalCutoff = 0), + topLoci(trimmed, signalCutoff = 0) + ) + # A credible-set column a verb changed no longer matches the fits, so it + # is stored as it was changed. + relabelled <- flat + S4Vectors::mcols(relabelled)$cs_95 <- "susie_0" + kept <- nestTupleRanges(relabelled, trimmed) + expect_true("cs_95" %in% .fmStoredColumns(kept)) + expect_true(all(S4Vectors::mcols(unlist(kept))$cs_95 == "susie_0")) +}) diff --git a/tests/testthat/test_fineMappingRow.R b/tests/testthat/test_fineMappingRow.R index 5fcbfc9a..7b71c5b9 100644 --- a/tests/testthat/test_fineMappingRow.R +++ b/tests/testthat/test_fineMappingRow.R @@ -1883,3 +1883,98 @@ test_that("a collection joining saved and rebuilt rows reads every pip", { topLoci(old, signalCutoff = 0) ) }) + +# =========================================================================== +# Restoring the columns a row leaves to its fit: where nothing is restored +# =========================================================================== + +.fmr_ids <- c("chr1:100:A:G", "chr1:200:C:T") + +# A row's variants as stored, from a fit that gives none of its columns +# back, so the table's pip and credible-set columns all stay. +.fmr_storedVariants <- function() { + variants(FineMappingRow( + .fmr_ids, + list(), + data.frame( + variant_id = .fmr_ids, + pip = c(0.4, 0.6), + cs_95 = c("susie_1", "susie_0"), + cs_95_purity = c(0.9, 0) + ) + )) +} + +test_that("the pip and credible-set slots follow their anchor columns", { + expect_identical(pecotmr:::.fmRowPipSlot(c("variant_id", "beta")), 0L) + expect_identical(pecotmr:::.fmRowPipSlot(c("A2", "marginal_p", "x")), 2L) + expect_identical(pecotmr:::.fmRowCsSlot(c("A2", "logBF", "x")), 2L) + expect_identical(pecotmr:::.fmRowCsSlot(c("A2", "pip", "x")), 2L) + expect_identical(pecotmr:::.fmRowCsSlot(c("A2", "x")), 1L) +}) + +test_that("credible-set labels give a method tag only when they share one", { + tag <- pecotmr:::.fmRowCsLabelTag + expect_identical( + tag(S4Vectors::DataFrame(cs_95 = c("susie_1", "susie_0"))), + "susie" + ) + expect_null(tag(S4Vectors::DataFrame(cs_95 = c("susie_1", "fsusie_1")))) + expect_null(tag(S4Vectors::DataFrame(cs_95 = c("_1", "_2")))) +}) + +test_that("a fit gives no credible-set columns it cannot place or label", { + fit <- list(pip = c(0.5, 0.5)) + cols <- pecotmr:::.fitCsColumns + expect_null(cols(fit, "cs_95", NULL, 1:2, 2L)) + expect_null(cols(fit, "cs_95", "susie", NULL, 2L)) + expect_null(cols(fit, "cs_95", "susie", c(1L, NA), 2L)) + # Nor without the credible sets of the coverage asked for. + expect_null(cols(fit, "cs_95", "susie", 1:2, 2L)) +}) + +test_that("restoring leaves what a row stores, or its fit cannot give", { + gr <- .fmr_storedVariants() + row <- methods::new( + "FineMappingRow", + variants = gr, + susieFit = list(pip = c(0.4, 0.6)), + derivedColumns = c("cs_95", "method=susie") + ) + # Every credible-set column it records is stored. + expect_identical(pecotmr:::.fmRowRestoreFitCs(gr, row), gr) + # Without them, a fit with no credible sets gives nothing back. + bare <- gr + S4Vectors::mcols(bare) <- S4Vectors::mcols(gr)[, c("A1", "A2", "pip")] + expect_identical(pecotmr:::.fmRowRestoreFitCs(bare, row), bare) + # A fit with no PIPs gives no pip back. + noPip <- bare + S4Vectors::mcols(noPip) <- S4Vectors::mcols(gr)[, c("A1", "A2")] + fitless <- methods::new( + "FineMappingRow", + variants = noPip, + susieFit = list(alpha = matrix(0.5, 1L, 2L)) + ) + expect_identical(pecotmr:::.fmRowRestoreFitPip(noPip, fitless), noPip) +}) + +test_that(".fmRowFillColumn fills only a column left all NA", { + md <- S4Vectors::DataFrame(a = c(1, 2), b = c(NA_real_, NA_real_)) + derived <- list(a = c(9, 9), b = c(3, 4)) + expect_identical(pecotmr:::.fmRowFillColumn(md, "a", derived), md) + filled <- pecotmr:::.fmRowFillColumn(md, "b", derived) + expect_identical(filled$b, c(3, 4)) + expect_identical(filled$a, md$a) +}) + +test_that("a row saved before rows recorded derived columns derives none", { + row <- FineMappingRow( + .fmr_ids, + list(pip = c(0.4, 0.6)), + data.frame(variant_id = .fmr_ids, pip = c(0.4, 0.6)) + ) + old <- row + attr(old, "derivedColumns") <- NULL + expect_false(methods::.hasSlot(old, "derivedColumns")) + expect_identical(pecotmr:::.fmRowDerivedColumns(old), character(0)) +}) diff --git a/tests/testthat/test_genotypeIo.R b/tests/testthat/test_genotypeIo.R index af15fef1..30ceb984 100644 --- a/tests/testthat/test_genotypeIo.R +++ b/tests/testthat/test_genotypeIo.R @@ -2558,3 +2558,35 @@ test_that(".updatePanel refuses a saved panel it cannot read again", { expect_s3_class(cnd, "pecotmrUnreadablePanel") expect_match(conditionMessage(cnd), "no longer hold every variant") }) + +# --- .pvarHeader / .readPvarTable: where the variants start ----------------- + +.gio_pvar <- function(lines) { + path <- tempfile(fileext = ".pvar") + writeLines(lines, path) + path +} + +test_that(".pvarHeader finds the #CHROM line after the meta lines", { + meta <- sprintf("##contig=", 1:5) + path <- .gio_pvar(c(meta, "#CHROM\tPOS\tID\tREF\tALT", "1\t10\tv1\tA\tG")) + header <- pecotmr:::.pvarHeader(path) + expect_identical(header$columns, c("CHROM", "POS", "ID", "REF", "ALT")) + expect_identical(header$lines, 6L) + # Past the first window it reads a wider one. + expect_identical(pecotmr:::.pvarHeader(path, window = 2L), header) +}) + +test_that(".pvarHeader is NULL without a header before the variants", { + noHeader <- .gio_pvar(c("##fileformat=PVARv1.0", "1\t10\tv1\tA\tG")) + expect_null(pecotmr:::.pvarHeader(noHeader)) + metaOnly <- .gio_pvar(c("##fileformat=PVARv1.0", "##source=test")) + expect_null(pecotmr:::.pvarHeader(metaOnly)) + expect_null(pecotmr:::.pvarHeader(metaOnly, window = 1L)) +}) + +test_that(".readPvarTable declines what it cannot read as a table", { + expect_null(pecotmr:::.readPvarTable("panel.pvar.zst")) + path <- .gio_pvar(c("#CHROM\tPOS\tID", "1\t10\tv1")) + expect_null(pecotmr:::.readPvarTable(path)) +}) diff --git a/tests/testthat/test_h2Annotations.R b/tests/testthat/test_h2Annotations.R index a23c767b..f6a87644 100644 --- a/tests/testthat/test_h2Annotations.R +++ b/tests/testthat/test_h2Annotations.R @@ -585,6 +585,38 @@ test_that("fineMappingAnnotations refuses bad arguments", { expect_error(fineMappingAnnotations(.fma_qtl(), list()), "LdStatistic") }) +test_that("fineMappingAnnotations skips a purity filter it has no purity for", { + ids <- sprintf("chr1:%d:A:G", 1:4 * 100L) + pip <- c(0.7, 0.2, 0.05, 0.05) + # Labels without purities: the row stores them as given. + row <- FineMappingRow( + variantIds = ids, + susieFit = list(pip = stats::setNames(pip, ids)), + topLoci = data.frame( + variant_id = ids, + pip = pip, + cs_95 = c("susie_1", "susie_1", "susie_0", "susie_0") + ) + ) + qtl <- QtlFineMappingResult( + studyName = "Q", + context = "ctx", + trait = "g1", + method = "susie", + entry = list(row) + ) + expect_warning( + annot <- fineMappingAnnotations( + qtl, + .fma_ref(), + types = "credibleSet", + minPurity = 0.5 + ), + "no purity column 'cs_95_purity'" + ) + expect_equal(.fma_col(annot, "credibleSet"), c(1, 1, 0, 0, 0, 0)) +}) + test_that("estimateH2 takes fineMappingAnnotations as candidates", { n <- 40L ref <- .fma_ref(n = n, nBlocks = 4L) diff --git a/tests/testthat/test_qtlEnrichmentPipeline.R b/tests/testthat/test_qtlEnrichmentPipeline.R index f45530dd..7ce9434f 100644 --- a/tests/testthat/test_qtlEnrichmentPipeline.R +++ b/tests/testthat/test_qtlEnrichmentPipeline.R @@ -2058,3 +2058,101 @@ test_that("qtlEnrichmentPipeline warns about narrowed fits on both sides", { "qtlEnrichmentPipeline\\(\\): 2 row\\(s\\)" ) }) + +# =========================================================================== +# Regions as the kernel reads them +# =========================================================================== + +test_that(".enrRenamePip renames a named pip and leaves an unnamed one", { + unnamed <- list(pip = c(0.4, 0.6)) + expect_identical(pecotmr:::.enrRenamePip(unnamed, c("a", "b")), unnamed) + named <- list(pip = c(x = 0.4, y = 0.6)) + expect_identical( + names(pecotmr:::.enrRenamePip(named, c("a", "b"))$pip), + c("a", "b") + ) +}) + +test_that(".enrCodeAligned codes an absent variant by the union's variant", { + # Variables 2 and 3 are one variant, spelled with its alleles swapped: the + # outcome lacks it and the union holds it (row 2), so both take one code. + # Variable 4 is in neither and keeps a code of its own. + annotation <- list( + regions = list( + r1 = list( + alpha = matrix(0.25, 1L, 4L), + prior_variance = 1 + ) + ), + table = list( + chrom = rep("chr1", 4L), + pos = c(100L, 200L, 200L, 300L), + A2 = c("A", "C", "T", "G"), + A1 = c("G", "T", "C", "A") + ), + n = 4L + ) + union <- list( + chrom = c("chr1", "chr1"), + pos = c(100L, 200L), + A2 = c("A", "C"), + A1 = c("G", "T") + ) + coded <- pecotmr:::.enrCodeAligned( + annotation, + outcomeIdx = c(1L, NA, NA, NA), + unionIdx = c(1L, 2L, 2L, NA), + unionTable = union + ) + expect_identical(coded$fits[[1L]]$codes, c(0L, -1L, -1L, -2L)) + expect_identical(coded$nQtlOnly, 2L) +}) + +test_that(".enrCodedFit hands the kernel double alpha and integer codes", { + fit <- pecotmr:::.enrCodedFit( + list(alpha = matrix(1L, 1L, 2L), prior_variance = 1L), + c(0, 1) + ) + expect_type(fit$alpha, "double") + expect_identical(dim(fit$alpha), c(1L, 2L)) + expect_type(fit$prior_variance, "double") + expect_identical(fit$codes, c(0L, 1L)) +}) + +test_that(".enrValidateFits names a fit whose alpha is not a numeric matrix", { + expect_error( + pecotmr:::.enrValidateFits(list( + gene1 = list(alpha = "a", pip = 1, prior_variance = 1) + )), + "gene1: alpha is not a numeric matrix" + ) +}) + +test_that(".enrReportDiagnostics warns of unconverged rounds, reports the rest", { + en <- list( + `EM converged per MI round` = c(TRUE, FALSE), + `Missing proportion per MI round` = c(0.1, 0.3), + `EM iterations per MI round` = c(10L, 1000L), + `Effective MI rounds` = 1L + ) + expect_warning( + msgs <- testthat::capture_messages(pecotmr:::.enrReportDiagnostics( + en, + nullFits = 1L, + nFits = 3L, + verbose = TRUE + )), + "did not converge within 1000 iterations in 1 of 2" + ) + shown <- paste(msgs, collapse = "") + expect_match(shown, "1 of 3 QTL fits have no effect") + expect_match(shown, "Outlier filtering removed 1 MI round") + # Quietly, the warning alone. + expect_warning( + quiet <- testthat::capture_messages( + pecotmr:::.enrReportDiagnostics(en, 1L, 3L, verbose = FALSE) + ), + "did not converge" + ) + expect_length(quiet, 0L) +}) diff --git a/tests/testthat/test_tupleSelectors.R b/tests/testthat/test_tupleSelectors.R index f818b88c..55b5b51c 100644 --- a/tests/testthat/test_tupleSelectors.R +++ b/tests/testthat/test_tupleSelectors.R @@ -1301,6 +1301,160 @@ test_that(".narrowedRowLabels labels the narrowed rows and no others", { ) }) +test_that(".narrowedRowLabels finds none where rows record no fit", { + tw <- .ts_weights() + S4Vectors::mcols(tw)$fitVariants <- NULL + expect_identical(pecotmr:::.narrowedRowLabels(tw), character(0)) + fm <- .ts_narrowedCollection(1L) + S4Vectors::mcols(fm)$susieFit <- NULL + expect_identical(pecotmr:::.narrowedRowLabels(fm), character(0)) +}) + +test_that(".partsFitIds: a TWAS row's recorded ids, else its weights' names", { + w <- c(0.1, 0.2, 0.3) + recorded <- TwasWeightsRow(.ts_fitted, w, cvResult = list(r2 = 0.5)) + expect_equal(pecotmr:::.partsFitIds(recorded), .ts_fitted) + plain <- TwasWeightsRow(.ts_fitted, w) + expect_equal(pecotmr:::.partsFitIds(plain), .ts_fitted) + mat <- matrix(0, 1L, 3L, dimnames = list(NULL, rev(.ts_fitted))) + expect_equal(pecotmr:::.partsFitIds(plain, mat), rev(.ts_fitted)) +}) + +# =========================================================================== +# Rows' variants gathered with the columns their fits give back +# =========================================================================== + +# A row on `.ts_fitted` whose table gives the PIPs `tablePip`: the +# constructor stores none when they are the fit's own. +.ts_pipRow <- function(pip, tablePip = pip) { + FineMappingRow( + .ts_fitted, + list(pip = pip), + data.frame(variant_id = .ts_fitted, pip = tablePip) + ) +} + +# A collection of one row per entry of `entry`. +.ts_rows <- function(entry) { + n <- length(entry) + QtlFineMappingResult( + studyName = sprintf("s%d", seq_len(n)), + context = rep("c1", n), + trait = rep("g1", n), + method = rep("susie", n), + entry = entry + ) +} + +test_that("a group of rows gathers their variants with the PIPs restored", { + x <- .ts_rows(list( + .ts_pipRow(c(0.5, 0.3, 0.2)), + .ts_pipRow(c(0.1, 0.2, 0.7)) + )) + expect_false("pip" %in% .fmStoredColumns(x)) + parts <- pecotmr:::.fmrRowParts(x, 1:2) + expect_length(variants(parts), 6L) + expect_equal( + S4Vectors::mcols(variants(parts))$pip, + c(0.5, 0.3, 0.2, 0.1, 0.2, 0.7) + ) +}) + +test_that("rows storing different columns are restored row by row", { + # The second row's table disagrees with its fit, so it keeps its pip. + x <- .ts_rows(list( + .ts_pipRow(c(0.5, 0.3, 0.2)), + .ts_pipRow(c(0.1, 0.2, 0.7), tablePip = c(0.9, 0.05, 0.05)) + )) + gr <- pecotmr:::.fmrGatherVariants(x, 1:2) + expect_equal( + S4Vectors::mcols(gr)$pip, + c(0.5, 0.3, 0.2, 0.9, 0.05, 0.05) + ) +}) + +test_that("rows whose fits give back nothing are gathered as they are", { + gr <- variants(.ts_pipRow(c(0.5, 0.3, 0.2))) + fitless <- methods::new( + "FineMappingRow", + variants = gr, + susieFit = list(alpha = matrix(1 / 3, 1L, 3L)) + ) + x <- .ts_rows(list(fitless, fitless)) + out <- pecotmr:::.fmrGatherVariants(x, 1:2) + expect_length(out, 6L) + expect_null(S4Vectors::mcols(out)$pip) +}) + +test_that("rows recording other derived columns are restored row by row", { + gr <- variants(.ts_pipRow(c(0.5, 0.3, 0.2))) + fit <- list(pip = c(0.5, 0.3, 0.2)) + plain <- methods::new("FineMappingRow", variants = gr, susieFit = fit) + # Recorded credible-set columns its fit, keeping no sets, cannot give. + recorded <- methods::new( + "FineMappingRow", + variants = gr, + susieFit = fit, + derivedColumns = c("cs_95", "method=susie") + ) + mixed <- .ts_rows(list(plain, recorded)) + expect_null(pecotmr:::.fmrRestoreAbsentColumns( + mixed, + 1:2, + pecotmr:::.rtlGatherElements(mixed, 1:2) + )) + expect_equal( + S4Vectors::mcols(pecotmr:::.fmrGatherVariants(mixed, 1:2))$pip, + rep(c(0.5, 0.3, 0.2), 2L) + ) + alike <- .ts_rows(list(recorded, recorded)) + expect_null(pecotmr:::.fmrRestoreAbsentColumns( + alike, + 1:2, + pecotmr:::.rtlGatherElements(alike, 1:2) + )) +}) + +test_that("gathering rows that hold no variants gives none", { + x <- .ts_rows(list(pecotmr:::.fmCvOnlyRow(), pecotmr:::.fmCvOnlyRow())) + expect_length(pecotmr:::.fmrGatherVariants(x, 1:2), 0L) +}) + +test_that("a narrowed row's restored PIPs are found in its fit by name", { + x <- .ts_rows(list(.ts_fitRow(1:2), .ts_fitRow(2:3))) + expect_equal( + S4Vectors::mcols(pecotmr:::.fmrGatherVariants(x, 1:2))$pip, + c(0.5, 0.3, 0.3, 0.2) + ) +}) + +test_that("rows' fit variants come from their ranges or their fits' names", { + x <- .ts_rows(list(.ts_pipRow(c(0.5, 0.3, 0.2)), .ts_fitRow(2:3))) + vars <- pecotmr:::.fmrRowsFitVariants( + x, + 1:2, + pecotmr:::.fmrFitsAt(x, 1:2), + "skip" + ) + expect_identical(vars$n, c(3L, 3L)) + expect_identical( + pecotmr:::.variantTableIds(vars$table), + c(.ts_fitted, .ts_fitted) + ) +}) + +test_that("a narrowed row whose fit names nothing is skipped or refused", { + x <- .ts_narrowedCollection(2L) + fits <- pecotmr:::.fmrFitsAt(x, 1:2) + skipped <- pecotmr:::.fmrRowsFitVariants(x, 1:2, fits, "skip") + expect_identical(skipped$n, c(NA_integer_, NA_integer_)) + expect_identical(pecotmr:::.variantTableSize(skipped$table), 0L) + expect_error( + pecotmr:::.fmrRowsFitVariants(x, 1:2, fits, "error"), + "cannot be placed" + ) +}) + test_that(".fitCoverageCheckedAll names every input's narrowed rows at once", { fm <- .ts_narrowedCollection(2L) cnd <- tryCatch( @@ -1469,3 +1623,53 @@ test_that("topLoci surfaces the mvsusie lfsr through the projector", { expect_true(is_in("lfsr", names(out))) expect_equal(out$lfsr, c(0.001, 0.02)) }) + +# =========================================================================== +# Column builders and checks +# =========================================================================== + +test_that(".appendProvenanceCol recycles one value and refuses a misfit", { + add <- pecotmr:::.appendProvenanceCol + expect_identical(add(list(), NULL, "dataType", 3L), list()) + expect_identical( + add(list(), "eqtl", "dataType", 2L), + list(dataType = c("eqtl", "eqtl")) + ) + expect_error( + add(list(), c("a", "b"), "dataType", 3L), + "`dataType` must be length 1 or the same length as `study`" + ) +}) + +test_that(".validateRegionColumn names a region column that is not ranges", { + x <- .ts_rows(list(.ts_pipRow(c(0.5, 0.3, 0.2)))) + expect_identical(pecotmr:::.validateRegionColumn(x), character(0)) + md <- S4Vectors::mcols(x) + md$region <- "chr1:1-10" + methods::slot(x, "elementMetadata", check = FALSE) <- md + expect_match(pecotmr:::.validateRegionColumn(x), "^'region' column") +}) + +test_that(".fmrRowLbf reads none from a fit its row cannot be placed in", { + gr <- variants(.ts_pipRow(c(0.5, 0.3, 0.2))) + pip <- c(0.5, 0.3, 0.2) + # A log Bayes factor matrix narrower than the fit's PIPs. + narrow <- methods::new( + "FineMappingRow", + variants = gr, + susieFit = list(pip = pip, lbf_variable = matrix(0, 1L, 2L)) + ) + expect_identical(nrow(pecotmr:::.fmrRowLbf(narrow)), 0L) + none <- methods::new("FineMappingRow", variants = gr, susieFit = list()) + expect_identical(nrow(pecotmr:::.fmrRowLbf(none)), 0L) +}) + +test_that(".ssCombineGenome is NA when no part records a build", { + expect_identical( + pecotmr:::.ssCombineGenome( + list(GenomicRanges::GRanges("chr1:1-2")), + "f" + ), + NA_character_ + ) +}) diff --git a/tests/testthat/test_variantId.R b/tests/testthat/test_variantId.R index eba5dbb5..0e8f6f05 100644 --- a/tests/testthat/test_variantId.R +++ b/tests/testthat/test_variantId.R @@ -1168,3 +1168,11 @@ test_that("normalizeVariantId: argument guards fire", { "convention.*Must be of type 'list'" ) }) + +test_that(".alignIdsToPanel leaves an id that is missing unmatched", { + panel <- c("chr1:100:A:G", "chr1:200:C:T") + expect_identical( + pecotmr:::.alignIdsToPanel(c("chr1:200:C:T", NA), panel), + c(2L, NA) + ) +})