PyLabRobot 0.1.3__tar.gz → 0.1.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. PyLabRobot-0.1.5/PKG-INFO +180 -0
  2. PyLabRobot-0.1.5/PyLabRobot.egg-info/PKG-INFO +180 -0
  3. PyLabRobot-0.1.5/PyLabRobot.egg-info/SOURCES.txt +154 -0
  4. PyLabRobot-0.1.5/PyLabRobot.egg-info/entry_points.txt +3 -0
  5. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/PyLabRobot.egg-info/requires.txt +36 -24
  6. PyLabRobot-0.1.5/README.md +116 -0
  7. PyLabRobot-0.1.5/pylabrobot/__init__.py +15 -0
  8. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/pylabrobot/__version__.py +1 -1
  9. PyLabRobot-0.1.5/pylabrobot/heaters/__init__.py +0 -0
  10. PyLabRobot-0.1.5/pylabrobot/liquid_handling/__init__.py +16 -0
  11. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/USBBackend.py +239 -0
  12. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/__init__.py +15 -0
  13. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/backend.py +142 -0
  14. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/chatterbox_backend.py +71 -0
  15. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/chatterbox_backend_tests.py +60 -0
  16. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/STAR.py +6712 -0
  17. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/STAR_tests.py +745 -0
  18. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/VENUS.py +245 -0
  19. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/pylabrobot/liquid_handling/backends/hamilton/__init__.py +2 -0
  20. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/base.py +421 -0
  21. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/pump.py +23 -0
  22. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/tilt_module.py +301 -0
  23. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/vantage.py +4794 -0
  24. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/hamilton/vantage_tests.py +347 -0
  25. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/http.py +88 -0
  26. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/http_tests.py +235 -0
  27. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/opentrons_backend.py +492 -0
  28. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/opentrons_backend_tests.py +176 -0
  29. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/saver_backend.py +75 -0
  30. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/serializing_backend.py +189 -0
  31. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/serializing_backend_tests.py +192 -0
  32. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/tecan/EVO.py +1240 -0
  33. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/tecan/__init__.py +1 -0
  34. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/tecan/errors.py +83 -0
  35. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/websocket.py +288 -0
  36. PyLabRobot-0.1.5/pylabrobot/liquid_handling/backends/websocket_tests.py +62 -0
  37. PyLabRobot-0.1.5/pylabrobot/liquid_handling/errors.py +10 -0
  38. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_classes/__init__.py +0 -0
  39. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_classes/hamilton/__init__.py +3 -0
  40. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_classes/hamilton/base.py +113 -0
  41. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_classes/hamilton/star.py +11642 -0
  42. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_classes/hamilton/vantage.py +10843 -0
  43. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_classes/tecan.py +2796 -0
  44. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_handler.py +1680 -0
  45. PyLabRobot-0.1.5/pylabrobot/liquid_handling/liquid_handler_tests.py +656 -0
  46. PyLabRobot-0.1.5/pylabrobot/liquid_handling/standard.py +139 -0
  47. PyLabRobot-0.1.5/pylabrobot/liquid_handling/strictness.py +23 -0
  48. PyLabRobot-0.1.5/pylabrobot/machine.py +76 -0
  49. PyLabRobot-0.1.5/pylabrobot/plate_reading/__init__.py +2 -0
  50. PyLabRobot-0.1.5/pylabrobot/plate_reading/backend.py +82 -0
  51. PyLabRobot-0.1.5/pylabrobot/plate_reading/clario_star.py +342 -0
  52. PyLabRobot-0.1.5/pylabrobot/plate_reading/plate_reader.py +92 -0
  53. PyLabRobot-0.1.5/pylabrobot/plate_reading/plate_reader_tests.py +64 -0
  54. PyLabRobot-0.1.5/pylabrobot/powder_dispensing/__init__.py +1 -0
  55. PyLabRobot-0.1.5/pylabrobot/powder_dispensing/backend.py +57 -0
  56. PyLabRobot-0.1.5/pylabrobot/powder_dispensing/powder_dispenser.py +86 -0
  57. PyLabRobot-0.1.5/pylabrobot/powder_dispensing/powder_dispenser_tests.py +79 -0
  58. PyLabRobot-0.1.5/pylabrobot/pumps/__init__.py +2 -0
  59. PyLabRobot-0.1.5/pylabrobot/pumps/backend.py +26 -0
  60. PyLabRobot-0.1.5/pylabrobot/pumps/cole_parmer/__init__.py +1 -0
  61. PyLabRobot-0.1.5/pylabrobot/pumps/cole_parmer/masterflex.py +61 -0
  62. PyLabRobot-0.1.5/pylabrobot/pumps/pump.py +56 -0
  63. PyLabRobot-0.1.5/pylabrobot/resources/__init__.py +41 -0
  64. PyLabRobot-0.1.5/pylabrobot/resources/azenta/plates.py +58 -0
  65. PyLabRobot-0.1.5/pylabrobot/resources/carrier.py +257 -0
  66. {PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract → PyLabRobot-0.1.5/pylabrobot/resources}/carrier_tests.py +64 -89
  67. PyLabRobot-0.1.5/pylabrobot/resources/container.py +36 -0
  68. PyLabRobot-0.1.5/pylabrobot/resources/coordinate.py +45 -0
  69. {PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract → PyLabRobot-0.1.5/pylabrobot/resources}/coordinate_tests.py +3 -14
  70. PyLabRobot-0.1.5/pylabrobot/resources/corning_axygen/__init__.py +1 -0
  71. PyLabRobot-0.1.5/pylabrobot/resources/corning_axygen/plates.py +58 -0
  72. PyLabRobot-0.1.5/pylabrobot/resources/corning_costar/__init__.py +1 -0
  73. PyLabRobot-0.1.5/pylabrobot/resources/corning_costar/plates.py +790 -0
  74. PyLabRobot-0.1.5/pylabrobot/resources/deck.py +123 -0
  75. PyLabRobot-0.1.5/pylabrobot/resources/deck_tests.py +76 -0
  76. PyLabRobot-0.1.5/pylabrobot/resources/errors.py +18 -0
  77. PyLabRobot-0.1.5/pylabrobot/resources/hamilton/__init__.py +2 -0
  78. PyLabRobot-0.1.5/pylabrobot/resources/hamilton/hamilton_deck_tests.py +118 -0
  79. PyLabRobot-0.1.5/pylabrobot/resources/hamilton/hamilton_decks.py +370 -0
  80. PyLabRobot-0.1.5/pylabrobot/resources/hamilton/vantage_decks.py +65 -0
  81. PyLabRobot-0.1.5/pylabrobot/resources/hamilton_parse.py +400 -0
  82. {PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract → PyLabRobot-0.1.5/pylabrobot/resources}/itemized_resource.py +124 -69
  83. {PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract → PyLabRobot-0.1.5/pylabrobot/resources}/itemized_resource_tests.py +70 -42
  84. PyLabRobot-0.1.5/pylabrobot/resources/liquid.py +58 -0
  85. {PyLabRobot-0.1.3/pylabrobot/liquid_handling → PyLabRobot-0.1.5/pylabrobot}/resources/ml_star/__init__.py +2 -2
  86. PyLabRobot-0.1.5/pylabrobot/resources/ml_star/plate_carriers.py +372 -0
  87. PyLabRobot-0.1.5/pylabrobot/resources/ml_star/tip_carriers.py +1408 -0
  88. PyLabRobot-0.1.5/pylabrobot/resources/ml_star/tip_creators.py +224 -0
  89. PyLabRobot-0.1.5/pylabrobot/resources/ml_star/tip_racks.py +308 -0
  90. PyLabRobot-0.1.5/pylabrobot/resources/opentrons/deck.py +171 -0
  91. PyLabRobot-0.1.5/pylabrobot/resources/opentrons/deck_tests.py +42 -0
  92. {PyLabRobot-0.1.3/pylabrobot/liquid_handling → PyLabRobot-0.1.5/pylabrobot}/resources/opentrons/load.py +44 -29
  93. {PyLabRobot-0.1.3/pylabrobot/liquid_handling → PyLabRobot-0.1.5/pylabrobot}/resources/opentrons/plates.py +34 -32
  94. {PyLabRobot-0.1.3/pylabrobot/liquid_handling → PyLabRobot-0.1.5/pylabrobot}/resources/opentrons/tip_racks.py +30 -28
  95. PyLabRobot-0.1.5/pylabrobot/resources/petri_dish.py +81 -0
  96. PyLabRobot-0.1.5/pylabrobot/resources/petri_dish_tests.py +99 -0
  97. PyLabRobot-0.1.5/pylabrobot/resources/plate.py +178 -0
  98. PyLabRobot-0.1.5/pylabrobot/resources/plate_tests.py +37 -0
  99. PyLabRobot-0.1.5/pylabrobot/resources/porvair/__init__.py +1 -0
  100. PyLabRobot-0.1.5/pylabrobot/resources/porvair/plates.py +58 -0
  101. PyLabRobot-0.1.5/pylabrobot/resources/powder.py +11 -0
  102. PyLabRobot-0.1.5/pylabrobot/resources/resource.py +604 -0
  103. PyLabRobot-0.1.5/pylabrobot/resources/resource_stack.py +118 -0
  104. PyLabRobot-0.1.5/pylabrobot/resources/resource_stack_tests.py +99 -0
  105. PyLabRobot-0.1.5/pylabrobot/resources/resource_tests.py +309 -0
  106. PyLabRobot-0.1.5/pylabrobot/resources/revvity/__init__.py +1 -0
  107. PyLabRobot-0.1.5/pylabrobot/resources/revvity/plates.py +51 -0
  108. PyLabRobot-0.1.5/pylabrobot/resources/tecan/__init__.py +8 -0
  109. PyLabRobot-0.1.5/pylabrobot/resources/tecan/plate_carriers.py +514 -0
  110. PyLabRobot-0.1.5/pylabrobot/resources/tecan/plates.py +868 -0
  111. PyLabRobot-0.1.5/pylabrobot/resources/tecan/tecan_decks.py +233 -0
  112. PyLabRobot-0.1.5/pylabrobot/resources/tecan/tecan_resource.py +34 -0
  113. PyLabRobot-0.1.5/pylabrobot/resources/tecan/tip_carriers.py +2273 -0
  114. PyLabRobot-0.1.5/pylabrobot/resources/tecan/tip_creators.py +681 -0
  115. PyLabRobot-0.1.5/pylabrobot/resources/tecan/tip_racks.py +1767 -0
  116. PyLabRobot-0.1.5/pylabrobot/resources/tecan/wash.py +70 -0
  117. PyLabRobot-0.1.5/pylabrobot/resources/thermo_fisher/__init__.py +1 -0
  118. PyLabRobot-0.1.5/pylabrobot/resources/thermo_fisher/troughs.py +15 -0
  119. PyLabRobot-0.1.5/pylabrobot/resources/tip.py +38 -0
  120. PyLabRobot-0.1.5/pylabrobot/resources/tip_rack.py +174 -0
  121. PyLabRobot-0.1.5/pylabrobot/resources/tip_tests.py +38 -0
  122. PyLabRobot-0.1.5/pylabrobot/resources/tip_tracker.py +142 -0
  123. PyLabRobot-0.1.5/pylabrobot/resources/tip_tracker_tests.py +35 -0
  124. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/carrier.py → PyLabRobot-0.1.5/pylabrobot/resources/todo_generic_carrier.py +51 -89
  125. PyLabRobot-0.1.5/pylabrobot/resources/trash.py +5 -0
  126. PyLabRobot-0.1.5/pylabrobot/resources/trough.py +27 -0
  127. PyLabRobot-0.1.5/pylabrobot/resources/volume_functions.py +190 -0
  128. PyLabRobot-0.1.5/pylabrobot/resources/volume_functions_tests.py +91 -0
  129. PyLabRobot-0.1.5/pylabrobot/resources/volume_tracker.py +167 -0
  130. PyLabRobot-0.1.5/pylabrobot/resources/volume_tracker_tests.py +63 -0
  131. PyLabRobot-0.1.5/pylabrobot/resources/vwr/__init__.py +1 -0
  132. PyLabRobot-0.1.5/pylabrobot/resources/vwr/troughs.py +12 -0
  133. PyLabRobot-0.1.5/pylabrobot/resources/well.py +114 -0
  134. PyLabRobot-0.1.5/pylabrobot/resources/well_tests.py +29 -0
  135. PyLabRobot-0.1.5/pylabrobot/scales/__init__.py +2 -0
  136. PyLabRobot-0.1.5/pylabrobot/scales/mettler_toledo.py +351 -0
  137. PyLabRobot-0.1.5/pylabrobot/scales/scale.py +32 -0
  138. PyLabRobot-0.1.5/pylabrobot/scales/scale_backend.py +18 -0
  139. PyLabRobot-0.1.5/pylabrobot/serializer.py +67 -0
  140. PyLabRobot-0.1.5/pylabrobot/utils/__init__.py +2 -0
  141. PyLabRobot-0.1.5/pylabrobot/utils/file_parsing.py +32 -0
  142. PyLabRobot-0.1.5/pylabrobot/utils/list.py +57 -0
  143. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/pylabrobot/utils/list_tests.py +11 -4
  144. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/pylabrobot/utils/positions.py +22 -12
  145. PyLabRobot-0.1.5/pylabrobot/utils/positions_tests.py +51 -0
  146. PyLabRobot-0.1.5/pylabrobot/visualizer/__init__.py +1 -0
  147. PyLabRobot-0.1.5/pylabrobot/visualizer/visualizer.py +466 -0
  148. PyLabRobot-0.1.5/pylabrobot/visualizer/visualizer_tests.py +139 -0
  149. PyLabRobot-0.1.5/setup.py +84 -0
  150. PyLabRobot-0.1.3/PKG-INFO +0 -79
  151. PyLabRobot-0.1.3/PyLabRobot.egg-info/PKG-INFO +0 -79
  152. PyLabRobot-0.1.3/PyLabRobot.egg-info/SOURCES.txt +0 -82
  153. PyLabRobot-0.1.3/README.md +0 -62
  154. PyLabRobot-0.1.3/pylabrobot/__init__.py +0 -3
  155. PyLabRobot-0.1.3/pylabrobot/liquid_handling/__init__.py +0 -6
  156. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/__init__.py +0 -9
  157. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/backend.py +0 -128
  158. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/chatterbox_backend.py +0 -73
  159. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/hamilton/STAR.py +0 -4491
  160. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/hamilton/STAR_tests.py +0 -419
  161. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/hamilton/VENUS.py +0 -275
  162. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/hamilton/errors.py +0 -913
  163. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/hamilton/pump.py +0 -25
  164. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/hamilton/venus_utils.py +0 -297
  165. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/mock.py +0 -22
  166. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/net/__init__.py +0 -4
  167. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/net/http.py +0 -150
  168. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/net/websocket.py +0 -315
  169. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/net/websocket_tests.py +0 -324
  170. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/opentrons_backend.py +0 -348
  171. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/opentrons_backend_tests.py +0 -132
  172. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/simulation/__init__.py +0 -3
  173. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/simulation/simulation_tests.py +0 -130
  174. PyLabRobot-0.1.3/pylabrobot/liquid_handling/backends/simulation/simulator_backend.py +0 -234
  175. PyLabRobot-0.1.3/pylabrobot/liquid_handling/errors.py +0 -4
  176. PyLabRobot-0.1.3/pylabrobot/liquid_handling/liquid_classes.py +0 -347
  177. PyLabRobot-0.1.3/pylabrobot/liquid_handling/liquid_classes_tests.py +0 -98
  178. PyLabRobot-0.1.3/pylabrobot/liquid_handling/liquid_handler.py +0 -908
  179. PyLabRobot-0.1.3/pylabrobot/liquid_handling/liquid_handler_tests.py +0 -351
  180. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/__init__.py +0 -7
  181. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/__init__.py +0 -13
  182. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/coordinate.py +0 -50
  183. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/deck.py +0 -107
  184. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/plate.py +0 -162
  185. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/plate_tests.py +0 -46
  186. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/resource.py +0 -190
  187. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/resource_tests.py +0 -128
  188. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/tip_type.py +0 -90
  189. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/tiprack.py +0 -84
  190. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/abstract/well.py +0 -17
  191. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/corning_costar/plates.py +0 -1409
  192. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/hamilton/__init__.py +0 -1
  193. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/hamilton/deck.py +0 -112
  194. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/hotel.py +0 -68
  195. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/hotel_tests.py +0 -62
  196. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/ml_star/plate_carriers.py +0 -318
  197. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/ml_star/tip_carriers.py +0 -1198
  198. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/ml_star/tip_types.py +0 -111
  199. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/ml_star/tipracks.py +0 -185
  200. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/opentrons/deck.py +0 -60
  201. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/plate_reader.py +0 -23
  202. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/plate_reader_tests.py +0 -41
  203. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/resource_stack.py +0 -90
  204. PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/resource_stack_tests.py +0 -56
  205. PyLabRobot-0.1.3/pylabrobot/liquid_handling/standard.py +0 -103
  206. PyLabRobot-0.1.3/pylabrobot/utils/__init__.py +0 -16
  207. PyLabRobot-0.1.3/pylabrobot/utils/file_parsing.py +0 -31
  208. PyLabRobot-0.1.3/pylabrobot/utils/list.py +0 -42
  209. PyLabRobot-0.1.3/pylabrobot/utils/numbers.py +0 -8
  210. PyLabRobot-0.1.3/pylabrobot/utils/positions_tests.py +0 -45
  211. PyLabRobot-0.1.3/pylabrobot/utils/string.py +0 -25
  212. PyLabRobot-0.1.3/setup.py +0 -72
  213. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/LICENSE +0 -0
  214. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/PyLabRobot.egg-info/dependency_links.txt +0 -0
  215. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/PyLabRobot.egg-info/top_level.txt +0 -0
  216. {PyLabRobot-0.1.3/pylabrobot/liquid_handling/resources/corning_costar → PyLabRobot-0.1.5/pylabrobot/resources/azenta}/__init__.py +0 -0
  217. {PyLabRobot-0.1.3/pylabrobot/liquid_handling → PyLabRobot-0.1.5/pylabrobot}/resources/opentrons/__init__.py +0 -0
  218. {PyLabRobot-0.1.3/pylabrobot/liquid_handling → PyLabRobot-0.1.5/pylabrobot}/resources/opentrons/load_tests.py +0 -0
  219. {PyLabRobot-0.1.3 → PyLabRobot-0.1.5}/setup.cfg +0 -0
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.1
2
+ Name: PyLabRobot
3
+ Version: 0.1.5
4
+ Summary: A hardware agnostic platform for liquid handling
5
+ Home-page: https://github.com/pylabrobot/pylabrobot.git
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: typing_extensions
9
+ Provides-Extra: fw
10
+ Requires-Dist: pyusb; extra == "fw"
11
+ Provides-Extra: http
12
+ Requires-Dist: requests; extra == "http"
13
+ Requires-Dist: types-requests; extra == "http"
14
+ Provides-Extra: plate-reading
15
+ Requires-Dist: pylibftdi; extra == "plate-reading"
16
+ Provides-Extra: websockets
17
+ Requires-Dist: websockets; extra == "websockets"
18
+ Provides-Extra: visualizer
19
+ Requires-Dist: websockets; extra == "visualizer"
20
+ Provides-Extra: venus
21
+ Requires-Dist: pyhamilton; extra == "venus"
22
+ Provides-Extra: opentrons
23
+ Requires-Dist: opentrons-http-api-client; extra == "opentrons"
24
+ Requires-Dist: opentrons-shared-data; extra == "opentrons"
25
+ Provides-Extra: server
26
+ Requires-Dist: flask[async]; extra == "server"
27
+ Provides-Extra: dev
28
+ Requires-Dist: pyusb; extra == "dev"
29
+ Requires-Dist: requests; extra == "dev"
30
+ Requires-Dist: types-requests; extra == "dev"
31
+ Requires-Dist: pylibftdi; extra == "dev"
32
+ Requires-Dist: websockets; extra == "dev"
33
+ Requires-Dist: websockets; extra == "dev"
34
+ Requires-Dist: opentrons-http-api-client; extra == "dev"
35
+ Requires-Dist: opentrons-shared-data; extra == "dev"
36
+ Requires-Dist: flask[async]; extra == "dev"
37
+ Requires-Dist: sphinx_book_theme; extra == "dev"
38
+ Requires-Dist: myst_nb; extra == "dev"
39
+ Requires-Dist: sphinx_copybutton; extra == "dev"
40
+ Requires-Dist: pytest; extra == "dev"
41
+ Requires-Dist: pytest-timeout; extra == "dev"
42
+ Requires-Dist: pylint; extra == "dev"
43
+ Requires-Dist: mypy; extra == "dev"
44
+ Requires-Dist: responses; extra == "dev"
45
+ Provides-Extra: all
46
+ Requires-Dist: pyusb; extra == "all"
47
+ Requires-Dist: requests; extra == "all"
48
+ Requires-Dist: types-requests; extra == "all"
49
+ Requires-Dist: pylibftdi; extra == "all"
50
+ Requires-Dist: websockets; extra == "all"
51
+ Requires-Dist: websockets; extra == "all"
52
+ Requires-Dist: opentrons-http-api-client; extra == "all"
53
+ Requires-Dist: opentrons-shared-data; extra == "all"
54
+ Requires-Dist: flask[async]; extra == "all"
55
+ Requires-Dist: sphinx_book_theme; extra == "all"
56
+ Requires-Dist: myst_nb; extra == "all"
57
+ Requires-Dist: sphinx_copybutton; extra == "all"
58
+ Requires-Dist: pytest; extra == "all"
59
+ Requires-Dist: pytest-timeout; extra == "all"
60
+ Requires-Dist: pylint; extra == "all"
61
+ Requires-Dist: mypy; extra == "all"
62
+ Requires-Dist: responses; extra == "all"
63
+ Requires-Dist: pyhamilton; extra == "all"
64
+
65
+ <div style="text-align: center" align="center">
66
+ <img width="400" src=".github/img/logo.png" />
67
+ <h1>PyLabRobot</h1>
68
+ </div>
69
+
70
+ [**Docs**](https://docs.pylabrobot.org) | [**Forum**](https://forums.pylabrobot.org) | [**Installation**](https://docs.pylabrobot.org/installation.html) | [**Getting started**](https://docs.pylabrobot.org/basic.html)
71
+
72
+ ## What is PyLabRobot?
73
+
74
+ PyLabRobot is a hardware agnostic, pure Python library for liquid handling robots and other lab automation equipment. Read [the paper](<https://www.cell.com/device/fulltext/S2666-9986(23)00170-9>) in Device.
75
+
76
+ ### Liquid handling robots
77
+
78
+ PyLabRobot provides a layer of general-purpose abstractions over robot functions, with various device drivers for communicating with different kinds of robots. Right now we only have drivers for Hamilton, Tecan and Opentrons liquid handling robots, but we will soon have drivers for many more. The Hamiton and Tecan backends provide an interactive firmware interface that works on Windows, macOS and Linux. The Opentrons driver is based on the [Opentrons HTTP API](https://github.com/rickwierenga/opentrons-python-api). We also provide a browser-based Visualizer which can visualize the state of the deck during a run, and testing backends which do not require access to a robot.
79
+
80
+ Here's a quick example showing how to move 100uL of liquid from well A1 to A2 using firmware on **Hamilton STAR** (this will work on any operating system!):
81
+
82
+ ```python
83
+ from pylabrobot import LiquidHandler
84
+ from pylabrobot.liquid_handling.backends import STAR
85
+ from pylabrobot.resources import Deck
86
+
87
+ deck = Deck.load_from_json_file("hamilton-layout.json")
88
+ lh = LiquidHandler(backend=STAR(), deck=deck)
89
+ await lh.setup()
90
+
91
+ await lh.pick_up_tips(lh.deck.get_resource("tip_rack")["A1"])
92
+ await lh.aspirate(lh.deck.get_resource("plate")["A1"], vols=100)
93
+ await lh.dispense(lh.deck.get_resource("plate")["A2"], vols=100)
94
+ await lh.return_tips()
95
+ ```
96
+
97
+ To run the same procedure on an **Opentrons**, change the following lines:
98
+
99
+ ```diff
100
+ - from pylabrobot.liquid_handling.backends import STAR
101
+ + from pylabrobot.liquid_handling.backends import OpentronsBackend
102
+
103
+ - deck = Deck.load_from_json_file("hamilton-layout.json")
104
+ + deck = Deck.load_from_json_file("opentrons-layout.json")
105
+
106
+ - lh = LiquidHandler(backend=STAR(), deck=deck)
107
+ + lh = LiquidHandler(backend=OpentronsBackend(host="x.x.x.x"), deck=deck)
108
+ ```
109
+
110
+ Or **Tecan** (also works on any operating system!):
111
+
112
+ ```diff
113
+ - from pylabrobot.liquid_handling.backends import STAR
114
+ + from pylabrobot.liquid_handling.backends import EVO
115
+
116
+ - deck = Deck.load_from_json_file("hamilton-layout.json")
117
+ + deck = Deck.load_from_json_file("tecan-layout.json")
118
+
119
+ - lh = LiquidHandler(backend=STAR(), deck=deck)
120
+ + lh = LiquidHandler(backend=EVO(), deck=deck)
121
+ ```
122
+
123
+ ### Plate readers
124
+
125
+ PyLabRobot also provides a layer of general-purpose abstractions for plate readers, currently with just a driver for the ClarioStar. This driver works on Windows, macOS and Linux. Here's a quick example showing how to read a plate using the ClarioStar:
126
+
127
+ ```python
128
+ from pylabrobot.plate_reading import PlateReader, ClarioStar
129
+
130
+ pr = PlateReader(name="plate reader", backend=ClarioStar())
131
+ await pr.setup()
132
+
133
+ # Use in combination with a liquid handler
134
+ lh.assign_child_resource(pr, location=Coordinate(x, y, z))
135
+ lh.move_plate(lh.deck.get_resource("plate"), pr)
136
+
137
+ data = await pr.read_luminescence()
138
+ ```
139
+
140
+ ## Resources
141
+
142
+ ### Documentation
143
+
144
+ [docs.pylabrobot.org](https://docs.pylabrobot.org)
145
+
146
+ - [Installation](https://docs.pylabrobot.org/installation.html)
147
+ - [Getting Started](https://docs.pylabrobot.org/basic.html)
148
+ - [Contributing](CONTRIBUTING.md)
149
+ - [API Reference](https://docs.pylabrobot.org/pylabrobot.html)
150
+
151
+ ### Support
152
+
153
+ - [forums.pylabrobot.org](https://forums.pylabrobot.org) for questions and discussions.
154
+ - [GitHub Issues](https://github.com/pylabrobot/pylabrobot/issues) for bug reports and feature requests.
155
+
156
+ ## Citing
157
+
158
+ If you use PyLabRobot in your research, please cite the following:
159
+
160
+ ```bibtex
161
+ @article{WIERENGA2023100111,
162
+ title = {PyLabRobot: An open-source, hardware-agnostic interface for liquid-handling robots and accessories},
163
+ journal = {Device},
164
+ volume = {1},
165
+ number = {4},
166
+ pages = {100111},
167
+ year = {2023},
168
+ issn = {2666-9986},
169
+ doi = {https://doi.org/10.1016/j.device.2023.100111},
170
+ url = {https://www.sciencedirect.com/science/article/pii/S2666998623001709},
171
+ author = {Rick P. Wierenga and Stefan M. Golas and Wilson Ho and Connor W. Coley and Kevin M. Esvelt},
172
+ keywords = {laboratory automation, open source, standardization, liquid-handling robots},
173
+ }
174
+ ```
175
+
176
+ ---
177
+
178
+ **Disclaimer:** PyLabRobot is not officially endorsed or supported by any robot manufacturer. If you use a firmware driver such as the STAR driver provided here, you do so at your own risk. Usage of a firmware driver such as STAR may invalidate your warranty. Please contact us with any questions.
179
+
180
+ _Developed for the Sculpting Evolution Group at the MIT Media Lab_
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.1
2
+ Name: PyLabRobot
3
+ Version: 0.1.5
4
+ Summary: A hardware agnostic platform for liquid handling
5
+ Home-page: https://github.com/pylabrobot/pylabrobot.git
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: typing_extensions
9
+ Provides-Extra: fw
10
+ Requires-Dist: pyusb; extra == "fw"
11
+ Provides-Extra: http
12
+ Requires-Dist: requests; extra == "http"
13
+ Requires-Dist: types-requests; extra == "http"
14
+ Provides-Extra: plate-reading
15
+ Requires-Dist: pylibftdi; extra == "plate-reading"
16
+ Provides-Extra: websockets
17
+ Requires-Dist: websockets; extra == "websockets"
18
+ Provides-Extra: visualizer
19
+ Requires-Dist: websockets; extra == "visualizer"
20
+ Provides-Extra: venus
21
+ Requires-Dist: pyhamilton; extra == "venus"
22
+ Provides-Extra: opentrons
23
+ Requires-Dist: opentrons-http-api-client; extra == "opentrons"
24
+ Requires-Dist: opentrons-shared-data; extra == "opentrons"
25
+ Provides-Extra: server
26
+ Requires-Dist: flask[async]; extra == "server"
27
+ Provides-Extra: dev
28
+ Requires-Dist: pyusb; extra == "dev"
29
+ Requires-Dist: requests; extra == "dev"
30
+ Requires-Dist: types-requests; extra == "dev"
31
+ Requires-Dist: pylibftdi; extra == "dev"
32
+ Requires-Dist: websockets; extra == "dev"
33
+ Requires-Dist: websockets; extra == "dev"
34
+ Requires-Dist: opentrons-http-api-client; extra == "dev"
35
+ Requires-Dist: opentrons-shared-data; extra == "dev"
36
+ Requires-Dist: flask[async]; extra == "dev"
37
+ Requires-Dist: sphinx_book_theme; extra == "dev"
38
+ Requires-Dist: myst_nb; extra == "dev"
39
+ Requires-Dist: sphinx_copybutton; extra == "dev"
40
+ Requires-Dist: pytest; extra == "dev"
41
+ Requires-Dist: pytest-timeout; extra == "dev"
42
+ Requires-Dist: pylint; extra == "dev"
43
+ Requires-Dist: mypy; extra == "dev"
44
+ Requires-Dist: responses; extra == "dev"
45
+ Provides-Extra: all
46
+ Requires-Dist: pyusb; extra == "all"
47
+ Requires-Dist: requests; extra == "all"
48
+ Requires-Dist: types-requests; extra == "all"
49
+ Requires-Dist: pylibftdi; extra == "all"
50
+ Requires-Dist: websockets; extra == "all"
51
+ Requires-Dist: websockets; extra == "all"
52
+ Requires-Dist: opentrons-http-api-client; extra == "all"
53
+ Requires-Dist: opentrons-shared-data; extra == "all"
54
+ Requires-Dist: flask[async]; extra == "all"
55
+ Requires-Dist: sphinx_book_theme; extra == "all"
56
+ Requires-Dist: myst_nb; extra == "all"
57
+ Requires-Dist: sphinx_copybutton; extra == "all"
58
+ Requires-Dist: pytest; extra == "all"
59
+ Requires-Dist: pytest-timeout; extra == "all"
60
+ Requires-Dist: pylint; extra == "all"
61
+ Requires-Dist: mypy; extra == "all"
62
+ Requires-Dist: responses; extra == "all"
63
+ Requires-Dist: pyhamilton; extra == "all"
64
+
65
+ <div style="text-align: center" align="center">
66
+ <img width="400" src=".github/img/logo.png" />
67
+ <h1>PyLabRobot</h1>
68
+ </div>
69
+
70
+ [**Docs**](https://docs.pylabrobot.org) | [**Forum**](https://forums.pylabrobot.org) | [**Installation**](https://docs.pylabrobot.org/installation.html) | [**Getting started**](https://docs.pylabrobot.org/basic.html)
71
+
72
+ ## What is PyLabRobot?
73
+
74
+ PyLabRobot is a hardware agnostic, pure Python library for liquid handling robots and other lab automation equipment. Read [the paper](<https://www.cell.com/device/fulltext/S2666-9986(23)00170-9>) in Device.
75
+
76
+ ### Liquid handling robots
77
+
78
+ PyLabRobot provides a layer of general-purpose abstractions over robot functions, with various device drivers for communicating with different kinds of robots. Right now we only have drivers for Hamilton, Tecan and Opentrons liquid handling robots, but we will soon have drivers for many more. The Hamiton and Tecan backends provide an interactive firmware interface that works on Windows, macOS and Linux. The Opentrons driver is based on the [Opentrons HTTP API](https://github.com/rickwierenga/opentrons-python-api). We also provide a browser-based Visualizer which can visualize the state of the deck during a run, and testing backends which do not require access to a robot.
79
+
80
+ Here's a quick example showing how to move 100uL of liquid from well A1 to A2 using firmware on **Hamilton STAR** (this will work on any operating system!):
81
+
82
+ ```python
83
+ from pylabrobot import LiquidHandler
84
+ from pylabrobot.liquid_handling.backends import STAR
85
+ from pylabrobot.resources import Deck
86
+
87
+ deck = Deck.load_from_json_file("hamilton-layout.json")
88
+ lh = LiquidHandler(backend=STAR(), deck=deck)
89
+ await lh.setup()
90
+
91
+ await lh.pick_up_tips(lh.deck.get_resource("tip_rack")["A1"])
92
+ await lh.aspirate(lh.deck.get_resource("plate")["A1"], vols=100)
93
+ await lh.dispense(lh.deck.get_resource("plate")["A2"], vols=100)
94
+ await lh.return_tips()
95
+ ```
96
+
97
+ To run the same procedure on an **Opentrons**, change the following lines:
98
+
99
+ ```diff
100
+ - from pylabrobot.liquid_handling.backends import STAR
101
+ + from pylabrobot.liquid_handling.backends import OpentronsBackend
102
+
103
+ - deck = Deck.load_from_json_file("hamilton-layout.json")
104
+ + deck = Deck.load_from_json_file("opentrons-layout.json")
105
+
106
+ - lh = LiquidHandler(backend=STAR(), deck=deck)
107
+ + lh = LiquidHandler(backend=OpentronsBackend(host="x.x.x.x"), deck=deck)
108
+ ```
109
+
110
+ Or **Tecan** (also works on any operating system!):
111
+
112
+ ```diff
113
+ - from pylabrobot.liquid_handling.backends import STAR
114
+ + from pylabrobot.liquid_handling.backends import EVO
115
+
116
+ - deck = Deck.load_from_json_file("hamilton-layout.json")
117
+ + deck = Deck.load_from_json_file("tecan-layout.json")
118
+
119
+ - lh = LiquidHandler(backend=STAR(), deck=deck)
120
+ + lh = LiquidHandler(backend=EVO(), deck=deck)
121
+ ```
122
+
123
+ ### Plate readers
124
+
125
+ PyLabRobot also provides a layer of general-purpose abstractions for plate readers, currently with just a driver for the ClarioStar. This driver works on Windows, macOS and Linux. Here's a quick example showing how to read a plate using the ClarioStar:
126
+
127
+ ```python
128
+ from pylabrobot.plate_reading import PlateReader, ClarioStar
129
+
130
+ pr = PlateReader(name="plate reader", backend=ClarioStar())
131
+ await pr.setup()
132
+
133
+ # Use in combination with a liquid handler
134
+ lh.assign_child_resource(pr, location=Coordinate(x, y, z))
135
+ lh.move_plate(lh.deck.get_resource("plate"), pr)
136
+
137
+ data = await pr.read_luminescence()
138
+ ```
139
+
140
+ ## Resources
141
+
142
+ ### Documentation
143
+
144
+ [docs.pylabrobot.org](https://docs.pylabrobot.org)
145
+
146
+ - [Installation](https://docs.pylabrobot.org/installation.html)
147
+ - [Getting Started](https://docs.pylabrobot.org/basic.html)
148
+ - [Contributing](CONTRIBUTING.md)
149
+ - [API Reference](https://docs.pylabrobot.org/pylabrobot.html)
150
+
151
+ ### Support
152
+
153
+ - [forums.pylabrobot.org](https://forums.pylabrobot.org) for questions and discussions.
154
+ - [GitHub Issues](https://github.com/pylabrobot/pylabrobot/issues) for bug reports and feature requests.
155
+
156
+ ## Citing
157
+
158
+ If you use PyLabRobot in your research, please cite the following:
159
+
160
+ ```bibtex
161
+ @article{WIERENGA2023100111,
162
+ title = {PyLabRobot: An open-source, hardware-agnostic interface for liquid-handling robots and accessories},
163
+ journal = {Device},
164
+ volume = {1},
165
+ number = {4},
166
+ pages = {100111},
167
+ year = {2023},
168
+ issn = {2666-9986},
169
+ doi = {https://doi.org/10.1016/j.device.2023.100111},
170
+ url = {https://www.sciencedirect.com/science/article/pii/S2666998623001709},
171
+ author = {Rick P. Wierenga and Stefan M. Golas and Wilson Ho and Connor W. Coley and Kevin M. Esvelt},
172
+ keywords = {laboratory automation, open source, standardization, liquid-handling robots},
173
+ }
174
+ ```
175
+
176
+ ---
177
+
178
+ **Disclaimer:** PyLabRobot is not officially endorsed or supported by any robot manufacturer. If you use a firmware driver such as the STAR driver provided here, you do so at your own risk. Usage of a firmware driver such as STAR may invalidate your warranty. Please contact us with any questions.
179
+
180
+ _Developed for the Sculpting Evolution Group at the MIT Media Lab_
@@ -0,0 +1,154 @@
1
+ LICENSE
2
+ README.md
3
+ setup.py
4
+ PyLabRobot.egg-info/PKG-INFO
5
+ PyLabRobot.egg-info/SOURCES.txt
6
+ PyLabRobot.egg-info/dependency_links.txt
7
+ PyLabRobot.egg-info/entry_points.txt
8
+ PyLabRobot.egg-info/requires.txt
9
+ PyLabRobot.egg-info/top_level.txt
10
+ pylabrobot/__init__.py
11
+ pylabrobot/__version__.py
12
+ pylabrobot/machine.py
13
+ pylabrobot/serializer.py
14
+ pylabrobot/heaters/__init__.py
15
+ pylabrobot/liquid_handling/__init__.py
16
+ pylabrobot/liquid_handling/errors.py
17
+ pylabrobot/liquid_handling/liquid_handler.py
18
+ pylabrobot/liquid_handling/liquid_handler_tests.py
19
+ pylabrobot/liquid_handling/standard.py
20
+ pylabrobot/liquid_handling/strictness.py
21
+ pylabrobot/liquid_handling/backends/USBBackend.py
22
+ pylabrobot/liquid_handling/backends/__init__.py
23
+ pylabrobot/liquid_handling/backends/backend.py
24
+ pylabrobot/liquid_handling/backends/chatterbox_backend.py
25
+ pylabrobot/liquid_handling/backends/chatterbox_backend_tests.py
26
+ pylabrobot/liquid_handling/backends/http.py
27
+ pylabrobot/liquid_handling/backends/http_tests.py
28
+ pylabrobot/liquid_handling/backends/opentrons_backend.py
29
+ pylabrobot/liquid_handling/backends/opentrons_backend_tests.py
30
+ pylabrobot/liquid_handling/backends/saver_backend.py
31
+ pylabrobot/liquid_handling/backends/serializing_backend.py
32
+ pylabrobot/liquid_handling/backends/serializing_backend_tests.py
33
+ pylabrobot/liquid_handling/backends/websocket.py
34
+ pylabrobot/liquid_handling/backends/websocket_tests.py
35
+ pylabrobot/liquid_handling/backends/hamilton/STAR.py
36
+ pylabrobot/liquid_handling/backends/hamilton/STAR_tests.py
37
+ pylabrobot/liquid_handling/backends/hamilton/VENUS.py
38
+ pylabrobot/liquid_handling/backends/hamilton/__init__.py
39
+ pylabrobot/liquid_handling/backends/hamilton/base.py
40
+ pylabrobot/liquid_handling/backends/hamilton/pump.py
41
+ pylabrobot/liquid_handling/backends/hamilton/tilt_module.py
42
+ pylabrobot/liquid_handling/backends/hamilton/vantage.py
43
+ pylabrobot/liquid_handling/backends/hamilton/vantage_tests.py
44
+ pylabrobot/liquid_handling/backends/tecan/EVO.py
45
+ pylabrobot/liquid_handling/backends/tecan/__init__.py
46
+ pylabrobot/liquid_handling/backends/tecan/errors.py
47
+ pylabrobot/liquid_handling/liquid_classes/__init__.py
48
+ pylabrobot/liquid_handling/liquid_classes/tecan.py
49
+ pylabrobot/liquid_handling/liquid_classes/hamilton/__init__.py
50
+ pylabrobot/liquid_handling/liquid_classes/hamilton/base.py
51
+ pylabrobot/liquid_handling/liquid_classes/hamilton/star.py
52
+ pylabrobot/liquid_handling/liquid_classes/hamilton/vantage.py
53
+ pylabrobot/plate_reading/__init__.py
54
+ pylabrobot/plate_reading/backend.py
55
+ pylabrobot/plate_reading/clario_star.py
56
+ pylabrobot/plate_reading/plate_reader.py
57
+ pylabrobot/plate_reading/plate_reader_tests.py
58
+ pylabrobot/powder_dispensing/__init__.py
59
+ pylabrobot/powder_dispensing/backend.py
60
+ pylabrobot/powder_dispensing/powder_dispenser.py
61
+ pylabrobot/powder_dispensing/powder_dispenser_tests.py
62
+ pylabrobot/pumps/__init__.py
63
+ pylabrobot/pumps/backend.py
64
+ pylabrobot/pumps/pump.py
65
+ pylabrobot/pumps/cole_parmer/__init__.py
66
+ pylabrobot/pumps/cole_parmer/masterflex.py
67
+ pylabrobot/resources/__init__.py
68
+ pylabrobot/resources/carrier.py
69
+ pylabrobot/resources/carrier_tests.py
70
+ pylabrobot/resources/container.py
71
+ pylabrobot/resources/coordinate.py
72
+ pylabrobot/resources/coordinate_tests.py
73
+ pylabrobot/resources/deck.py
74
+ pylabrobot/resources/deck_tests.py
75
+ pylabrobot/resources/errors.py
76
+ pylabrobot/resources/hamilton_parse.py
77
+ pylabrobot/resources/itemized_resource.py
78
+ pylabrobot/resources/itemized_resource_tests.py
79
+ pylabrobot/resources/liquid.py
80
+ pylabrobot/resources/petri_dish.py
81
+ pylabrobot/resources/petri_dish_tests.py
82
+ pylabrobot/resources/plate.py
83
+ pylabrobot/resources/plate_tests.py
84
+ pylabrobot/resources/powder.py
85
+ pylabrobot/resources/resource.py
86
+ pylabrobot/resources/resource_stack.py
87
+ pylabrobot/resources/resource_stack_tests.py
88
+ pylabrobot/resources/resource_tests.py
89
+ pylabrobot/resources/tip.py
90
+ pylabrobot/resources/tip_rack.py
91
+ pylabrobot/resources/tip_tests.py
92
+ pylabrobot/resources/tip_tracker.py
93
+ pylabrobot/resources/tip_tracker_tests.py
94
+ pylabrobot/resources/todo_generic_carrier.py
95
+ pylabrobot/resources/trash.py
96
+ pylabrobot/resources/trough.py
97
+ pylabrobot/resources/volume_functions.py
98
+ pylabrobot/resources/volume_functions_tests.py
99
+ pylabrobot/resources/volume_tracker.py
100
+ pylabrobot/resources/volume_tracker_tests.py
101
+ pylabrobot/resources/well.py
102
+ pylabrobot/resources/well_tests.py
103
+ pylabrobot/resources/azenta/__init__.py
104
+ pylabrobot/resources/azenta/plates.py
105
+ pylabrobot/resources/corning_axygen/__init__.py
106
+ pylabrobot/resources/corning_axygen/plates.py
107
+ pylabrobot/resources/corning_costar/__init__.py
108
+ pylabrobot/resources/corning_costar/plates.py
109
+ pylabrobot/resources/hamilton/__init__.py
110
+ pylabrobot/resources/hamilton/hamilton_deck_tests.py
111
+ pylabrobot/resources/hamilton/hamilton_decks.py
112
+ pylabrobot/resources/hamilton/vantage_decks.py
113
+ pylabrobot/resources/ml_star/__init__.py
114
+ pylabrobot/resources/ml_star/plate_carriers.py
115
+ pylabrobot/resources/ml_star/tip_carriers.py
116
+ pylabrobot/resources/ml_star/tip_creators.py
117
+ pylabrobot/resources/ml_star/tip_racks.py
118
+ pylabrobot/resources/opentrons/__init__.py
119
+ pylabrobot/resources/opentrons/deck.py
120
+ pylabrobot/resources/opentrons/deck_tests.py
121
+ pylabrobot/resources/opentrons/load.py
122
+ pylabrobot/resources/opentrons/load_tests.py
123
+ pylabrobot/resources/opentrons/plates.py
124
+ pylabrobot/resources/opentrons/tip_racks.py
125
+ pylabrobot/resources/porvair/__init__.py
126
+ pylabrobot/resources/porvair/plates.py
127
+ pylabrobot/resources/revvity/__init__.py
128
+ pylabrobot/resources/revvity/plates.py
129
+ pylabrobot/resources/tecan/__init__.py
130
+ pylabrobot/resources/tecan/plate_carriers.py
131
+ pylabrobot/resources/tecan/plates.py
132
+ pylabrobot/resources/tecan/tecan_decks.py
133
+ pylabrobot/resources/tecan/tecan_resource.py
134
+ pylabrobot/resources/tecan/tip_carriers.py
135
+ pylabrobot/resources/tecan/tip_creators.py
136
+ pylabrobot/resources/tecan/tip_racks.py
137
+ pylabrobot/resources/tecan/wash.py
138
+ pylabrobot/resources/thermo_fisher/__init__.py
139
+ pylabrobot/resources/thermo_fisher/troughs.py
140
+ pylabrobot/resources/vwr/__init__.py
141
+ pylabrobot/resources/vwr/troughs.py
142
+ pylabrobot/scales/__init__.py
143
+ pylabrobot/scales/mettler_toledo.py
144
+ pylabrobot/scales/scale.py
145
+ pylabrobot/scales/scale_backend.py
146
+ pylabrobot/utils/__init__.py
147
+ pylabrobot/utils/file_parsing.py
148
+ pylabrobot/utils/list.py
149
+ pylabrobot/utils/list_tests.py
150
+ pylabrobot/utils/positions.py
151
+ pylabrobot/utils/positions_tests.py
152
+ pylabrobot/visualizer/__init__.py
153
+ pylabrobot/visualizer/visualizer.py
154
+ pylabrobot/visualizer/visualizer_tests.py
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ lh-server = pylabrobot.server.liquid_handling_server:main
3
+ plr-gui = pylabrobot.gui.gui:main
@@ -1,52 +1,64 @@
1
+ typing_extensions
1
2
 
2
3
  [all]
4
+ pyusb
5
+ requests
6
+ types-requests
7
+ pylibftdi
8
+ websockets
9
+ opentrons-http-api-client
10
+ opentrons-shared-data
11
+ flask[async]
3
12
  sphinx_book_theme
4
13
  myst_nb
5
14
  sphinx_copybutton
6
- websockets
7
- requests
8
15
  pytest
9
16
  pytest-timeout
10
17
  pylint
11
- opentrons-http-api-client
12
- opentrons-shared-data
18
+ mypy
19
+ responses
13
20
  pyhamilton
14
- flask
15
- wtforms
16
- wtforms_json
17
- pyusb
18
21
 
19
- [docs]
22
+ [dev]
23
+ pyusb
24
+ requests
25
+ types-requests
26
+ pylibftdi
27
+ websockets
28
+ opentrons-http-api-client
29
+ opentrons-shared-data
30
+ flask[async]
20
31
  sphinx_book_theme
21
32
  myst_nb
22
33
  sphinx_copybutton
34
+ pytest
35
+ pytest-timeout
36
+ pylint
37
+ mypy
38
+ responses
39
+
40
+ [fw]
41
+ pyusb
23
42
 
24
43
  [http]
25
44
  requests
45
+ types-requests
26
46
 
27
47
  [opentrons]
28
48
  opentrons-http-api-client
29
49
  opentrons-shared-data
30
50
 
31
- [server]
32
- flask
33
- wtforms
34
- wtforms_json
35
-
36
- [simulation]
37
- websockets
51
+ [plate_reading]
52
+ pylibftdi
38
53
 
39
- [testing]
40
- pytest
41
- pytest-timeout
42
- requests
43
- pylint
44
- websockets
45
- opentrons-http-api-client
46
- opentrons-shared-data
54
+ [server]
55
+ flask[async]
47
56
 
48
57
  [venus]
49
58
  pyhamilton
50
59
 
60
+ [visualizer]
61
+ websockets
62
+
51
63
  [websockets]
52
64
  websockets