littlebot
Published on 2025-04-17 / 0 Visits
0

【源码】基于Kubeflow和Python的单细胞数据分析管道

项目简介

本项目基于Kubeflow和Python构建单细胞数据分析管道,以Docker为基础组件。借助Kubeflow Pipelines(KFP)框架,可自动化执行CellRanger计数操作,对单细胞测序数据进行处理和分析。

项目的主要特性和功能

  1. 自动化执行:利用Kubeflow Pipelines实现CellRanger计数操作的自动化流程,提升分析效率。
  2. 容器化运行:使用Docker镜像封装运行环境,确保不同环境下分析结果的一致性。
  3. 参数化配置:支持通过参数灵活配置FASTQ文件目录、样本名称、转录组路径和输出目录等。
  4. 资源管理:可在Kubernetes集群中运行,合理分配CPU和内存资源。

安装使用步骤

前提条件

假设用户已下载本项目的源码文件,且已具备以下环境: - 安装好 k3d 作为Kubernetes基础环境。 - 准备好相关的Docker镜像,如 vlatitude/k3d-gpu/rancher/k3s:v1.26.4-k3s1-cuda 等。

具体步骤

  1. 创建Kubernetes集群 bash k3d cluster create "kubeflow" \ --image "vlatitude/k3d-gpu/rancher/k3s:v1.26.4-k3s1-cuda" \ --gpus all
  2. 安装NVIDIA GPU支持(可选) bash 或者使用以下命令进行测试: ```bash cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: restartPolicy: Never containers:
    • name: cuda-container image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2 resources: limits: nvidia.com/gpu: 1 # requesting 1 GPU tolerations:
  3. key: nvidia.com/gpu operator: Exists effect: NoSchedule EOF ```
  4. 部署Kubeflow bash cd manifests git checkout v1.7.0 while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 20; done 等待所有Pod成功运行。
  5. 启动Kubeflow bash kubectl port-forward svc/istio-ingressgateway -n istio-system 12345:80
  6. 运行CellRanger分析管道 首先,编译工作流生成YAML文件: ```python import kfp from kfp import dsl

def cellranger_count_op(fastq_dir, sample_name, transcriptome, output_dir): volume = dsl.PipelineVolume(pvc="hostpath-pvc") return dsl.ContainerOp( name='CellRanger Count', image='nfcore/cellranger:7.2.0', command=['cellranger', 'count'], arguments=[ "--id={}".format(sample_name), "--transcriptome={}".format(transcriptome), "--fastqs={}".format(fastq_dir), "--localcores=8", "--localmem=64", "--output-dir={}".format(output_dir) ], pvolumes={"/home/sunhao": volume} )

@dsl.pipeline( name='CellRanger Analysis Pipeline', description='Pipeline to process single-cell data using CellRanger' ) def cellranger_pipeline(fastq_dir: str, sample_name: str, transcriptome: str, output_dir: str): cellranger_count_task = cellranger_count_op(fastq_dir, sample_name, transcriptome, output_dir)

if name == 'main': kfp.compiler.Compiler().compile(cellranger_pipeline, 'cellranger_pipeline.yaml') 然后,在Kubeflow中运行该管道:bash kfp run --experiment my-experiment --pipeline-file cellranger_pipeline.yaml \ --parameter fastq_dir=/home/localpath \ --parameter sample_name=sample123 \ --parameter transcriptome=/home/localpath \ --parameter output_dir=/home/localpath ```

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】