Conversation
DIA-NN 2.1.0+ bundles Thermo DLLs targeting net8.0 and calls `dotnet --list-sdks` at startup. Without the SDK, DIA-NN aborts with "ERROR: cannot read .raw files, please download and install .NET Runtime 8.0.14 or later". Installing the Ubuntu 22.04 `dotnet-sdk-8.0` package (jammy-updates, 8.0.126) satisfies the probe and enables native .raw reading on Linux. Applied to 2.1.0, 2.2.0, 2.3.2, 2.5.0; 2.0.2 is unchanged because it does not ship the Thermo reader. Verified end-to-end: `diann --f input.raw --convert` on a real 835 MB Thermo .raw succeeds in all four Docker images and all four Singularity images, producing a 239 MB .dia. Also gitignores build-diann-singularity.sh (a local build helper used during verification) and the singularity-cache/ output directory so the repo stays clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
🐛 install dotnet-sdk-8.0 so DIA-NN >=2.1.0 can read Thermo .raw
📝 WalkthroughWalkthroughThese changes extend Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
README.md (1)
32-35: Optional: differentiate "Key Features" per 2.x version.All four 2.1.0+ rows carry the identical
Native.rawon Linux (bundles .NET SDK 8)string, which hides why a user would choose, say, 2.3.2 over 2.1.0. Per upstream release notes, 2.3.0+ adds InfinDIA and is no longer DIA-only (DDA support). Consider noting the version-specific highlight alongside the shared.raw/SDK note, e.g.:✏️ Suggested wording
-| 2.1.0 | `diann-2.1.0/` | Native `.raw` on Linux (bundles .NET SDK 8) | `ghcr.io/bigbio/diann:2.1.0` | -| 2.2.0 | `diann-2.2.0/` | Native `.raw` on Linux (bundles .NET SDK 8) | `ghcr.io/bigbio/diann:2.2.0` | -| 2.3.2 | `diann-2.3.2/` | Native `.raw` on Linux (bundles .NET SDK 8) | `ghcr.io/bigbio/diann:2.3.2` | -| 2.5.0 | `diann-2.5.0/` | Native `.raw` on Linux (bundles .NET SDK 8) | `ghcr.io/bigbio/diann:2.5.0` | +| 2.1.0 | `diann-2.1.0/` | First release with native `.raw` on Linux (bundles .NET SDK 8) | `ghcr.io/bigbio/diann:2.1.0` | +| 2.2.0 | `diann-2.2.0/` | Stability / QC-plot improvements over 2.1.0 | `ghcr.io/bigbio/diann:2.2.0` | +| 2.3.2 | `diann-2.3.2/` | Adds InfinDIA + DDA support; native `.raw` on Linux | `ghcr.io/bigbio/diann:2.3.2` | +| 2.5.0 | `diann-2.5.0/` | Latest 2.x; native `.raw` on Linux | `ghcr.io/bigbio/diann:2.5.0` |Feel free to reword based on what you've validated downstream.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` around lines 32 - 35, Update the README table rows for the 2.x diann entries to include version-specific highlights in addition to the shared "Native `.raw` on Linux (bundles .NET SDK 8)" note; for example, append a short feature note to the `2.3.2` (and any ≥2.3.0) row indicating "Adds InfinDIA and DDA support" and preserve the shared SDK/raw text for `2.1.0`, `2.2.0`, `2.3.2`, and `2.5.0` so users can see both the common runtime details and the unique capability per version.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@diann-2.1.0/Dockerfile`:
- Around line 22-29: The RUN apt-get install step currently installs
dotnet-sdk-8.0 from Ubuntu jammy which yields an older 8.0.x feature band;
modify the Dockerfile to add Microsoft's .NET APT feed and GPG key before the
apt-get update/install step so dotnet-sdk-8.0 is fetched from Microsoft's
repository (and optionally pin to a 8.0.4xx >= 8.0.407 build); in practice
insert the Microsoft package repo setup (add-apt-repository/apt-key/gpg and the
deb line for packages.microsoft.com) prior to the RUN that installs
dotnet-sdk-8.0 so the existing RUN line that lists dotnet-sdk-8.0 will install
the correct version; apply the same change to all Dockerfiles that currently
install dotnet-sdk-8.0.
---
Nitpick comments:
In `@README.md`:
- Around line 32-35: Update the README table rows for the 2.x diann entries to
include version-specific highlights in addition to the shared "Native `.raw` on
Linux (bundles .NET SDK 8)" note; for example, append a short feature note to
the `2.3.2` (and any ≥2.3.0) row indicating "Adds InfinDIA and DDA support" and
preserve the shared SDK/raw text for `2.1.0`, `2.2.0`, `2.3.2`, and `2.5.0` so
users can see both the common runtime details and the unique capability per
version.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: b9008347-cf2f-4a70-915f-b315bd669382
📒 Files selected for processing (6)
.gitignoreREADME.mddiann-2.1.0/Dockerfilediann-2.2.0/Dockerfilediann-2.3.2/Dockerfilediann-2.5.0/Dockerfile
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
| wget \ | ||
| unzip \ | ||
| libgomp1 \ | ||
| locales && \ | ||
| locales \ | ||
| ca-certificates \ | ||
| dotnet-sdk-8.0 && \ | ||
| rm -rf /var/lib/apt/lists/* |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check the current dotnet-sdk-8.0 candidate version in Ubuntu 22.04 jammy-updates
# and confirm it is >= 8.0.407 (i.e. SDK band 8.0.4xx or higher).
docker run --rm ubuntu:22.04 bash -lc '
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq >/dev/null
apt-cache policy dotnet-sdk-8.0 | head -20
apt-cache madison dotnet-sdk-8.0 | head -5
'Repository: bigbio/quantms-containers
Length of output: 116
🏁 Script executed:
# First, locate and examine the Dockerfiles mentioned in the review
find . -name "Dockerfile" | grep -E "diann-2\.(1|2|3|5)" | head -20Repository: bigbio/quantms-containers
Length of output: 169
🌐 Web query:
dotnet-sdk-8.0 Ubuntu 22.04 jammy-updates version 8.0.407
💡 Result:
The dotnet-sdk-8.0 package version 8.0.407 is not available in Ubuntu 22.04 (jammy-updates). Canonical's Ubuntu repositories for jammy-updates provide .NET 8.0 SDK versions in the 8.0.1xx feature band only, with the latest being 8.0.125-0ubuntu1~22.04.1 or similar as of early 2026. Microsoft's official .NET 8.0 SDK 8.0.407 (from March 2025) is available via their package repository for Ubuntu 22.04 as the deb file dotnet-sdk-8.0_8.0.407-1_amd64.deb. To install it, add Microsoft's repository: wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update sudo apt-get install -y dotnet-sdk-8.0 Note: Microsoft docs recommend using Ubuntu's feeds for .1xx versions but suggest their feed for newer feature bands like 4xx. Mixing repositories may cause issues; review .NET package mix-ups documentation. Alternatively, download and install the specific deb directly, or use tar.gz/binary installation from dotnet.microsoft.com.
Citations:
- 1: https://www.ubuntuupdates.org/package/core/jammy/main/updates/dotnet-sdk-8.0
- 2: https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install
- 3: https://launchpad.net/ubuntu/jammy/amd64/dotnet-sdk-8.0
- 4: https://packages.ubuntu.com/dotnet-sdk-8.0
- 5: https://packages.microsoft.com/ubuntu/22.04/prod/pool/main/d/dotnet-sdk-8.0/
- 6: https://packages.microsoft.com/repos/microsoft-ubuntu-jammy-prod/pool/main/d/dotnet-sdk-8.0/
🌐 Web query:
DIA-NN .NET SDK 8.0 minimum version requirement 8.0.407
💡 Result:
Yes, DIA-NN requires the .NET SDK version 8.0.407 or later. This is the minimum version specified in the official documentation and error messages for enabling the built-in Thermo .raw file reader in recent versions (e.g., 2.1+). Newer 8.0-series versions like 8.0.411 or 8.0.412 also work, but .NET 9.x does not, as it must be the 8.0 series. Installation links point directly to the 8.0.407 installer, confirming it as the baseline minimum.
Citations:
- 1: runError:ERROR: cannot read .raw files, please download and install .NET Runtime . vdemichev/DiaNN#1731
- 2: Analysis interruption in version 2.1.0/2.2.0 vdemichev/DiaNN#1572
- 3: DIA-NN exited during data processing vdemichev/DiaNN#1615
- 4: DIA-NN 2.1 fails to read RAW files on linux vdemichev/DiaNN#1468
- 5: https://github.com/vdemichev/diann
- 6: https://vdemichev.github.io/DiaNN/
- 7: https://github.com/vdemichev/DiaNN/blob/70757b5e/README.md
🏁 Script executed:
# Check if the Dockerfiles add Microsoft's .NET repository
for df in ./diann-2.1.0/Dockerfile ./diann-2.2.0/Dockerfile ./diann-2.3.2/Dockerfile ./diann-2.5.0/Dockerfile; do
echo "=== $df ==="
cat "$df" | head -50
doneRepository: bigbio/quantms-containers
Length of output: 7390
Add Microsoft's .NET repository to obtain the required dotnet-sdk-8.0 version.
DIA-NN requires dotnet-sdk-8.0 >= 8.0.407 to read Thermo .raw files (documented in the Dockerfile comments themselves). However, Ubuntu 22.04's jammy-updates repository provides only the 8.0.1xx feature band (e.g., 8.0.125), which is below the minimum. Images built with the current Dockerfile will fail at runtime with "cannot read .raw files" errors.
To fix this, add Microsoft's .NET repository before installing dotnet-sdk-8.0. This applies identically to diann-2.2.0/Dockerfile, diann-2.3.2/Dockerfile, and diann-2.5.0/Dockerfile.
Suggested fix
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
+ ca-certificates \
&& \
+ wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb && \
+ dpkg -i packages-microsoft-prod.deb && \
+ rm packages-microsoft-prod.deb && \
+ apt-get update && \
+ apt-get install -y --no-install-recommends \
unzip \
libgomp1 \
locales \
- ca-certificates \
dotnet-sdk-8.0 && \
rm -rf /var/lib/apt/lists/*Alternatively, install dotnet-sdk-8.0 explicitly from Microsoft's feed:
- dotnet-sdk-8.0 && \
+ dotnet-sdk-8.0=8.0.407-1 && \(Adjust the pin to the latest stable 8.0.4xx version available.)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@diann-2.1.0/Dockerfile` around lines 22 - 29, The RUN apt-get install step
currently installs dotnet-sdk-8.0 from Ubuntu jammy which yields an older 8.0.x
feature band; modify the Dockerfile to add Microsoft's .NET APT feed and GPG key
before the apt-get update/install step so dotnet-sdk-8.0 is fetched from
Microsoft's repository (and optionally pin to a 8.0.4xx >= 8.0.407 build); in
practice insert the Microsoft package repo setup (add-apt-repository/apt-key/gpg
and the deb line for packages.microsoft.com) prior to the RUN that installs
dotnet-sdk-8.0 so the existing RUN line that lists dotnet-sdk-8.0 will install
the correct version; apply the same change to all Dockerfiles that currently
install dotnet-sdk-8.0.
This pull request adds support for new DIA-NN container versions (2.3.2 and 2.5.0) and ensures that all containers for DIA-NN ≥ 2.1.0 install the required .NET SDK 8.0 to enable native Thermo
.rawfile reading on Linux. The documentation is updated to clearly describe these changes and the new requirements for native Thermo file support.Container build updates:
dotnet-sdk-8.0andca-certificatesin theDockerfilefor all containers with DIA-NN ≥ 2.1.0 (diann-2.1.0,diann-2.2.0,diann-2.3.2,diann-2.5.0), ensuring native Thermo.rawfile reading works out of the box. [1] [2] [3] [4]--no-check-certificateflag fromwgetcommands in all relevantDockerfiles, asca-certificatesare now installed and certificate checks are expected to succeed. [1] [2] [3] [4]Documentation updates:
README.mdto list new available versions (2.3.2 and 2.5.0) and clarify that all containers from 2.1.0 onward bundle the .NET SDK 8 and support native Thermo.rawreading. Also added a detailed explanation of the .NET SDK requirement and the behavior of DIA-NN when the SDK is missing. [1] [2]These changes make it easier for users to work with Thermo
.rawfiles directly in Linux containers and ensure the documentation accurately reflects the new capabilities and requirements.