I. Common Workflow Language (CWL)
1. Giới thiệu tổng quan
CWL là một ngôn ngữ được xây dựng để định nghĩa ra các workflow (luồng thực thi) một cách đơn giản, hiệu quả và nhanh chóng. Mục tiêu của CWL là làm cho các workflow được định nghĩa theo một ngôn ngữ thống nhất, đầy đủ thông tin, có thể thực hiện trên mọi hệ thống tương thích với CWL. Các đối tượng được CWL hướng tới là những ngành yêu cầu xử lý dữ liệu chuyên sâu như Tin sinh, Xử lý ảnh y tế, Học máy, vật lý, thiên văn học,….
Hiện nay, CWL được ứng dụng trong nhiều dự án, tổ chức lớn trên thực tế. Ví dụ như trong lĩnh vực Tin sinh thì có:
Hoặc trong các lĩnh vực khác như:
- CERN: Tổ chức nghiên cứu về hạt nhân Châu Âu
- Netherlands eScience Cente: Trung tâm nghiên cứu và phát triển phần mềm quốc gia Hà Lan
Để tìm hiểu thêm về CWL, mọi người có thể tham khảo tại:
- Trang chủ của CWL: https://www.commonwl.org/
- Github: https://github.com/common-workflow-language/common-workflow-language
2. Một số tính năng đặc biệt của CWL
CWL cho phép định nghĩa trong workflow các yêu cầu mà hệ thống thực thi phải đáp ứng như:
- Requirements: yêu cầu môi trường thực thi phải hỗ trợ như Docker, Javascript .
- Nested Workflows: cho phép lồng các workflow để tạo thành một workflow mới.
- Conditional workflow: Tùy chọn chạy các bước dựa vào các điều kiện đặt sẵn.
- Scatter workflow: cho phép chạy một bước hoặc workflow nhiều lần trên một danh sách các giá trị của biến đầu vào.
- Software package requirement: yêu cầu môi trường thực thi phải có những phần mềm, phiên bản tương ứng.
- Runtime environment variable: Lấy giá trị từ các biến môi trường làm đầu vào cho các bước chạy.
3. Cấu trúc của CWL
CWL có thể được định nghĩa thông qua 2 kiểu biểu diễn là JSON và YAML.
Cấu trúc CWL về cơ bản được chia ra làm 3 phần chính:
- CommandLineTool: Chỉ một bước trong Workflow, thường đại diện cho 1 phần mềm (tool) tính toán.
- Workflow: Dùng để mô tả một luồng thực thi, có thể bao gồm nhiều CommandLineTool với các đầu vào/đầu ra được liên kết với nhau.
- Input: File định nghĩa các dữ liệu đầu vào cho Workflow.
Sau đây là ví dụ cơ bản về CWL, để tìm hiểu sâu hơn về các tính năng của CWL, mọi người có thể tham khảo:
- Hướng dẫn cơ bản về CWL: https://www.commonwl.org/user_guide
- Mô tả đầy đủ của CWL v1.2: https://www.commonwl.org/v1.2/CommandLineTool.html
3.1. CommandLineTool
Đây là một file CWL cơ bản, và đang được sử dụng cho bước QC_FastQ trong hệ thống genome analysis:
Có thể dễ dàng nhận thấy một file CommandLineTool gồm 6 thành phần chính:
- Mô tả các đặc điểm của file
class
: Loại file CWL
cwlVersion
: Phiên bản CWL sử dụng
id
: định danh độc nhất của bước
- Yêu cầu để thực thi file:
requirements
DockerRequirement
: Địa chỉ để lấy Docker image
ResourceRequirement
: Yêu cầu về tài nguyên hệ thống
- Đầu vào của CommandLineTool:
inputs
- Đầu ra của CommandLineTool (Dùng pattern để định nghĩa các dữ liệu đưa vào biến đầu ra):
outputs
- Các tham số của CommandLineTool:
arguments
position
: Vị trí để sắp xếp nếu có nhiều tham số
valueFrom
: Chỉ cách lấy dữ liệu vào tham số
- Command để khởi chạy:
baseCommand
3.2. Workflow
Các phần của Workflow cũng khá giống với CommandLineTool khi chung các phần:
- Mô tả đặc điểm của file (
class
,cwlVersion
,id
) - :
inputs
- Các bước trong workflow
- Tên của bước:
QCFastq
,Alignement
- Địa chỉ file:
run
- Ánh xạ đầu vào của workflow với CommandLineTool:
in
(Có thể ánh xạ tới đầu ra của bước trước)
- Định nghĩa đầu ra của CommandLineTool
- Tên của bước:
- Đầu ra của workflow:
outputs
2.3. File định nghĩa các biến
# FILENAME: input.yml
input_fastq1:
- /home/ubuntu/input/RB1_1.fastq
input_fastq2:
- /home/ubuntu/input/RB1_2.fastq
File biến đầu vào chỉ gán dữ liệu cho biến đầu vào của workflow.
II. Ứng dụng của CWL trong hệ thống phân tích Genome
1. Mục đích
CWL trong hệ thống phân tích genome được dùng để định nghĩa các workflow với mục tiêu:
- Đơn giản hóa công việc cho người nghiên cứu, người tạo workflow.
- Phù hợp với các tiêu chuẩn chung.
- Dễ dàng tích hợp với các công cụ khác.
- Dễ dàng tái thực hiện các phân tích trên một nền tảng khác tương thích với CWL.
Hệ thống hiện tại đang được triển khai trên: https://genome.vinbigdata.org/
- Để xem demo về cách thức thực hiện, truy cập tại: https://genome.vinbigdata.org/workflow
- Với những người được cấp quyền, có thể tiến hành chạy workflow tại: https://genome.vinbigdata.org/analysis#
- Email vingen@vinbigdata.org để được cấp quyền chạy phân tích.
2. Ứng dụng
Hiện tại trong hệ thống Analysis, một Workflow CWL được biểu diễn như một đồ thị có hướng không chu trình (DAG – Directed acyclic graph):
- Mỗi CommandLineTool sẽ được coi là một nút trong đồ thị
- Hướng của các nút biểu diễn phụ thuộc dữ liệu trong workflow
- Lưu ý: 2 nút bigbang và ragnarok là 2 nút ảo, không nằm trong Workflow, được tạo ra nhằm định nghĩa điểm bắt đầu và kết thúc của DAG.
Theo hình ảnh trên, có một vài ưu điểm ta có thể nhận ra ngay đó là:
- Xác định được sự phụ thuộc của các nút, từ đó giúp tối ưu việc lập lịch chạy một quy trình
- Tự động ánh xạ đầu ra và đầu vào của các nút
- Sắp xếp các nút chạy song song: qcfastq, fastqtobams, alignmentreads (Mỗi nút này có thể được triển khai trên 1 máy riêng để tăng tốc độ xử lý của quy trình)
Bên cạnh đó, áp dụng các tính năng của CWL cũng giúp cho việc xây dựng và quản lý các quy trình được nhẹ nhàng hơn cho các nhà nghiên cứu, ví dụ:
- Có thể định nghĩa sẵn các nút và người nghiên cứu chỉ cần sắp xếp và điều chỉnh các nút chứ không cần phải viết lại từ đầu
- Giới hạn được tài nguyên phần cứng yêu cầu tránh việc lãng phí hoặc thiếu hụt tài nguyên
- Chia nhỏ một nút thành các nút nhỏ hơn có thể chạy song song để tăng thời gian tính toán (Tính năng scatter)
- Tiền kiểm tra dữ liệu đầu vào, đầu ra theo các ràng buộc cho trước, tránh tốn thời gian thực thi cũng như đảm bảo tính an toàn của hệ thống
- Chạy các bước xử lý dữ liệu thô như đổi tên file, loại bỏ các file thừa, …
III. Kết luận
Việc sử dụng CWL trong hệ thống tự động phân tích nhằm mục đích đơn giản hóa cho người nghiên cứu, phù hợp với tiêu chuẩn chung, cùng với đó là khả năng dễ dàng tích hợp với các công cụ có sẵn. Tuy nhiên để cài đặt toàn bộ các đặc điểm kỹ thuật của CWL cũng như ứng dụng một cách tối ưu nhất vẫn yêu cầu nhiều thời gian và công sức. Cùng với đó, việc phát triển bằng CWL cũng yêu cầu những người nghiên cứu cần phải học thêm một tiêu chuẩn mới, từng bước chuyển đổi và kiểm thử để đạt được kết quả tốt nhất.
IV. Tài liệu tham khảo
- https://www.commonwl.org/
- https://www.commonwl.org/user_guide/
- https://genome.vinbigdata.org/analysis#
Hướng dẫn: Đỗ Ngọc Tuấn
Tác giả: Thành Phan Phú