Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(api): Support 96 channel in the hardware controller #11866

Merged
merged 6 commits into from
Dec 27, 2022

Conversation

Laura-Danielle
Copy link
Contributor

Overview

This branch includes work to get the 96 channel supported in the hardware controller. I would like to merge it in after we deliver any updates to the science robot since I did not have a chance to test all pipette types last week in the office.

Changelog

Review requests

Definitely comment if you see anything glaring.

Risk assessment

Medium/High. Modifies configurations for the OT-3 across the pipette models

@Laura-Danielle Laura-Danielle requested a review from a team December 12, 2022 19:05
@Laura-Danielle Laura-Danielle requested review from a team as code owners December 12, 2022 19:05
@Laura-Danielle Laura-Danielle requested review from jerader and removed request for a team December 12, 2022 19:05
@codecov
Copy link

codecov bot commented Dec 12, 2022

Codecov Report

Merging #11866 (8439521) into edge (a9e3123) will increase coverage by 0.04%.
The diff coverage is 85.89%.

Impacted file tree graph

@@            Coverage Diff             @@
##             edge   #11866      +/-   ##
==========================================
+ Coverage   74.17%   74.21%   +0.04%     
==========================================
  Files        2165     2167       +2     
  Lines       59863    60007     +144     
  Branches     6307     6307              
==========================================
+ Hits        44403    44536     +133     
- Misses      13972    13983      +11     
  Partials     1488     1488              
Flag Coverage Δ
app 73.18% <ø> (ø)
hardware 56.60% <0.00%> (+0.01%) ⬆️
hardware-testing ∅ <ø> (∅)
notify-server 89.13% <ø> (ø)
protocol-designer 45.89% <ø> (ø)
shared-data 85.47% <91.72%> (+0.60%) ⬆️
step-generation 88.46% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...ware/opentrons_hardware/hardware_control/motion.py 83.09% <0.00%> (+1.15%) ⬆️
shared-data/js/pipettes.ts 51.85% <ø> (ø)
...a/python/opentrons_shared_data/pipette/__init__.py 94.44% <ø> (ø)
api/src/opentrons/config/defaults_ot3.py 87.27% <50.00%> (ø)
...entrons/hardware_control/backends/ot3controller.py 64.63% <54.83%> (ø)
api/src/opentrons/hardware_control/ot3api.py 80.66% <84.21%> (ø)
...pentrons/hardware_control/backends/ot3simulator.py 88.57% <85.00%> (ø)
...pentrons_shared_data/pipette/pipette_definition.py 91.37% <91.37%> (ø)
.../python/opentrons_shared_data/pipette/load_data.py 93.10% <93.10%> (ø)
api/src/opentrons/hardware_control/__init__.py 100.00% <100.00%> (ø)
... and 16 more

@Laura-Danielle Laura-Danielle force-pushed the RLIQ-131-support-96-channel branch from 9fc8f6a to 9ff48be Compare December 16, 2022 16:06
Copy link
Member

@sfoster1 sfoster1 left a comment

Choose a reason for hiding this comment

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

lets do it!

Copy link
Contributor

@ahiuchingau ahiuchingau left a comment

Choose a reason for hiding this comment

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

Looks good to me, just got two nits/questions

@@ -403,21 +402,43 @@ async def gripper_home_jaw(self) -> None:
self._homed_nodes.add(axis)

@staticmethod
def _synthesize_model_name(name: FirmwarePipetteName, model: str) -> "PipetteModel":
return cast("PipetteModel", f"{name.name}_v{model}")
def _lookup_serial_key(pipette_name: FirmwarePipetteName) -> str:
Copy link
Contributor

Choose a reason for hiding this comment

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

IMO lookup tables such as this should be in pipette config or the ot3utils. Is there a reason why they have to be here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The real fix is just to return the full serial number from PipetteInformation, so I would consider both of these functions to be temporary.

Copy link
Contributor

Choose a reason for hiding this comment

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

Could you leave a comment/todo so we know they are temp?

return lookup_name[pipette_name]

@staticmethod
def _combine_serial_number(pipette_info: ohc_tool_types.PipetteInformation) -> str:
Copy link
Contributor

Choose a reason for hiding this comment

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

Nice, we'll use this for gripper as well

Also can be in ot3utils, maybe?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah I made the change for the gripper as well, but see my answer to your comment above. The serial # is only used for purposes of identifying the instrument and saving calibration, so I think we should just make sure we return the full "serial number" from PipetteInformation when an instrument is first detected.

@Laura-Danielle Laura-Danielle force-pushed the RLIQ-131-support-96-channel branch from 79ceb12 to 8439521 Compare December 27, 2022 16:23
@Laura-Danielle Laura-Danielle merged commit 62962c5 into edge Dec 27, 2022
@Laura-Danielle Laura-Danielle deleted the RLIQ-131-support-96-channel branch December 27, 2022 17:05
y3rsh added a commit that referenced this pull request Jan 6, 2023
* origin/edge: (34 commits)
  refactor(app): update desktop robot settings calibration section for OT-3 (#11942)
  feat(hardware): add CAN message to update motor position from encoders (#11868)
  ci(monorepo): upgrade windows versions on github workflows (#11940)
  feat(app): implement useCalibrationTaskList hook (#11894)
  feat(app, app-shell, app-shell-odd): create node layer for ODD (#11944)
  refactor(app): Remove recalibrate option from POC and TLC overflow menus [RAUT-93] (#11915)
  fix(api): home z should home gripper z too (#11950)
  refactor(shared-data): gripper use force polynomial function  (#11946)
  refactor(api): move `ModuleGeometry` to legacy protocol core module (#11939)
  refactor(api): deprecate `ModuleContext.geometry` (#11938)
  chore(usb-bridge): add usb-bridge tests to test-py, add restart to push-ot3 (#11937)
  Revert "feat(app-shell-odd): create node layer for ODD (#11852)" (#11941)
  feat(app-shell-odd): create node layer for ODD (#11852)
  feature(hardware): add a warning style to can_mon and an "estop_released" error id (#11924)
  fix(hardware): Remove while loop and rely on  number_of_messages when parsing motor position response.  (#11929)
  fix(hardware): save can_comm / can_mon logs to read-write location (#11933)
  feat(api): Support 96 channel in the hardware controller (#11866)
  refactor(app): revert run a protocol from devices pages (#11909)
  refactor(app): remove warnings (#11922)
  refactor(app): remove invalid type warnings for strings from atoms (#11918)
  ...
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