BrukerTimsFile: read .d.zip archives without unpacking analysis.tdf_bin
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start with src/openms/source/FORMAT/BrukerTimsFile.cpp, especially unpack_ and openTimsDataHandle, then review ZipArchiveFile and the opentims v1.2.0b4 API referenced by cmake/cmake_findExternalLibs.cmake. Compare stored and deflated entries in the #10273 behavior; done means stored .d.zip archives avoid copying analysis.tdf_bin, deflated entries retain extraction, and the supported behavior is documented.
索引モデルが issue の本文から書いたものです。
説明
Enhancement Description
#10273 lets FileConverter and BrukerTimsFile read Bruker .d.zip archives. They unpack the archive into the temporary directory first, with a free-space budget and path checks. For a long timsTOF run, that copies the whole analysis.tdf_bin, often several GB, to disk before a single frame is read. Reading the archive in place would save both the temporary disk space and the extraction time.
Constraints
- opentims opens
analysis.tdf_binfrom a file path.TimsDataHandlememory-maps it (mio::mmap_source tims_data_bin) and reads each frame at its offset, and every public constructor takes paths.- OpenMS fetches opentims from michalsta/opentims
v1.2.0b4(cmake/cmake_findExternalLibs.cmake) or uses a system installation, so an API change belongs upstream.
- OpenMS fetches opentims from michalsta/opentims
- SQLite needs
analysis.tdfas a file. It is small: 12 MB in our test data. - Random access into a deflated ZIP entry needs decompression. In the test archive
DDA_HeLa_50ng_5_6min.d.zip,analysis.tdf_binis deflated: 366 MB become 358 MB. The frames are already zstd-compressed, so deflate saves only about 2%.
Proposal
- Stored entries (
zip -0):- Extract only
analysis.tdf. - Memory-map the ZIP file and give opentims the byte range of
analysis.tdf_bin, so the bulk data is never copied. - This needs an opentims constructor that takes a mapped buffer, or a (path, offset, length).
- Extract only
- Deflated entries:
- Keep unpacking to disk, which is the behaviour of #10273.
- Decompressing into memory instead would trade the temporary disk space for the same amount of RAM, so it should at most be an option.
- Documentation: say that
.d.ziparchives written withzip -0are read without extraction.
References
- #10273, and the discussion in https://github.com/OpenMS/OpenMS/pull/10273#issuecomment-5844105935
src/openms/source/FORMAT/BrukerTimsFile.cpp(unpack_,openTimsDataHandle) andZipArchiveFile
- 主要言語
- C++
- スター
- 623
- フォーク
- 441
- 平均マージ
- 18時間 15分
- マージ済み PR(30日)
- 255
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
OpenMS/OpenMS のほかの issue
-
new contributor
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
OpenMS/OpenMS#10512 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
pepXML reader requires the optional 'no_cut' attribute, so OpenMS cannot read back its own pepXML for unknown enzymes対応中かも @kg290 が 13 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 87/100
OpenMS/OpenMS#10321 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[FEATUREFINDER] Biosaur2Algorithm::centroidProfileSpectra_: dead drift-time guard would drop every FAIMS CV再び着手できるかも @kavyansh-1 が 31 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンdefect
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
OpenMS/OpenMS#10005 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
The Outdated Version prompt shows the release tag as unescaped HTML対応中かも @on8st が今日担当しました。 オープンbug good first issue GUI maintainer-review priority: low
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
aethersdr/AetherSDR#6405 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
bitcoin-core/gui-qml#1003 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
metasequoiaime/msime#7328 ·
メンテナーはふだん 1 日以内に返信
-
[Linux] --calibrate combined with --model silently falls through to plain re-setup (setup.py:4958)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信