opentrons / opentrons Goto Github PK
View Code? Open in Web Editor NEWSoftware for writing protocols and running them on the Opentrons Flex and Opentrons OT-2
Home Page: https://opentrons.com
License: Apache License 2.0
Software for writing protocols and running them on the Opentrons Flex and Opentrons OT-2
Home Page: https://opentrons.com
License: Apache License 2.0
When the container file has an issue, it just stops the app from opening. It should pop up an error that says there's a problem with the containers file instead of just being unresponsive.
The app logs Update error: can not find Squirrel
when the app is started in development mode with make dev
on Windows 10
This needs investigation..
When the user presses the cancel protocol, a RuntimeException raised by the API is show as a toast message
Since repo refactor The front end tests seem have a strange error message that doesn't result in a test failure.
https://travis-ci.org/OpenTrons/opentrons/jobs/250194221#L3745
After running the protocol, when clicking to rerun the protocol, the app freezes. It will home the robot very slowly then stop. The app says in progress at 0% but nothing is happening. When clicked to cancel job, the bar stays the same (attached is the mentioned bar). While frozen, I am unable to re-upload the protocol and am forced to close out of the window to open a new one.
add in tube-rack-80well to main containers file
new container.json.zip
Should move up and down on connect (like 1.2) to signal that it has connected
Pick up tip calls wait_for_arrival on the instrument motor, which does not have the wait_for_arrival method any more. This makes picking up a tip impossible - the reason we did not detect this in tests is that the pick_up_tip method is not tested.
Command causes app to freeze and disconnect machine, does not actually home within protocol
currently pipette.mix(num_mixes) only takes one argument, the number of mixes desired, and defaults to the tip's full volume.
It would be good to add an optional second argument, the volume of liquid to mix:
pipette.mix(vol, num_mixes)
... cant go high enough in the Z to go over the 15-50 ml it is just traveling lower when the protocol is running (i.e. if I manually move it it will go over the 15 mL tubes)
The expected action for a call to .dispense(0)
would be for the pipette to dispense 0uL, not for it to dispense all remaining volume inside the pipette.
add container to containers.json
Both Nusrat & I experienced containers disappearing at random from the calibration step list when one is using the app. The disappearing sometimes takes place after running a protocol and interacting with the 'move to' buttons on a container.
I have not found a reliable way to replicate this bug.
[Reported by @HenryOpentrons ]
On Windows, when you connect to a robot, disconnect, and reconnect again the following error occurs:
The error goes away when you restart the app.
When calibrating a container and selecting "move to container", the robot moves the z axis DOWN first, and then moves XY. This does not take into account other containers on the deck. All move to buttons should move UP the Z axis first, then make XY movements.
Delay command does not actually delay
need to let people know they can prototype with the virtual smoothie, dont need to plug into the robot to get started
Need to add special trash container that has depth - using "point" doesn't allow you to eject liquid in that location
When I press cancel on a running protocol job the app freezes. I can't close the run screen, press run job, press pause, etc. I have to restart the app.
Running the make docs
fails randomly on my local machine (and I suspect CI as well). Sometimes doc tests fail and hit 20-23 failures which involve virtual smoothie hitting a limit switch.
Dispense command goes to blowout to pickup, not bottom - is that supposed to happen? It ends up picking up more volume than it should
Aspirate command does nothing
Can we make labware names not case sensitive? Eg: 96-pcr-flat can be used in addition to 96-PCR-flat?
The protocol ran, was paused and then cancelled. When the protocol ran again, the pause button did not reset and became the play button.
Hi,
This is a very interesting project. I have been studying the API code and trying to figure out how everything fits together - I am getting there :-)
My question is does the machine wait
for one action to be completed as "expected" before proceeding with the next? I saw this:
def wait_for_arrival(self, tolerance=0.1):
arrived = False
coords = self.get_position()
while not arrived:
coords = self.get_position()
diff = {}
for axis in coords.get('target', {}):
diff[axis] = coords['current'][axis] - coords['target'][axis]
dist = pow(diff['x'], 2) + pow(diff['y'], 2) + pow(diff['z'], 2)
dist_head = math.sqrt(dist)
"""
smoothie not guaranteed to be EXACTLY where it's target is
but seems to be about +-0.05 mm from the target coordinate
the robot's physical resolution is found with:
1mm / config_steps_per_mm
"""
if dist_head < tolerance:
if abs(diff['a']) < tolerance and abs(diff['b']) < tolerance:
arrived = True
else:
arrived = False
return arrived
which is a case in point. If arrived = False
then obviously the while
loop would be exited. I could not see where this method was called at the higher level, what happens if the position never can be reached? I presume there is a "try a number of times" parameter and the main "instruction queue" is exited and the user notified?
Many Thanks.
Regards,
Tom
Need to add Left/Center or B/A labels to container lists for clarification, also pipette type?
eg B: p200 S, and Center: p10 or A: p10 M
When the app is packaged for windows, the opentrons-server-exe
is not included in final binary.
App run log commands are displayed after the command is executed by the robot. This delay occurs because of the refactor that removed protocol commands being closures. When protocol commands where closures, the app displayed the description
property of the command and then executed the closure. What happens instead now is that the commands are displayed after the robot has made the movements.
Seems like the calibrated position is not being considered during a robot arc
movement only some of the time when being called from the flask server.
Steps to reproduce:
trough-12row
and tiprack-200uL
trough-12row
so that it's is higher up on the Z axis than the tiprack-200uL
Move-To
button on the trough-12row
(should well well, moving up to safe height)Pick-Up-Tip
button on the tiprack-200uL
(should well well, moving up to safe height)Move-To
button on the trough-12row
(should well well, moving up to safe height)Pick-Up-Tip
button on the tiprack-200uL
, and the pipette should move DOWNWARDS, colliding with the troughA possible false-positive Warning currently in CI:
WARNING in ./~/vue-resource/~/got/package.json
(Emitted value instead of an instance of Error) ⚠️ JSON Loader
It seems you're using webpack >= v2.0.0, which includes native support for JSON.
Please remove this loader from webpack.config.js as it isn't needed anymore and
is deprecated. See the v1.0.0 -> v2.0.0 migration guide for more information
(https://webpack.js.org/guides/migrating/#json-loader-is-not-required-anymore)
@ ./~/vue-resource/~/got/index.js 22:12-32
@ ./~/vue-resource/dist/vue-resource.es2015.js
@ ./ui/main.js
@ multi ./ui/main.js webpack-dev-server/client?http://localhost:8090/
Thread to watch: webpack-contrib/json-loader#57
"See the 15-50ml tuberack for an example of this functionality being used"
The link for the 15-50ml tuberack no longer is valid.
from OT user Magnus: 'I think there is a bug in the containers file for the tube-rack-15_50mL for positions C1 and C2. The x position should be 64, not 54. (Compare to the 32 of the B1 and B2)'
Update firmware to most recent compatible version
If the only function applied to a container in the entire protocol is move_to, it will not show up for calibrations in the app.
The app shows a modal dialog saying The "git" commands requires the command line developer tools...
on OS X 10.11. Seems like this is caused by some part of Python API calling opentrons.__version__
which, in turn, when _version.py is missing is trying to call git
I am getting this error when I do a move_to on a smoothie (mine is not connected to a robot but that shouldn't make a difference for jogging). I also get it occasionally on the Virtual Smoothie when doing a move_to.
Traceback (most recent call last): File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app response = self.make_response(self.handle_exception(e)) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask_cors/extension.py", line 161, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1403, in handle_exception reraise(exc_type, exc_value, tb) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise raise value File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1817, in wsgi_app response = self.full_dispatch_request() File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1477, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask_cors/extension.py", line 161, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1381, in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise raise value File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1475, in full_dispatch_request rv = self.dispatch_request() File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/flask/app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/levkravinsky/Desktop/ot/v2/server/main.py", line 258, in jog result = robot.move_head(mode="relative", **coords) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/opentrons_sdk/robot/robot.py", line 209, in move_head self._driver.move_head(*args, **kwargs) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/opentrons_sdk/drivers/motor.py", line 315, in move_head return self.consume_move_commands(args_list, increment) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/opentrons_sdk/drivers/motor.py", line 330, in consume_move_commands self.wait_for_arrival(tolerance) File "/Users/levkravinsky/Desktop/ot/v2/server/env/lib/python3.4/site-packages/opentrons_sdk/drivers/motor.py", line 354, in wait_for_arrival dist = pow(diff['x'], 2) + pow(diff['y'], 2) + pow(diff['z'], 2) KeyError: 'x'
When I press cancel when a protocol run is started and it is at the simulating stage, it does not work.
There is a pause of around ~10 sec (for dinosaur protocol). This pause is caused by the fact that the protocol is simulating (running against virtual smoothie to determine final command sequence) before running on robot. The final command sequence is needed in order to determine progress bar length.
calibrating the XYZ of tiprack using old app, pipette goes to correct XY, but not far enough down the Z
add custom containers from 1.2 back into app
need a "max volume saved" type reaction to pop up (like other saved buttons)
When I close my app I see the following log,
backend process successfully shutdown
info: Electron App window closed, quitting App
Not rewriting GET /exit because the client did not send an HTTP accept header.
And my backend server process is still running although the Electron process was terminated.
Drop tip moves to the rack, drops tip, and then sends the plunger all the way and then back down to the bottom position - it doesn't need to move back to bottom at the end
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.