Skip to contents

Applies method-aware post-processing to one or more SuSiE-family fits and builds both a method-specific result list and shared top-loci tables.

Usage

postprocessFinemappingFits(
  fits,
  dataX,
  dataY = NULL,
  xScalar = 1,
  yScalar = 1,
  af = NULL,
  n = NULL,
  coverage = NULL,
  secondaryCoverage = c(0.7, 0.5),
  signalCutoff = 0.1,
  otherQuantities = NULL,
  region = NULL,
  priorEffTol = 1e-09,
  minAbsCorr = 0.8,
  medianAbsCorr = NULL,
  csInput = NULL,
  conditionIdx = NULL,
  trim = TRUE,
  fullFit = FALSE,
  fullFitAlphaOnly = TRUE,
  includeAllCs = FALSE
)

Arguments

fits

Named list of fine-mapping fits. Names define method identity, for example susie, susieInf, susieRss, mvsusie, or fsusie.

dataX

Genotype matrix, LD/correlation matrix, or other method-specific input used for credible-set purity and correlations.

dataY

Phenotype vector/matrix or summary statistics. Default NULL.

xScalar

Scaling factor for genotype effects. Default 1.

yScalar

Scaling factor for phenotype effects. Default 1.

af

Effect-allele frequencies (exported as the af column; never MAF). Default NULL.

coverage

Primary credible-set coverage.

secondaryCoverage

Additional credible-set coverages.

signalCutoff

PIP cutoff for including non-CS variants in top loci.

otherQuantities

Optional list carried into each method result.

region

Optional genomic anchor ("chr:start-end" or GRanges) recorded on the result; NULL to omit.

priorEffTol

Tolerance for retaining effects by prior variance.

minAbsCorr

Minimum absolute correlation for credible-set purity.

medianAbsCorr

Numeric or NULL. Median absolute within-CS correlation threshold for purity; NULL uses only minAbsCorr.

csInput

Optional precomputed credible-set specification, or NULL to derive it from the fits.

conditionIdx

Integer or NULL. Index of the conditioned effect (per-condition output); NULL for the unconditioned fit.

trim

Logical. Trim the retained fit to the fields needed downstream. Default TRUE.

fullFit

Logical. Retain the full fit object on each entry. Default FALSE.

fullFitAlphaOnly

Logical. When retaining the full fit, keep only the per-effect alpha matrix. Default TRUE.

includeAllCs

Logical. Include all credible sets rather than only the top one. Default FALSE.

Value

A list with finemappingResults (per-method post-processed objects, each carrying a trimmed fit and method-specific intermediates) and a single unified top_loci table in the fixed 22-column shape (see the internal buildTopLoci). Per-method contributions are row-bound into top_loci by an outer method for-loop.

Examples

data(eqtlRegionExample)
X <- eqtlRegionExample$X[, 1:40]
y <- eqtlRegionExample$yRes
fit <- susieR::susie(X, y, L = 5)
#> HINT: nrow(X) = 415 >= 2 * ncol(X) = 80. Consider precomputing sufficient statistics with compute_suff_stat() and fitting with susie_ss() instead -- this avoids holding X in memory at every iteration and lets you reuse XtX across multiple y.
postprocessFinemappingFits(fits = list(susie = fit), dataX = X, dataY = y)
#> $finemappingResults
#> $finemappingResults$susie
#> $finemappingResults$susie$finemappingEntry
#> FineMappingRow: 40 variants, 0 credible sets
#> 
#> $finemappingResults$susie$method
#> [1] "susie"
#> 
#> $finemappingResults$susie$sumstats
#> $finemappingResults$susie$sumstats$betahat
#>  [1] -0.045984319 -0.045984319  0.021635404 -0.010822292 -0.010822292
#>  [6] -0.024282050 -0.034072131  0.051481464 -0.011979917 -0.011979917
#> [11] -0.016030256 -0.029366583 -0.009898099 -0.010448807 -0.016030256
#> [16]  0.051481464 -0.019084397 -0.020511032  0.089554501 -0.020511032
#> [21] -0.020511032 -0.024282050 -0.020511032  0.002753235 -0.009898099
#> [26] -0.024282050 -0.092957421 -0.076057722  0.040366526  0.030675273
#> [31] -0.016030256 -0.092957421 -0.009950104 -0.023299456 -0.009898099
#> [36] -0.043287988  0.005513860  0.005513860 -0.009898099 -0.010822292
#> 
#> $finemappingResults$susie$sumstats$sebetahat
#>  [1] 0.03139137 0.03139137 0.02459281 0.06215025 0.06215025 0.03996575
#>  [7] 0.04169372 0.05742523 0.02517093 0.02517093 0.06127746 0.03446504
#> [13] 0.04195899 0.02475048 0.06127746 0.05742523 0.02417639 0.02389134
#> [19] 0.12112616 0.02389134 0.02389134 0.03996575 0.02389134 0.03223466
#> [25] 0.04195899 0.03996575 0.05477339 0.10860103 0.09564028 0.03828892
#> [31] 0.06127746 0.05477339 0.06434512 0.02406579 0.04195899 0.08925240
#> [37] 0.03277379 0.03277379 0.04195899 0.06215025
#> 
#> 
#> $finemappingResults$susie$sampleNames
#>   [1] "sample_001" "sample_002" "sample_003" "sample_004" "sample_005"
#>   [6] "sample_006" "sample_007" "sample_008" "sample_009" "sample_010"
#>  [11] "sample_011" "sample_012" "sample_013" "sample_014" "sample_015"
#>  [16] "sample_016" "sample_017" "sample_018" "sample_019" "sample_020"
#>  [21] "sample_021" "sample_022" "sample_023" "sample_024" "sample_025"
#>  [26] "sample_026" "sample_027" "sample_028" "sample_029" "sample_030"
#>  [31] "sample_031" "sample_032" "sample_033" "sample_034" "sample_035"
#>  [36] "sample_036" "sample_037" "sample_038" "sample_039" "sample_040"
#>  [41] "sample_041" "sample_042" "sample_043" "sample_044" "sample_045"
#>  [46] "sample_046" "sample_047" "sample_048" "sample_049" "sample_050"
#>  [51] "sample_051" "sample_052" "sample_053" "sample_054" "sample_055"
#>  [56] "sample_056" "sample_057" "sample_058" "sample_059" "sample_060"
#>  [61] "sample_061" "sample_062" "sample_063" "sample_064" "sample_065"
#>  [66] "sample_066" "sample_067" "sample_068" "sample_069" "sample_070"
#>  [71] "sample_071" "sample_072" "sample_073" "sample_074" "sample_075"
#>  [76] "sample_076" "sample_077" "sample_078" "sample_079" "sample_080"
#>  [81] "sample_081" "sample_082" "sample_083" "sample_084" "sample_085"
#>  [86] "sample_086" "sample_087" "sample_088" "sample_089" "sample_090"
#>  [91] "sample_091" "sample_092" "sample_093" "sample_094" "sample_095"
#>  [96] "sample_096" "sample_097" "sample_098" "sample_099" "sample_100"
#> [101] "sample_101" "sample_102" "sample_103" "sample_104" "sample_105"
#> [106] "sample_106" "sample_107" "sample_108" "sample_109" "sample_110"
#> [111] "sample_111" "sample_112" "sample_113" "sample_114" "sample_115"
#> [116] "sample_116" "sample_117" "sample_118" "sample_119" "sample_120"
#> [121] "sample_121" "sample_122" "sample_123" "sample_124" "sample_125"
#> [126] "sample_126" "sample_127" "sample_128" "sample_129" "sample_130"
#> [131] "sample_131" "sample_132" "sample_133" "sample_134" "sample_135"
#> [136] "sample_136" "sample_137" "sample_138" "sample_139" "sample_140"
#> [141] "sample_141" "sample_142" "sample_143" "sample_144" "sample_145"
#> [146] "sample_146" "sample_147" "sample_148" "sample_149" "sample_150"
#> [151] "sample_151" "sample_152" "sample_153" "sample_154" "sample_155"
#> [156] "sample_156" "sample_157" "sample_158" "sample_159" "sample_160"
#> [161] "sample_161" "sample_162" "sample_163" "sample_164" "sample_165"
#> [166] "sample_166" "sample_167" "sample_168" "sample_169" "sample_170"
#> [171] "sample_171" "sample_172" "sample_173" "sample_174" "sample_175"
#> [176] "sample_176" "sample_177" "sample_178" "sample_179" "sample_180"
#> [181] "sample_181" "sample_182" "sample_183" "sample_184" "sample_185"
#> [186] "sample_186" "sample_187" "sample_188" "sample_189" "sample_190"
#> [191] "sample_191" "sample_192" "sample_193" "sample_194" "sample_195"
#> [196] "sample_196" "sample_197" "sample_198" "sample_199" "sample_200"
#> [201] "sample_201" "sample_202" "sample_203" "sample_204" "sample_205"
#> [206] "sample_206" "sample_207" "sample_208" "sample_209" "sample_210"
#> [211] "sample_211" "sample_212" "sample_213" "sample_214" "sample_215"
#> [216] "sample_216" "sample_217" "sample_218" "sample_219" "sample_220"
#> [221] "sample_221" "sample_222" "sample_223" "sample_224" "sample_225"
#> [226] "sample_226" "sample_227" "sample_228" "sample_229" "sample_230"
#> [231] "sample_231" "sample_232" "sample_233" "sample_234" "sample_235"
#> [236] "sample_236" "sample_237" "sample_238" "sample_239" "sample_240"
#> [241] "sample_241" "sample_242" "sample_243" "sample_244" "sample_245"
#> [246] "sample_246" "sample_247" "sample_248" "sample_249" "sample_250"
#> [251] "sample_251" "sample_252" "sample_253" "sample_254" "sample_255"
#> [256] "sample_256" "sample_257" "sample_258" "sample_259" "sample_260"
#> [261] "sample_261" "sample_262" "sample_263" "sample_264" "sample_265"
#> [266] "sample_266" "sample_267" "sample_268" "sample_269" "sample_270"
#> [271] "sample_271" "sample_272" "sample_273" "sample_274" "sample_275"
#> [276] "sample_276" "sample_277" "sample_278" "sample_279" "sample_280"
#> [281] "sample_281" "sample_282" "sample_283" "sample_284" "sample_285"
#> [286] "sample_286" "sample_287" "sample_288" "sample_289" "sample_290"
#> [291] "sample_291" "sample_292" "sample_293" "sample_294" "sample_295"
#> [296] "sample_296" "sample_297" "sample_298" "sample_299" "sample_300"
#> [301] "sample_301" "sample_302" "sample_303" "sample_304" "sample_305"
#> [306] "sample_306" "sample_307" "sample_308" "sample_309" "sample_310"
#> [311] "sample_311" "sample_312" "sample_313" "sample_314" "sample_315"
#> [316] "sample_316" "sample_317" "sample_318" "sample_319" "sample_320"
#> [321] "sample_321" "sample_322" "sample_323" "sample_324" "sample_325"
#> [326] "sample_326" "sample_327" "sample_328" "sample_329" "sample_330"
#> [331] "sample_331" "sample_332" "sample_333" "sample_334" "sample_335"
#> [336] "sample_336" "sample_337" "sample_338" "sample_339" "sample_340"
#> [341] "sample_341" "sample_342" "sample_343" "sample_344" "sample_345"
#> [346] "sample_346" "sample_347" "sample_348" "sample_349" "sample_350"
#> [351] "sample_351" "sample_352" "sample_353" "sample_354" "sample_355"
#> [356] "sample_356" "sample_357" "sample_358" "sample_359" "sample_360"
#> [361] "sample_361" "sample_362" "sample_363" "sample_364" "sample_365"
#> [366] "sample_366" "sample_367" "sample_368" "sample_369" "sample_370"
#> [371] "sample_371" "sample_372" "sample_373" "sample_374" "sample_375"
#> [376] "sample_376" "sample_377" "sample_378" "sample_379" "sample_380"
#> [381] "sample_381" "sample_382" "sample_383" "sample_384" "sample_385"
#> [386] "sample_386" "sample_387" "sample_388" "sample_389" "sample_390"
#> [391] "sample_391" "sample_392" "sample_393" "sample_394" "sample_395"
#> [396] "sample_396" "sample_397" "sample_398" "sample_399" "sample_400"
#> [401] "sample_401" "sample_402" "sample_403" "sample_404" "sample_405"
#> [406] "sample_406" "sample_407" "sample_408" "sample_409" "sample_410"
#> [411] "sample_411" "sample_412" "sample_413" "sample_414" "sample_415"
#> 
#> 
#> 
#> $top_loci
#> # A tibble: 0 × 27
#> # ℹ 27 variables: variant_id <chr>, chrom <chr>, pos <int>, A1 <chr>, A2 <chr>,
#> #   N <int>, af <dbl>, marginal_beta <dbl>, marginal_se <dbl>,
#> #   marginal_z <dbl>, marginal_p <dbl>, pip <dbl>, posterior_mean <dbl>,
#> #   posterior_sd <dbl>, logBF <dbl>, cs_95 <chr>, cs_70 <chr>, cs_50 <chr>,
#> #   cs_95_purity <dbl>, cs_70_purity <dbl>, cs_50_purity <dbl>,
#> #   within_cs_pip <dbl>, method <chr>, gene <chr>, event <chr>,
#> #   grange_start <int>, grange_end <int>
#>