Skip to main content

AWS HealthOmics로 Nf-core 워크플로우 마이그레이션 하기

참고문서: https://catalog.us-east-1.prod.workshops.aws/workshops/76d4a4ff-fe6f-436a-a1c2-f7ce44bc5d17/en-US

이 문서를 참고하여 환경을 준비합니다. 여기서는 이 과정은 생략합니다.

프로젝트 셋업

nf-core repository로부터 워크플로우 복제

cd ~
git clone https://github.com/nf-core/scrnaseq --branch 2.7.0 --single-branch

Docker Image Manifest의 생성

cp  ~/amazon-ecr-helper-for-aws-healthomics/lib/lambda/parse-image-uri/public_registry_properties.json namespace.config

inspect_nf.py 를 실행합니다.

python3 amazon-omics-tutorials/utils/scripts/inspect_nf.py \
--output-manifest-file scrnaseq_270_docker_images_manifest.json \
 -n namespace.config \
 --output-config-file omics.config \
 --region <region> \
 ~/scrnaseq/

생성되는 두 개의 출력은 scrnaseq_270_docker_images_manifest.json과 omics.config입니다.

scrnaseq_270_docker_images_manifest.json 파일은 다음과 같은 모습이어야 합니다:

{
    "manifest": [
        "quay.io/biocontainers/bioconductor-alevinqc:1.12.1--r41h9f5acd7_0",
        "quay.io/biocontainers/fastqc:0.12.1--hdfd78af_0",
        "quay.io/biocontainers/gffread:0.12.1--h8b12597_0",
        "quay.io/biocontainers/gffread:0.12.7--hd03093a_1",
        "quay.io/biocontainers/kb-python:0.28.2--pyhdfd78af_2",
        "quay.io/biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:ded3841da0194af2701c780e9b3d653a85d27489-0",
        "quay.io/biocontainers/multiqc:1.21--pyhdfd78af_0",
        "quay.io/biocontainers/p7zip:16.02",
        "quay.io/biocontainers/python:3.9--1",
        "quay.io/biocontainers/scanpy:1.7.2--pyhdfd78af_0",
        "quay.io/biocontainers/simpleaf:0.10.0--h9f5acd7_1",
        "quay.io/biocontainers/star:2.7.10b--h9ee0642_0",
        "quay.io/nf-core/cellranger-arc:2.0.2",
        "quay.io/nf-core/cellranger:8.0.0",
        "quay.io/nf-core/seurat:4.3.0",
        "quay.io/nf-core/ubuntu:20.04",
        "quay.io/nf-core/universc:1.2.5.1",
        "quay.io/quay.io/biocontainers/bioconductor-dropletutils:1.18.0--r42hf17093f_1"
    ]
}

컨테이너 사설화

aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:<region>:<your-account-id>:stateMachine:omx-container-puller \
--input file://scrnaseq_270_docker_images_manifest.json

nf-core project 코드 업데이트

mv omics.config scrnaseq/conf

echo "includeConfig 'conf/omics.config'" >> scrnaseq/nextflow.config 

AWS HealthOmics 워크플로우 만들기

단계1. AWS HealthOmics 파라미터 파일

paramter-descrption.json을 만들어 아래와 같이 저장합니다.

{
    "input": {"description": "Samplesheet with sample locations.",
                "optional": false},
    "protocol" : {"description": "10X Protocol used: 10XV1, 10XV2, 10XV3",
                "optional": false},
    "aligner": {"description": "choice of aligner: alevin, star, kallisto",
            "optional": false},
    "barcode_whitelist": {"description": "Optional whitelist if 10X protocol is not used.",
            "optional": true},
    "gtf": {"description": "S3 path to GTF file",
            "optional": false},
    "fasta": {"description": "S3 path to FASTA file",
            "optional": false}
}

단계2. 워크플로우 스테이징

zip -r scrnaseq-workflow.zip scrnaseq

aws s3 cp scrnaseq-workflow.zip s3://<yourbucket>/workshop/scrnaseq-workflow.zip

aws omics create-workflow \
--name scrnaseq-v1 \
--definition-uri s3://<yourbucket>//workshop/scrnaseq-workflow.zip \
 --parameter-template file://parameter-description.json \
--engine NEXTFLOW

단계3. 워크플로우 생성 확인

aws omics list-workflows --name scrnaseq-v1


워크플로우 테스트하기

입력파일 준비

parameter-description.json에 사용된 것과 동일한 키를 사용하여 입력.json 파일을 새로 만듭니다. 값은 워크플로에서 허용되는 실제 S3 경로 또는 문자열이 됩니다.

{
        "input": "s3://aws-genomics-static-us-east-1/workflow_migration_workshop/nfcore-scrnaseq-v2.3.0/samplesheet-2-0.csv",
        "protocol": "10XV2",
        "aligner": "star",
        "fasta": "s3://aws-genomics-static-us-east-1/workflow_migration_workshop/nfcore-scrnaseq-v2.3.0/GRCm38.p6.genome.chr19.fa",
        "gtf": "s3://aws-genomics-static-us-east-1/workflow_migration_workshop/nfcore-scrnaseq-v2.3.0/gencode.vM19.annotation.chr19.gtf"
}

Policy 준비

(

참고)

워크플로우 실행

aws omics start-run \
  --name scrnaseq_workshop_test_run_1 \
  --role-arn arn:aws:iam::<your-account-id>:role/omics_start_run_role_v1 \
  --workflow-id <your-workflow-id> \
  --parameters file://input.json \
  --output-uri s3://<yourbucket>/output/