Skip to content

BulkSeq Studio v0.32.1

Choose a tag to compare

@tunabirgun tunabirgun released this 26 Sep 06:32

Patch release: documentation, the command line, the documentation site, and fixes to the interface, the installer and the space-reclaim script. Nothing under workflow/ changed, so every analysis output is as 0.32.0 produced it. All seven bundled datasets were rerun from the installed 0.32.1 Windows package through the interface and passed: every run completed without a FAIL, and pasilla, rice and both Fusarium datasets reproduced their recorded results (see Validation). The workflow version moves with the application version, so an existing project re-copies an identical workflow on its next run.

Fixed

  • bulkseq check reports the most severe finding as its overall status. It upgraded only from PASS, so a WARNING listed before a REVIEW_REQUIRED produced Overall: WARNING. It now uses the severity order of the workflow's own aggregation. The exit code was unaffected, since only FAIL returns 4.
  • A corrupt project configuration returns exit 3 instead of a traceback. A config/config.yaml with a YAML syntax error or an invalid value made every command fail with exit 1. The command now names the file and the offending field and returns 3, the documented code for a configuration it cannot use. Exit 1 remains for a genuinely unexpected error.
  • Empty-state messages in the interface are no longer cut off. The protein-network placeholder and the centred empty-state cards on other pages took their height from the message's size hint, which does not know the width the card receives, so a message that wrapped onto more lines lost its last line: the network page ended at "build one with the Network". The cards now take their height from the wrapped text at their actual width, and a test fails if any empty-state message needs more height than it gets.
  • The interactive protein network no longer draws proteins on top of each other. Its force-directed layout ran in draft quality and ignored node and label size, so cliques and two-protein components collapsed into stacks; on the pasilla network 433 pairs of nodes or labels overlapped, involving 58 of its 68 proteins. The layout now spaces nodes by their drawn size and labels. Measured in the application's own renderer, no pair overlaps on the pasilla, UME6 and Arabidopsis networks, and the dense 300-node yeast cbc2 network drops from 1,378 overlapping pairs to 17; laying it out takes 0.8 s instead of 0.2 s. Because the whole network now spreads across the view, protein labels appear once you zoom in far enough for them to be legible, rather than stacked at the first view; hovering a protein still names it. The static network figure is unchanged.
  • Hand-set CPU and memory limits are saved as the custom profile. Changing the manual limits left the profile at its previous name, so a project could record profile: balanced with 24 threads and 58 GB, and a later runtime estimate reset the hand-set values to the named profile's recommendation. Editing either limit now selects custom; values the application detects, recommends or loads keep the named profile.
  • Programs the application opens no longer load its bundled libraries. Files, folders and reports were opened with the frozen application's DLL search directory still set, and a program started that way inherits it: a browser opened on a report ran helper processes that loaded the bundled VCRUNTIME140.dll, which kept the install folder in use until the browser closed. They now open with the standard search path, restored for the application afterwards.
  • Updating over an existing installation removes the old folder reliably. Setup deleted the old folder once, straight after the uninstaller; a file still locked for a moment left the folder behind, and the wizard then asked whether to install into an existing folder. It now retries for up to 15 s. A reinstall with a file held open for 8 s showed the prompt before this change and does not after it. The update also offers the folder the previous version was installed in; removing the old version erased that record, so an installation in a folder of your choosing moved to the default folder on update.
  • The space-reclaim script recognises finished microarray and imported-results runs. scripts/reclaim_run_space.sh required a count table, which those routes never write, so it refused a completed run with "this run did not produce its key outputs". It now reads the input type from the configuration, as the workflow does, and requires the count table only on read-based routes.
  • The documentation theme button names the theme that is showing. When the operating system switched between light and dark while the page followed it, the button kept its old label until it was clicked.

Changed

  • bulkseq --help lists every exit status, generated from the constants the command returns.
  • The documentation separates warnings from cautions. Every callout states its kind in text: a warning where ignoring it can silently invalidate a result or lose data, a caution where the failure is recoverable and noticed, a check for what to confirm before continuing, a note for context, and a release notice. The 51 undifferentiated boxes became 17 warnings, 15 cautions, 27 checks, 5 notes and 9 release notices, with boxes that mixed kinds split. The site build refuses a callout without a kind.
  • A new reference page, Exit codes and statuses, and a matching README section give every check status, including the interface-only STALE, with every command-line exit code, environment-setup code, run-monitor state and public-data lookup message, and what to do for each. They state that bulkseq run does not evaluate the pre-run checks, so a script should call bulkseq check first and stop on exit 4.
  • The checks page lists what each of the 22 check files tests, which statuses each can emit, and which can stop a running workflow: a FAIL in check 00, anything but PASS in check 05 on the FASTQ and SRA routes, and a failed microarray import recorded in checks 11 and 12.
  • The Linux build now measures the AppImage's glibc floor from its bundled libraries and fails when the README or the install guide states a different one, so the documented requirement cannot drift when the build runner changes.

Documentation

  • Corrections from a review of every page against the code: the Linux AppImage needs glibc 2.38 or newer rather than 2.34, measured from its bundled libraries; the Windows packages are not code-signed; low free disk space in the working directory produces a warning, not a refusal; the sample sheet is on the Samples page; the run monitor names the step in progress in plain language and shows elapsed time, not a remaining estimate; pip install -e . installs the graphical interface, with no command-line-only option; Ctrl-C sends TERM, waits up to eight seconds, then sends KILL; the meta-analysis joint fit adds dataset to any additive design, and a study enters the per-study combination only with at least two replicates in each arm; the checks page shows its statuses under status headers; the version notices read newest first.
  • The tutorial says to expect an overall WARNING from the pre-run checks on the bundled pasilla subset, and the checks page explains why check 01 can read WARNING before a run and PASS after it: the interface's pre-run check warns below three replicates per condition, while the copy the workflow writes when the run starts warns only below two. The two thresholds are documented rather than aligned in this release, because aligning them changes a workflow check.
  • Known issue, documented rather than changed in this release: on the two bundled Fusarium graminearum datasets, enrichment ends REVIEW_REQUIRED. The KEGG identity check compares organism names exactly, so it rejects code fgr, which KEGG names Fusarium graminearum, for the configured Fusarium graminearum PH-1 although both carry taxon 5518; KEGG enrichment is then reported as not interpretable. g:Profiler also returns no GO terms for the 5,201 significant genes, which points to an identifier mismatch. The behaviour is the same in the 0.30.1 runs of these data. Fixing it changes enrichment output, so it is deferred to a minor release.
  • Known issue, documented rather than changed in this release: the custom gene-set enrichment check (11) is shown on Pre-run checks but is missing from sanity_checks.txt, because the summary rule reads a fixed list of checks that does not include it.
  • The 0.31.0 entry said the old fixed floor of check 23 was the stricter of the two from eight samples upward in two groups. The crossover is at seven: the chance ceiling is 0.483 at seven samples and 0.573 at six. That entry is corrected.
  • The README and the tutorial list the result of every bundled dataset under 0.32.1, and say which reproduce a recorded value and which are recorded for the first time.

Validation

  • All seven bundled datasets were rerun one after another from the installed 0.32.1 Windows package, through the interface alone, with 24 threads and 58 GB, and all seven passed: every run completed without a FAIL. Significant genes are counted at padj < 0.05 with no fold-change filter.
  • Reproduced a recorded result: pasilla, 7,532 genes tested and 467 significant, with the count matrix and DESeq2 table byte-identical to the 0.31.0 run, and the strandedness re-count control passing against a 0.32.1 pasilla run; rice CY1000, 23,935 and 12,171, the count recorded under 0.9.0; Fusarium spores vs mycelium, 9,028 and 5,734, with 2,723 up and 2,478 down at |log2FC| > 1 as recorded; Fusarium heat shock, 8,280 and 5,836 as recorded.
  • Recorded for the first time: yeast UME6, 5,967 and 97; Arabidopsis hub2-3 on the microarray route, 21,323 and 1,401; yeast cbc2 on the microarray route, 5,683 and 486.
  • Every run ends with an overall WARNING or REVIEW_REQUIRED from advisory checks. Both Fusarium runs are REVIEW_REQUIRED for the enrichment known issue above.

Every asset below is listed in SHA256SUMS.txt; verify a download against it before use.