Orca: Lab Automation Scheduler
[!CAUTION]
이 릴리스를 사용하지 마십시오. v2.3.0은 심각한 버그로 인해 철회되었습니다. 수정된 릴리스가 진행 중입니다.
Orca는 병렬로 실행되는 워크플로우를 위한 실험실 자동화 스케줄러입니다. 이 시스템은 장치들(액체 핸들러 (liquid handlers), 쉐이커 (shakers), 원심분리기 (centrifuges), 실러 (sealers), 플레이트 리더 (plate readers))을 조정하고 실험 기구(labware)를 그 사이로 이동시킵니다. 워크플로우는 일반 Python 코드로 작성되므로, 다른 소스 파일과 마찬가지로 사용자의 레포지토리(repo)에 존재하며 diff 할 수 있습니다.
Features
-
병렬 실험 기구 스레드 (Parallel labware threads) - 여러 개의 실험 기구가 동시에 시스템을 이동합니다.
-
예약 기반 스케줄링 (Reservation-based scheduling) - 장치와 위치는 사용 전에 예약됩니다.
-
리소스 풀 (Resource pools) - 액션(action)이 풀(pool)을 대상으로 지정하고 런타임(runtime)이 사용 가능한 장치를 선택합니다.
-
독립형 메서드 (Standalone methods) - 전체 워크플로우를 실행하거나, 단일 메서드를 독립적으로 실행할 수 있습니다.
-
네 가지 데코레이터 레벨 (Four decorator levels) - @orca.action, @orca.method, @orca.thread, @orca.workflow.
Installation
Orca는 Python 3.10 이상이 필요합니다. GitHub에서 새로운 가상 환경에 설치하십시오:
git clone https://github.com/Cheshire-Labs/orca.git
cd orca
python -m venv .venv
...
pip은 또한 Orca의 드라이버 레이어인 cheshire-drivers를 해당 버전의 Orca가 지정하는 릴리스에서 GitHub로부터 설치합니다. cheshire-drivers는 PyLabRobot의 포크(fork)를 pylabrobot이라는 이름으로 설치하며, 이는 환경에 이미 존재하는 모든 상위(upstream) PyLabRobot을 대체합니다. 이것이 바로 환경이 새로운 환경이어야 하는 이유입니다. cheshire-drivers README에서 포크에 대한 설명을 확인할 수 있습니다.
설치 후 실행하는 첫 번째 Orca 명령어는 Python이 Orca, cheshire-drivers 및 PyLabRobot의 바이트코드를 컴파일하는 동안 최대 30초 동안 아무것도 출력하지 않습니다. 이는 멈춘 것이 아닙니다. 그 이후의 모든 실행은 몇 초 만에 시작됩니다.
PyPI의 cheshire-orca 패키지는 이전 버전인 0.x 릴리스이며, 현재 사용하는 것이 아닙니다. [dev] 추가 기능은 테스트 도구(pytest, black)를 포함합니다. 테스트를 실행하려면, orca 옆에 orca-client도 클론해야 합니다. CONTRIBUTING을 참조하십시오.
예시 (Example)
**액션(action)**은 한 장치에서 수행되는 하나의 단계입니다. **메서드(method)**는 액션의 시퀀스입니다. **실험 기구 스레드(labware thread)**는 시스템을 통과하는 하나의 실험 기구입니다. **워크플로우(workflow)**는 이러한 스레드를 조합합니다. 이 예시는 examples/hamilton_smc/workflows/hamilton_smc_assay.py에서 발췌되었습니다. plate_1은 해당 파일에 선언된 PlateTemplate이며, shaker_collection은 토폴로지(topology)로부터 가져온 장치 풀입니다:
@orca.action(device=shaker_collection, inputs=[plate_1])
async def shake_2hrs(ctx: ActionContext):
await ctx.device().shake(duration=7200, speed=875)
...
python -m examples.hamilton_smc.hamilton_smc_example를 사용하여 전체 분석을 시뮬레이션으로 실행하십시오.
명령줄 (Command line)
orca 명령어는 REST를 통해 로컬 데몬(daemon)을 구동합니다. 이 명령어들은 저장소 루트 디렉토리에서 실행해야 합니다. 해당 데몬은 orca start가 실행된 디렉토리의 토폴로지 및 워크플로우 모듈을 가져옵니다:
orca start
orca topology mount examples.hamilton_smc.topology:build_topology --sim
orca workflow load examples.hamilton_smc.workflows.hamilton_smc_assay:build_workflow
...
모든 orca run에는 --run-mode가 필요합니다. PURE_SIM은 모든 장치를 시뮬레이션으로 실행합니다. 다른 명령어 목록은 orca --help를 사용하십시오.
문서 (Documentation)
전체 문서는 https://cheshirelabs.io/docs/orca/intro에 있으며, 빠른 시작 가이드, SDK 참고 자료 및 지원되는 장치 정보가 포함되어 있습니다.
예시 (Examples)
이들 중 어느 것도 하드웨어가 필요하지 않습니다. 각각 독립적으로 실행을 완료할 수 있습니다. 저장소 루트 디렉토리에서 실행하십시오.
| 예시 | 명령어 |
|---|
| Hamilton SMC 분석: ML STAR 페어에서 인라인 PyLabRobot 피펫팅을 사용한 면역분석(immunoassay) | python -m examples.hamilton_smc.hamilton_smc_example |
| ... | |
감사의 글 (Acknowledgements)
Orca는 PyLabRobot 커뮤니티의 작업에 기반을 두고 있습니다. 연구에서 Orca를 사용한다면, 다음처럼 PyLabRobot을 언급해 주십시오:
@article{WIERENGA2023100111,
title = {PyLabRobot: An open-source, hardware-agnostic interface for liquid-handling robots and accessories},
journal = {Device},
...
헌정 (Dedication)
Orca는 저의 어머니인 Joanne Hull Salmi 님의 추모를 기립니다. DEDICATION.md를 참조하십시오.
보안 (Security)
이 릴리스는 내부 사용 목적으로만 제작되었습니다: 사용자가 통제하는 실험실 장비 또는 내부 네트워크에서, 신뢰할 수 있는 사람이 운영해야 합니다.
데몬(daemon)은 인증 기능이 없습니다. orca start는 127.0.0.1에 바인딩되며, 해당 데몬의 모든 경로는 그 컴퓨터의 모든 프로세스에 열려 있습니다. 워크플로우와 메서드는 데몬이 가져와 실행하는 Python 소스입니다. 반드시 운영자들만 사용하는 장비에서 실행하고, 터널(tunnel), 프록시(proxy) 또는 컨테이너 포트 맵을 통해 포트를 노출하지 마십시오. SECURITY.md에 상세 내용과 취약점 보고 주소가 나와 있습니다.
기여 (Contributing)
가이드라인은 CONTRIBUTING를 참조하십시오.
기여자들은 기여에 대한 저작권을 Cheshire Labs에 양도하는 Cheshire Labs Contributor Agreement에 서명해야 합니다.
라이선스 (License)
2.0.0 버전부터는 서버 측 공개 라이선스 v1 (Server Side Public License v1, SSPL-1.0)에 따라 소스 코드가 이용 가능합니다. 1.0.0 버전을 포함한 이전 릴리스들은 AGPL-3.0이었습니다.
NOTICE 파일에 저작권 보유자가 명시되어 있습니다.
Cheshire Labs 문의처