Skip to content

Commit 1141c56

Browse files
ddcc4caila-marashaj
authored andcommitted
fix(everything): replace Greek 'μ' with micro 'µ' (#17331)
# Overview There are two different characters that look like the "mu" symbol: - `µ` (U+00B5 `MICRO SIGN`) - `μ` (U+03BC `GREEK SMALL LETTER MU`) In some fonts they look different; but in many fonts they look the same. The problem is that in the Public Sans font that we use for Protocol Designer, `U+03BC GREEK SMALL LETTER MU` is not available at all, because the font only supports Latin characters plus some scientific symbols. So whenever we use `U+03BC GREEK SMALL LETTER MU` in text, the browser has to render it with a fallback font, which can look ugly. For consistency, we should just use `U+00B5 MICRO SIGN` whenever we have a `µ` that means 1/1,000,000, and only use `U+03BC GREEK SMALL LETTER MU` when we're writing Greek text (like in a Greek-language user manual). ## Test Plan and Hands on Testing I did a global search and replace on all the text in our codebase. I'm relying on the CI tests to catch any issues. ## Risk assessment This could potentially break external dependencies that expect the Greek-text mu.
1 parent e8fe3f3 commit 1141c56

File tree

64 files changed

+163
-163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+163
-163
lines changed

api/docs/v1/pipettes.rst

+53-53
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ same behavior as before.
5555
The P20 Single GEN2 is back-compatible with the P10 Single in this regard. If your protocol
5656
specifies an ``instruments.P10_Single`` and your robot has an ``instruments.P20_Single_GEN2``
5757
attached, you can run your protocol, and the robot will act as if the maximum volume of the P20
58-
Single GEN2 is 10 μl.
58+
Single GEN2 is 10 µl.
5959

6060
If you have a P50 Single specified in your protocol, there is no automatic backwards compatibility.
6161
If you want to use a Gen2 Pipette, you must change your protocol to load either a P300 Single GEN2
62-
(if you are using volumes between 20 and 50 μl) or a P20 Single GEN2 (if you are using volumes
63-
below 20 μl).
62+
(if you are using volumes between 20 and 50 µl) or a P20 Single GEN2 (if you are using volumes
63+
below 20 µl).
6464

6565

6666
Plunger Flow Rates
@@ -99,92 +99,92 @@ The given defaults for every pipette model is the following:
9999
P10_Single
100100
----------
101101

102-
- Aspirate Default: 5 μl/s
103-
- Dispense Default: 10 μl/s
104-
- Blow Out Default: 1000 μl/s
105-
- Minimum Volume: 1 μl
106-
- Maximum Volume: 10 μl
102+
- Aspirate Default: 5 µl/s
103+
- Dispense Default: 10 µl/s
104+
- Blow Out Default: 1000 µl/s
105+
- Minimum Volume: 1 µl
106+
- Maximum Volume: 10 µl
107107

108108
P10_Multi
109109
---------
110110

111-
- Aspirate Default: 5 μl/s
112-
- Dispense Default: 10 μl/s
113-
- Blow Out Default: 1000 μl/s
114-
- Minimum Volume: 1 μl
115-
- Maximum Volume: 10 μl
111+
- Aspirate Default: 5 µl/s
112+
- Dispense Default: 10 µl/s
113+
- Blow Out Default: 1000 µl/s
114+
- Minimum Volume: 1 µl
115+
- Maximum Volume: 10 µl
116116

117117
P50_Single
118118
----------
119119

120-
- Aspirate Default: 25 μl/s
121-
- Dispense Default: 50 μl/s
122-
- Blow Out Default: 1000 μl/s
123-
- Minimum Volume: 5 μl
124-
- Maximum Volume: 50 μl
120+
- Aspirate Default: 25 µl/s
121+
- Dispense Default: 50 µl/s
122+
- Blow Out Default: 1000 µl/s
123+
- Minimum Volume: 5 µl
124+
- Maximum Volume: 50 µl
125125

126126
P50_Multi
127127
---------
128128

129-
- Aspirate Default: 25 μl/s
130-
- Dispense Default: 50 μl/s
131-
- Blow Out Default: 1000 μl/s
132-
- Minimum Volume: 5 μl
133-
- Maximum Volume: 50 μl
129+
- Aspirate Default: 25 µl/s
130+
- Dispense Default: 50 µl/s
131+
- Blow Out Default: 1000 µl/s
132+
- Minimum Volume: 5 µl
133+
- Maximum Volume: 50 µl
134134

135135
P300_Single
136136
-----------
137137

138-
- Aspirate Default: 150 μl/s
139-
- Dispense Default: 300 μl/s
140-
- Blow Out Default: 1000 μl/s
141-
- Minimum Volume: 30 μl
142-
- Maximum Volume: 300 μl
138+
- Aspirate Default: 150 µl/s
139+
- Dispense Default: 300 µl/s
140+
- Blow Out Default: 1000 µl/s
141+
- Minimum Volume: 30 µl
142+
- Maximum Volume: 300 µl
143143

144144
P300_Multi
145145
----------
146146

147-
- Aspirate Default: 150 μl/s
148-
- Dispense Default: 300 μl/s
149-
- Blow Out Default: 1000 μl/s
150-
- Minimum Volume: 30 μl
151-
- Maximum Volume: 300 μl
147+
- Aspirate Default: 150 µl/s
148+
- Dispense Default: 300 µl/s
149+
- Blow Out Default: 1000 µl/s
150+
- Minimum Volume: 30 µl
151+
- Maximum Volume: 300 µl
152152

153153
P1000_Single
154154
------------
155155

156-
- Aspirate Default: 500 μl/s
157-
- Dispense Default: 1000 μl/s
158-
- Blow Out Default: 1000 μl/s
159-
- Minimum Volume: 100 μl
160-
- Maximum Volume: 1000 μl
156+
- Aspirate Default: 500 µl/s
157+
- Dispense Default: 1000 µl/s
158+
- Blow Out Default: 1000 µl/s
159+
- Minimum Volume: 100 µl
160+
- Maximum Volume: 1000 µl
161161

162162
P20_Single_GEN2
163163
---------------
164164

165-
- Aspirate Default: 3.78 μl/s
166-
- Dispense Default: 3.78 μl/s
167-
- Blow Out Default: 3.78 μl/s
168-
- Minimum Volume: 1 μl
169-
- Maximum Volume: 20 μl
165+
- Aspirate Default: 3.78 µl/s
166+
- Dispense Default: 3.78 µl/s
167+
- Blow Out Default: 3.78 µl/s
168+
- Minimum Volume: 1 µl
169+
- Maximum Volume: 20 µl
170170

171171
P300_Single_GEN2
172172
----------------
173173

174-
- Aspirate Default: 46.43 μl/s
175-
- Dispense Default: 46.43 μl/s
176-
- Blow Out Default: 46.43 μl/s
177-
- Minimum Volume: 20 μl
178-
- Maximum Volume: 300 μl
174+
- Aspirate Default: 46.43 µl/s
175+
- Dispense Default: 46.43 µl/s
176+
- Blow Out Default: 46.43 µl/s
177+
- Minimum Volume: 20 µl
178+
- Maximum Volume: 300 µl
179179

180180
P1000_Single_GEN2
181181
-----------------
182182

183-
- Aspirate Default: 137.35 μl/s
184-
- Dispense Default: 137.35 μl/s
185-
- Blow Out Default: 137.35 μl/s
186-
- Minimum Volume: 100 μl
187-
- Maximum Volume: 1000 μl
183+
- Aspirate Default: 137.35 µl/s
184+
- Dispense Default: 137.35 µl/s
185+
- Blow Out Default: 137.35 µl/s
186+
- Minimum Volume: 100 µl
187+
- Maximum Volume: 1000 µl
188188

189189
Old Pipette Constructor
190190
=======================

api/docs/v2/complex_commands/parameters.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ One reason to set ``new_tip="always"`` is to avoid cross-contamination between w
6262

6363
:py:meth:`~.InstrumentContext.transfer` will pick up a new tip before *every* aspirate when ``new_tip="always"``. This includes when :ref:`tip refilling <complex-tip-refilling>` requires multiple aspirations from a single source well.
6464

65-
:py:meth:`~.InstrumentContext.distribute` and :py:meth:`~.InstrumentContext.consolidate` only pick up one tip, even when ``new_tip="always"``. For example, this distribute command returns to the source well a second time, because the amount to be distributed (400 µL total plus disposal volume) exceeds the pipette capacity (300 μL)::
65+
:py:meth:`~.InstrumentContext.distribute` and :py:meth:`~.InstrumentContext.consolidate` only pick up one tip, even when ``new_tip="always"``. For example, this distribute command returns to the source well a second time, because the amount to be distributed (400 µL total plus disposal volume) exceeds the pipette capacity (300 µL)::
6666

6767
pipette.distribute(
6868
volume=200,

api/docs/v2/modules/temperature_module.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@ The Temperature Module supports these 96-well block and labware combinations for
9898

9999
* - 96-well block contents
100100
- API Load Name
101-
* - Bio-Rad well plate 200 μL
101+
* - Bio-Rad well plate 200 µL
102102
- ``opentrons_96_aluminumblock_biorad_wellplate_200uL``
103-
* - Generic PCR strip 200 μL
103+
* - Generic PCR strip 200 µL
104104
- ``opentrons_96_aluminumblock_generic_pcr_strip_200uL``
105-
* - NEST well plate 100 μL
105+
* - NEST well plate 100 µL
106106
- ``opentrons_96_aluminumblock_nest_wellplate_100uL``
107107

108108
This command loads the same physical adapter and labware as the example in the Standalone Adapters section above, but it is also compatible with earlier API versions::

api/docs/v2/tutorial.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Hardware and Labware
3030

3131
Before running a protocol, you’ll want to have the right kind of hardware and labware ready for your Flex or OT-2.
3232

33-
- **Flex users** should review Chapter 2: Installation and Relocation in the `instruction manual <https://insights.opentrons.com/hubfs/Products/Flex/Opentrons%20Flex%20Manual.pdf>`_. Specifically, see the pipette information in the "Instrument Installation and Calibration" section. You can use either a 1-channel or 8-channel pipette for this tutorial. Most Flex code examples will use a `Flex 1-Channel 1000 μL pipette <https://shop.opentrons.com/opentrons-flex-1-channel-pipette/>`_.
33+
- **Flex users** should review Chapter 2: Installation and Relocation in the `instruction manual <https://insights.opentrons.com/hubfs/Products/Flex/Opentrons%20Flex%20Manual.pdf>`_. Specifically, see the pipette information in the "Instrument Installation and Calibration" section. You can use either a 1-channel or 8-channel pipette for this tutorial. Most Flex code examples will use a `Flex 1-Channel 1000 µL pipette <https://shop.opentrons.com/opentrons-flex-1-channel-pipette/>`_.
3434

3535
- **OT-2 users** should review the robot setup and pipette information on the `Get Started page <https://support.opentrons.com/s/ot2-get-started>`_. Specifically, see `attaching pipettes <https://support.opentrons.com/s/article/Get-started-Attach-pipettes>`_ and `initial calibration <https://support.opentrons.com/s/article/Get-started-Calibrate-the-deck>`_. You can use either a single-channel or 8-channel pipette for this tutorial. Most OT-2 code examples will use a `P300 Single-Channel GEN2 <https://shop.opentrons.com/single-channel-electronic-pipette-p20/>`_ pipette.
3636

api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def test_configure_virtual_pipette_for_volume(
9494
)
9595
assert result1 == LoadedStaticPipetteData(
9696
model="p50_single_v3.6",
97-
display_name="Flex 1-Channel 50 μL",
97+
display_name="Flex 1-Channel 50 µL",
9898
min_volume=5,
9999
max_volume=50.0,
100100
channels=1,
@@ -128,7 +128,7 @@ def test_configure_virtual_pipette_for_volume(
128128
)
129129
assert result2 == LoadedStaticPipetteData(
130130
model="p50_single_v3.6",
131-
display_name="Flex 1-Channel 50 μL",
131+
display_name="Flex 1-Channel 50 µL",
132132
min_volume=1,
133133
max_volume=30,
134134
channels=1,

app/src/local-resources/instruments/__tests__/hooks.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import type { PipetteV2Specs } from '@opentrons/shared-data'
1313

1414
vi.mock('/app/resources/robot-settings/hooks')
1515

16-
const BRANDED_P1000_FLEX_DISPLAY_NAME = 'Flex 1-Channel 1000 μL'
17-
const ANONYMOUS_P1000_FLEX_DISPLAY_NAME = '1-Channel 1000 μL'
16+
const BRANDED_P1000_FLEX_DISPLAY_NAME = 'Flex 1-Channel 1000 µL'
17+
const ANONYMOUS_P1000_FLEX_DISPLAY_NAME = '1-Channel 1000 µL'
1818

1919
const mockP1000V2Specs = {
2020
$otSharedSchema: '#/pipette/schemas/2/pipetteGeometrySchema.json',

app/src/organisms/ODD/InstrumentMountItem/__tests__/ProtocolInstrumentMountItem.test.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ describe('ProtocolInstrumentMountItem', () => {
7878
render(props)
7979
screen.getByText('Left Mount')
8080
screen.getByText('No data')
81-
screen.getByText('Flex 8-Channel 1000 μL')
81+
screen.getByText('Flex 8-Channel 1000 µL')
8282
screen.getByText('Attach')
8383
fireEvent.click(screen.getByRole('button'))
8484
screen.getByText('pipette wizard flow')
@@ -91,7 +91,7 @@ describe('ProtocolInstrumentMountItem', () => {
9191
render(props)
9292
screen.getByText('Left + Right Mount')
9393
screen.getByText('No data')
94-
screen.getByText('Flex 96-Channel 1000 μL')
94+
screen.getByText('Flex 96-Channel 1000 µL')
9595
screen.getByText('Attach')
9696
})
9797
it('renders the correct information when there is a pipette attached with cal data', () => {
@@ -103,7 +103,7 @@ describe('ProtocolInstrumentMountItem', () => {
103103
render(props)
104104
screen.getByText('Left Mount')
105105
screen.getByText('Calibrated')
106-
screen.getByText('Flex 8-Channel 1000 μL')
106+
screen.getByText('Flex 8-Channel 1000 µL')
107107
})
108108
it('renders the pipette with no cal data and the calibration button and clicking on it launches the correct flow', () => {
109109
props = {
@@ -119,7 +119,7 @@ describe('ProtocolInstrumentMountItem', () => {
119119
render(props)
120120
screen.getByText('Left Mount')
121121
screen.getByText('No data')
122-
screen.getByText('Flex 8-Channel 1000 μL')
122+
screen.getByText('Flex 8-Channel 1000 µL')
123123
const button = screen.getByText('Calibrate')
124124
fireEvent.click(button)
125125
screen.getByText('pipette wizard flow')
@@ -132,7 +132,7 @@ describe('ProtocolInstrumentMountItem', () => {
132132
render(props)
133133
screen.getByText('Left Mount')
134134
screen.getByText('No data')
135-
screen.getByText('Flex 8-Channel 1000 μL')
135+
screen.getByText('Flex 8-Channel 1000 µL')
136136
const button = screen.getByText('Attach')
137137
fireEvent.click(button)
138138
screen.getByText('pipette wizard flow')

app/src/organisms/PipetteWizardFlows/__tests__/AttachProbe.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ describe('AttachProbe', () => {
133133
isRobotMoving: true,
134134
}
135135
render(props)
136-
screen.getByText('Stand back, Flex 1-Channel 1000 μL is calibrating')
136+
screen.getByText('Stand back, Flex 1-Channel 1000 µL is calibrating')
137137
screen.getByText(
138138
'The calibration probe will touch the sides of the calibration square in slot C2 to determine its exact position.'
139139
)
@@ -152,7 +152,7 @@ describe('AttachProbe', () => {
152152
isRobotMoving: true,
153153
}
154154
render(props)
155-
screen.getByText('Stand back, Flex 96-Channel 1000 μL is calibrating')
155+
screen.getByText('Stand back, Flex 96-Channel 1000 µL is calibrating')
156156
screen.getByText(
157157
'The calibration probe will touch the sides of the calibration square in slot C2 to determine its exact position.'
158158
)

app/src/organisms/PipetteWizardFlows/__tests__/BeforeBeginning.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ describe('BeforeBeginning', () => {
191191
screen.getByText(
192192
'The calibration probe is included with the robot and should be stored on the front pillar of the robot.'
193193
)
194-
screen.getByAltText('Flex 1-Channel 1000 μL')
194+
screen.getByAltText('Flex 1-Channel 1000 µL')
195195
screen.getByText('You will need:')
196196
screen.getByAltText('Calibration Probe')
197197
screen.getByAltText('2.5 mm Hex Screwdriver')
@@ -449,7 +449,7 @@ describe('BeforeBeginning', () => {
449449
)
450450
screen.getByAltText('2.5 mm Hex Screwdriver')
451451
screen.getByAltText('Calibration Probe')
452-
screen.getByAltText('Flex 96-Channel 1000 μL')
452+
screen.getByAltText('Flex 96-Channel 1000 µL')
453453
screen.getByAltText('96-Channel Mounting Plate')
454454
screen.getByText(
455455
'Provided with the robot. Using another size can strip the instruments’s screws.'

app/src/organisms/PipetteWizardFlows/__tests__/ChoosePipette.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ describe('ChoosePipette', () => {
151151
props = { ...props, selectedPipette: NINETY_SIX_CHANNEL }
152152
render(props)
153153
screen.getByText(
154-
'Detach Flex 1-Channel 1000 μL and Attach 96-Channel pipette'
154+
'Detach Flex 1-Channel 1000 µL and Attach 96-Channel pipette'
155155
)
156156
})
157157

@@ -164,7 +164,7 @@ describe('ChoosePipette', () => {
164164
props = { ...props, selectedPipette: NINETY_SIX_CHANNEL }
165165
render(props)
166166
screen.getByText(
167-
'Detach Flex 1-Channel 1000 μL and Attach 96-Channel pipette'
167+
'Detach Flex 1-Channel 1000 µL and Attach 96-Channel pipette'
168168
)
169169
})
170170
})

app/src/organisms/PipetteWizardFlows/__tests__/DetachPipette.test.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ describe('DetachPipette', () => {
5252
})
5353
it('returns the correct information, buttons work as expected for single mount pipettes', () => {
5454
render(props)
55-
screen.getByText('Loosen screws and detach Flex 1-Channel 1000 μL')
55+
screen.getByText('Loosen screws and detach Flex 1-Channel 1000 µL')
5656
screen.getByText(
5757
'Hold the pipette in place and loosen the pipette screws. (The screws are captive and will not come apart from the pipette.) Then carefully remove the pipette.'
5858
)
@@ -83,7 +83,7 @@ describe('DetachPipette', () => {
8383
},
8484
}
8585
render(props)
86-
screen.getByText('Loosen screws and detach Flex 96-Channel 1000 μL')
86+
screen.getByText('Loosen screws and detach Flex 96-Channel 1000 µL')
8787
screen.getByText(
8888
'Hold the pipette in place and loosen the pipette screws. (The screws are captive and will not come apart from the pipette.) Then carefully remove the pipette.'
8989
)
@@ -113,7 +113,7 @@ describe('DetachPipette', () => {
113113
selectedPipette: NINETY_SIX_CHANNEL,
114114
}
115115
render(props)
116-
screen.getByText('Loosen screws and detach Flex 1-Channel 1000 μL')
116+
screen.getByText('Loosen screws and detach Flex 1-Channel 1000 µL')
117117
screen.getByText(
118118
'Hold the pipette in place and loosen the pipette screws. (The screws are captive and will not come apart from the pipette.) Then carefully remove the pipette.'
119119
)

0 commit comments

Comments
 (0)