Skip to content

Upgrade to BioFSharp 2.0.0 and modernize the build setup - #11

Merged
caroott merged 6 commits into
mainfrom
developer
Aug 30, 2026
Merged

Upgrade to BioFSharp 2.0.0 and modernize the build setup#11
caroott merged 6 commits into
mainfrom
developer

Conversation

@caroott

@caroott caroott commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

This PR brings BioFSharp.Mz onto the current BioFSharp stack and replaces the old FAKE 5 build scripts with the build setup used in the BioFSharp repo. Behavior of the library is unchanged. The test suite passes with exactly the same results as before the upgrade.

Dependency upgrade

Package Before After
BioFSharp 2.0.0-beta4 2.0.0
BioFSharp.IO 2.0.0-beta4 removed, now part of BioFSharp
FSharpAux / FSharpAux.IO 1.0.0 2.1.0
FSharp.Stats 0.4.0 0.6.0
Newtonsoft.Json 12.0.3 13.0.4
Plotly.NET 2.0.0-alpha5 6.0.0-preview.2
AltCover (tests) 7.3.802 9.0.1
Microsoft.SourceLink.GitHub 1.0.0 removed, the SDK embeds SourceLink itself

DynamicObj comes in transitively and resolves to 7.0.1 for both BioFSharp and Plotly.NET.

Code changes

The source migration only adapts renamed or moved APIs. No algorithm, constant or public member was changed.

  • BioFSharp: FastA.fromFile is now Fasta.read, the GFF3 data model moved to BioFSharp.FileFormats.GFF3, the character converter moved to BioItemConverters, and the Sel amino acid case is now called Sec
  • FSharp.Stats: the Ops helpers are no longer auto opened, Continuous.normal became Continuous.Normal.Init, the polynomial regression and linear spline functions got new names, and JaggedArray.transpose now throws on empty input, so identifyPeaksBy got a small guard that returns the same empty result as before
  • Plotly.NET: chart functions were renamed (withTraceName to withTraceInfo, Combine to combine, SaveHtmlAs to saveHtml and so on), the produced charts are unchanged

Tests

Windows: 231 passed, 0 failed, 54 skipped. That is exactly the baseline from before the upgrade. Linux: 228 passed, 0 failed, 57 skipped, verified on Ubuntu.

Three tests assert Windows specific path behavior and are now skipped on other platforms through a small platform guard. They stay fully active on Windows. Two test helpers that parse chart HTML were adjusted because Plotly.NET 6 nests one more object inside each trace. No expected value or assertion was changed anywhere.

Build and CI

  • New FAKE 6 build project under build/, invoked through build.cmd and build.sh. Targets include building, tests, coverage, packing and docs
  • build.fsx, appveyor.yml and the old deploy workflow are deleted, and the orphaned lib/ folder with the checked in fsformatting binaries is removed
  • New GitHub Actions: build and test on Linux and Windows for pushes and PRs on developer and main, plus a docs deployment from main
  • The SDK pin moved to .NET 10 because Plotly.NET 6 requires FSharp.Core 10, which older compilers cannot read. CI installs the 8.x runtime next to it for the net8.0 test project
  • Coverage upload to Codecov is in place but needs the CODECOV_TOKEN secret before it does anything

Docs

The docs folder was reduced to a minimal fsdocs setup: a landing page, the logo and badge images, and the MathJax include. ./build.cmd builddocs builds the site with full API references for both projects. Writing actual documentation content is a follow up. The contributing guide was updated to describe the new build and docs workflow.

Notes

  • The Codecov step is set to not fail CI until the token secret is configured
  • The docs deployment only triggers on changes under docs/, same as in the BioFSharp repo, so a source only release does not refresh the published API docs
  • The grouped report path in ProteinInferenceVis uses a backslash join and therefore only works on Windows. That is pre existing behavior, documented but not changed here

@caroott
caroott merged commit a873206 into main Aug 30, 2026
6 checks passed
@codecov

codecov Bot commented Aug 30, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.33333% with 3 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (main@35944b9). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/BioFSharp.Mz/ChargeState.fs 0.00% 1 Missing ⚠️
tests/BioFSharp.Mz.Tests/PercolatorWrapperTests.fs 83.33% 1 Missing ⚠️
...sts/BioFSharp.Mz.Tests/ProteinInferenceVisTests.fs 85.71% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #11   +/-   ##
=======================================
  Coverage        ?   70.46%           
=======================================
  Files           ?       42           
  Lines           ?    13317           
  Branches        ?      778           
=======================================
  Hits            ?     9384           
  Misses          ?     3928           
  Partials        ?        5           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant