Skip to content

fix: Support SpectraMax 340PC-384 kinetic files in SoftMax Pro parser#1240

Merged
nathan-stender merged 3 commits into
mainfrom
fix/softmax-pro-spectramax340-support
Jul 14, 2026
Merged

fix: Support SpectraMax 340PC-384 kinetic files in SoftMax Pro parser#1240
nathan-stender merged 3 commits into
mainfrom
fix/softmax-pro-spectramax340-support

Conversation

@nathan-stender

Copy link
Copy Markdown
Collaborator

Summary

  • SpectraMax 340PC-384 kinetic export files failed to parse due to multiple format differences from previously supported files
  • Encoding: Parser now uses chardet detection instead of assuming UTF-8 (files are ISO-8859-1)
  • Empty groups: Group blocks with no data rows (e.g. empty "Standards" groups) are handled gracefully
  • Partial plates: Wells empty at t=0 are skipped in kinetic mode instead of erroring; wells that disappear at later timepoints still produce an error
  • Time format: time_to_seconds now accepts M:SS and H:MM in addition to strict HH:MM:SS
  • GroupColumns: Files without Group Column/Formula Name sections no longer error

Test plan

  • All 36 existing moldev_softmax_pro tests pass
  • Customer file (46_SpectraMax340PC-384.txt) parses successfully
  • Missing kinetic measurement error test updated to validate the correct error path (well populated at t=0 but missing at later timepoint)
  • Lint clean (ruff, black, mypy)

🤖 Generated with Claude Code

Multiple issues prevented parsing of SpectraMax 340PC-384 kinetic export
files:

1. Encoding: use chardet detection instead of assuming UTF-8, since
   these files are typically ISO-8859-1 encoded
2. Empty groups: handle Group blocks with no data rows (e.g. empty
   Standards groups) gracefully instead of erroring
3. Partial plates: skip wells with no data in kinetic mode rather than
   erroring; wells populated at t=0 that go missing later still error
4. Time format: accept M:SS and H:MM in addition to HH:MM:SS
5. GroupColumns: make Formula Name/Formula section optional since some
   export formats don't include it

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@nathan-stender
nathan-stender requested review from a team and slopez-b as code owners July 13, 2026 14:23
Sanitized test file exercising all the newly supported format features:
Latin-1 encoding, M:SS time format, empty group blocks with no data,
no GroupColumns section, and partial plate with unused wells.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment thread src/allotropy/parsers/moldev_softmax_pro/softmax_pro_structure.py
ajcariaga16
ajcariaga16 previously approved these changes Jul 13, 2026
The 2-part format is M:SS (minutes:seconds), not H:MM, since there's
no way to disambiguate and the file's 30-second interval confirms it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@nathan-stender
nathan-stender merged commit 5dd7670 into main Jul 14, 2026
9 checks passed
@nathan-stender
nathan-stender deleted the fix/softmax-pro-spectramax340-support branch July 14, 2026 16:02
nathan-stender added a commit that referenced this pull request Jul 14, 2026
### Fixed

- Handle trailing tabs and quoted fields in Agilent Gen5 parser (#1241)
- Support SpectraMax 340PC-384 kinetic files in SoftMax Pro parser
(#1240)
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.

3 participants