Releases: tmichoel/BioFindr.jl
Release list
v1.4.0
BioFindr v1.4.0
Breaking Changes
There are no breaking changes in this release.
New Features
- Add
fit_mixdist_histfunction inposteriorprobs_hist.jl: a histogram-based LLR-to-posterior-probability conversion ported from the original Findr C implementation. The function supports all five BioFindr tests (:corr,:link,:med,:relev,:pleio) and uses unequal-bin histogram construction with iterative bin-edge refinement to match the null distribution (#29) pprob_colnow acceptsmethod="hist"as a third mixture-fitting option in addition to the existing"kde"and"moments"options (#29)
Behavior Changes
- The fallback method used when
method="moments"raises anAssertionErrorinpprob_colis changed from KDE to histogram (fit_mixdist_hist) (#29) - The default method for
pprob_colremainskde(a previous intermediate commit set it tohist; this was reverted back tokdebefore release)
Dependency Changes
- Add
Interpolationsas a runtime dependency (required byfit_mixdist_histfor spline interpolation during histogram construction) (#29) - Bump compat for
Interpolationsto include version 0.16 (#30)
Tests
- Add a
fit_mixdist_histtest set intest/postprobs_tests.jlcovering all five BioFindr test types, validating that posterior probabilities are in[0, 1]and are non-decreasing with respect to the LLR values (#29) - Update existing
pprob_coltest sets to explicitly test the"hist"method and verify fallback-from-"moments"behaviour (#29)
Documentation
- Add a new
## Histogram-based conversion of the mixture distributionsection indocs/src/posteriorprobs.mdwith API docs forfit_mixdist_hist(#29) - Update
docs/src/index.mdto mention all three posterior-probability estimation approaches (histogram, moments, KDE) (#29) - Update the note at the end of
docs/src/posteriorprobs.mdto reflect that the histogram method is available as an option (#29)
Full Changelog: v1.3.0...v1.4.0
v1.3.0
BioFindr v1.3.0
Breaking Changes
There are no breaking changes in this release.
Behavior Changes
- Change the default LLR mixture-distribution fitting method from
momentstokdeacross public inference entry points (findr,findr_matrix, andpprob_col) and update docstrings accordingly (#27) - Update posterior-probability tests to validate the new default behavior while keeping explicit
method="moments"/method="kde"support (#27)
Documentation
- Clarify posterior-probability docs to highlight that kernel density estimation is now the default method and how to switch methods explicitly (#27)
- Minor markdown cleanup in
docs/src/posteriorprobs.md(#27)
Logging
- Reduce noise when
π₀ = 1in KDE fitting by changing a warning log to debug level infit_mixdist_KDE(#27)
Full Changelog: v1.2.0...v1.3.0
v1.2.0
BioFindr v1.2.0
Breaking Changes
There are no breaking changes to the public API in this release. However, users who accessed internal (unexported) functions or module-level constants by name should note:
- The internal module-level string constants
corr,link,med,relev, andpleio(accessible as e.g.BioFindr.corr) have been removed - Internal functions have been renamed to follow Julia's snake_case convention:
groupmeans→group_means,realLLR_col→real_llr_col,llrstats_col→llr_stats_col - Source files renamed for consistency:
realLLR.jl→real_llr.jl,randomLLR.jl→random_llr.jl(plus corresponding test and documentation files)
New Exports
LBeta,coerce_scitypes!, andgenerate_test_dataare now exported (they were previously accessible but unexported despite being used prominently in the documentation)
Bug Fixes
lbeta.jl:logpdfincorrectly returned0.forx < 0; corrected to-Inf(the log-probability of an impossible event) (#25)posteriorprobs.jl: All fivetry/catchblocks previously caught every exception, silently masking real bugs. They now only catchAssertionError; all other exceptions are rethrown (#25)findr.jl:findr(dX, dG)with a categorical genotype columndGsilently produced a result matrix ofCategoricalValueobjects instead of integers. The function now validates the scitype ofdGand useslevelcode()for correct integer conversion (#25)utils.jl:getpairspreviously caused aMethodErrorwhen column names in the two input data frames did not match; it now throws an informativeErrorException(#25)utils.jl:symprobsdocstring incorrectly claimed the default combination method was"prod"; corrected to"none"(#25)utils.jl:qvaluenow clamps q-values to the interval[0, 1]and replaces noisy@infologging with@debug(#25)
Performance Improvements
utils.jl(group_means):findallis now computed once per group instead of evaluating a membership mask three times (#25)supernormalization.jl(supernormalize): The quantile lookup table is now built once per column length instead of issuing onequantile()call per element (#25)posteriorprobs.jl(pi0est): The λ-grid search now uses O(log n)searchsortedlastinstead of an O(n) linear scan (#25)
Dependency Changes
- Add
CategoricalArraysas an explicit runtime dependency (it was previously loaded as a hidden transitive dependency via DataFrames) (#25) - Move
Printffrom[deps]to[extras](test-only) (#25) - Remove
DocumenterandLiveServerfrom runtime[deps]— these are documentation-only tools (#25) - Bump compat for
MetaGraphsNextto include version 0.8 (#23) - Remove
Manifest.tomlanddocs/Manifest.tomlfrom the repository; addManifest.tomlto.gitignore(#25)
New Tests
Total test count increased from 145 to 221 (#25):
test/findr_tests.jl— comprehensive tests for allfindr()andfindr_matrix()overloads (the primary public API previously had zero tests)test/dagfindr_tests.jl— tests for all threedagfindr!methods, including cycle-freeness assertionstest/utils_tests.jl— expanded with tests forqvalue,globalfdr,globalfdr!,stackprobs,symprobs,combineprobs, andgetpairs
Documentation
- Complete previously unfinished ("TBW") docstrings in
bayesiannets.jl(#25) - Restore
push!(LOAD_PATH, "../src/")indocs/make.jlto ensure the local source is used during documentation builds rather than the registered package version (#25)
CI
- Upgrade all GitHub Actions to their latest versions (#25)
- Test against Julia
1(latest stable) instead of a pinned minor version (#25)
Full Changelog: v1.1.0...v1.2.0
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v1.1.0
BioFindr v1.1.0
Breaking Changes
There are no breaking changes in this release.
Changes
- Broaden function type signatures from concrete to abstract array/float types for improved interoperability (e.g., with JuliaCall):
Array{T}→AbstractArray{T},Vector{T}→AbstractVector{T},Matrix{T}→AbstractMatrix{T}acrossrealLLR.jl,posteriorprobs.jl,utils.jl,findr_matrix.jl, andfindr_pvalues.jl(#22) - Fix inconsistency in
findr_matrixoverloads where implementations usedT<:Realwhile docstrings declaredT<:AbstractFloat; all overloads now consistently useT<:AbstractFloat(#22) - Update dependency manifests
- Update Julia version in CI workflow
Full Changelog: v1.0.5...v1.1.0
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v1.0.5
What's Changed
- Catch error in kernel density estimation when
$\pi_0=1$ by returning zero posterior probabilities - CompatHelper: add new compat entry for ScientificTypes at version 3, (keep existing compat) by @github-actions in #20
Full Changelog: v1.0.4...v1.0.5
v1.0.4
BioFindr v1.0.4
- add option to perform causal inference for a subset of regulators without having to modify the input data
v1.0.3
v1.0.2
v1.0.1
BioFindr v1.0.1
Merged pull requests:
- CompatHelper: add new compat entry for Graphs at version 1, (keep existing compat) (#18) (@github-actions[bot])
- CompatHelper: add new compat entry for MetaGraphsNext at version 0.7, (keep existing compat) (#19) (@github-actions[bot])
Closed issues:
- TagBot trigger issue (#17)
Renaming to BioFindr
The package and repository have been renamed from Findr.jl to BioFindr.jl to bring it inline with Julia package naming guidelines. See this issue for details.
Full Changelog: v0.2.0...v1.0.0