Skip to content

feat: Molecular Devices SoftMax Pro - Enable Reduced-only file parsing#1016

Merged
nathan-stender merged 11 commits into
Benchling-Open-Source:mainfrom
janedance:jdance/softmax-extra-data
Jun 27, 2025
Merged

feat: Molecular Devices SoftMax Pro - Enable Reduced-only file parsing#1016
nathan-stender merged 11 commits into
Benchling-Open-Source:mainfrom
janedance:jdance/softmax-extra-data

Conversation

@janedance

@janedance janedance commented Jun 17, 2025

Copy link
Copy Markdown
Contributor

Updating the Softmax parser to pull in the following data:

Group: Control
Sample	Wells	Sample#	Values	Results	MeanResults	CVs	CVresults	

Group: Matrix_Spike_1
Sample	Wells	Value	R	Result	MeanResult	CVs	CvResult	%SpikeRecovery	

Group: Matrix_Spike_2
Sample	Well	Value	R	Result	MeanResult	CVs	CVResult	%SpikeRecovery	

Group: Standards
Sample	Concentration ng/mL	Wells	Value	MeanValue	SD	CVs	CV_Result

Group: Samples
Sample	Wells	Value	R	Result	MeanResult	SD	CVs	CVresult

I believe this requires adding support for REDUCED files, so that's what this PR is for.

I think we also need the "Acceptance Criteria" data from the `Note' section, in which case I'll be following up with a larger PR to add some functionality there.

@janedance
janedance requested review from a team and slopez-b as code owners June 17, 2025 02:21
Comment thread src/allotropy/parsers/moldev_softmax_pro/softmax_pro_structure.py
Comment thread tests/parsers/moldev_softmax_pro/testdata/HCP_for_GB_JB.json
@janedance

Copy link
Copy Markdown
Contributor Author

blocking/suggestion

Note to self: There is probably some documentation that needs to be updated along with this change.

@janedance janedance changed the title Softmax: Enable Reduced-only files, add test example feat: Molecular Devices SoftMax Pro - Enable Reduced-only file parsing Jun 17, 2025
@janedance
janedance force-pushed the jdance/softmax-extra-data branch from 1c541b0 to fbabb6d Compare June 17, 2025 18:38

@nathan-stender nathan-stender left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Jane! Thank you so much for contributing!

Looking at this change, I think what we'll want to do for capturing reduced data only is a little different. It looks like this change is causing the reduced data to be captured as the raw data.

This causes us to report the reduced data as the raw data (you can see the reduced values are being reported as the "absorbance" values in the measurement document, whereas we want to report the reduced values as calculated data, since it's not really raw data!)

I think to do this, what we actually want to do is check the read type in TimeData and only read the raw data if they read type is "RAW" or "BOTH", and only read the reduced data if the type is "REDUCED" or "BOTH".

There is one more wrinkle specific to the ASM format, which is that the measurement document currently requires an "absorbance" value, and we don't have that value for the reduced only format.

I think the way to address this will be to, for the reduced only case, generate aTimeRawData with TimeMeasurementData with NEGATIVE_ZERO for the value and an ErrorDocument saying "Not reported"

Let me know if you have any questions!

@janedance

Copy link
Copy Markdown
Contributor Author

Thanks @nathan-stender for the detailed feedback, I appreciate it!

I made the requested change e86c186 and found that it had a wider impact than I anticipated. I believe this is because reduced data was previously being read for "RAW" type. So, the test output changed for several cases.

I want to be cautious here, since I didn't set out to change existing functionality. I would like to confirm with you:

  • this change to existing functionality is what I think, and is a good thing
  • stopping the reduced data being read for "RAW" type would not impact what would be available to the user (in other words, that this won't break any existing usage)

If it does have the possibility of breaking existing usage, then I can change it back to continuing reading reduced data for "RAW" type. Let me know what you think!

@janedance
janedance requested a review from nathan-stender June 19, 2025 17:01

@nathan-stender nathan-stender left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right! I took a look at this, and it appears that the problem is that the RAW format can just... report reduced data as well 🤦. Confirmed this with our scientific consultant reviewing the existing files.

Given this, I think that we should keep the first part of what you added (reduced only creating empty data) but go back to always trying to read reduced data.

I tried that out (changing the conditional for reduced data to if reader.current_line_exists()) and fixed the changes in existing files while supporting the new case!

Other than that, a couple minor request and I think we'll be all set!

Comment thread src/allotropy/parsers/moldev_softmax_pro/softmax_pro_structure.py Outdated
Comment thread src/allotropy/parsers/moldev_softmax_pro/softmax_pro_structure.py Outdated
Comment thread src/allotropy/parsers/moldev_softmax_pro/softmax_pro_structure.py Outdated
Comment thread src/allotropy/parsers/moldev_softmax_pro/softmax_pro_structure.py
@janedance
janedance requested a review from nathan-stender June 25, 2025 22:46
@janedance

Copy link
Copy Markdown
Contributor Author

Thanks @nathan-stender once more for the detailed feedback! 🙏

I've made the requested changes - let me know if you have any other suggestions

nathan-stender
nathan-stender previously approved these changes Jun 26, 2025
@nathan-stender

Copy link
Copy Markdown
Collaborator

@janedance this looks perfect! Thank you so much for the contribution!

One last thing - feel free to add yourself to the authors list in pyproject.yaml if you want to!

@janedance

Copy link
Copy Markdown
Contributor Author

@janedance this looks perfect! Thank you so much for the contribution!

One last thing - feel free to add yourself to the authors list in pyproject.yaml if you want to!

You're very welcome! And thank you for the code reviews!

I've added myself to the authors list :)

@nathan-stender
nathan-stender merged commit 7b08e19 into Benchling-Open-Source:main Jun 27, 2025
7 checks passed
nathan-stender added a commit that referenced this pull request Jul 9, 2025
### Added

- Bio-Rad Bio-Plex Manager - Add support for statistics dimensions
(#1029)
- Agilent Gen5 - Add Conc/Dil to Sample document custom fields (#1030)
- Roche Cedex BioHT - Added support for mg/L (#1028)
- Thermo Fisher Scientific SkanIt - Support multiplates (#1025)
- Beckman Vi-Cell Blu - Added get_unread data to parser (#1023)
- Molecular Devices SoftMax Pro - Enable Reduced-only file parsing
(#1016)
joshua-benchling pushed a commit that referenced this pull request Sep 15, 2025
#1016)

Updating the Softmax parser to pull in the following data:

    Group: Control
    Sample	Wells	Sample#	Values	Results	MeanResults	CVs	CVresults	
    
    Group: Matrix_Spike_1
    Sample	Wells	Value	R	Result	MeanResult	CVs	CvResult	%SpikeRecovery	
    
    Group: Matrix_Spike_2
    Sample	Well	Value	R	Result	MeanResult	CVs	CVResult	%SpikeRecovery	
    
    Group: Standards
    Sample	Concentration ng/mL	Wells	Value	MeanValue	SD	CVs	CV_Result
    
    Group: Samples
    Sample	Wells	Value	R	Result	MeanResult	SD	CVs	CVresult

I believe this requires adding support for `REDUCED` files, so that's
what this PR is for.

I think we also need the "Acceptance Criteria" data from the `Note'
section, in which case I'll be following up with a larger PR to add some
functionality there.

---------

Co-authored-by: Nathan Stender <nathan.stender@benchling.com>
joshua-benchling pushed a commit that referenced this pull request Sep 15, 2025
### Added

- Bio-Rad Bio-Plex Manager - Add support for statistics dimensions
(#1029)
- Agilent Gen5 - Add Conc/Dil to Sample document custom fields (#1030)
- Roche Cedex BioHT - Added support for mg/L (#1028)
- Thermo Fisher Scientific SkanIt - Support multiplates (#1025)
- Beckman Vi-Cell Blu - Added get_unread data to parser (#1023)
- Molecular Devices SoftMax Pro - Enable Reduced-only file parsing
(#1016)
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.

2 participants