From the Cell Ranger manual:
Cell Ranger DNA is a set of analysis pipelines that process Chromium single cell DNA sequencing output to align reads, identify copy number variation (CNV), and compare heterogeneity among cells.
- Module Name: cellranger-dna (see the modules page for more information)
- cellranger-dna can operate in local mode or
cluster mode. In both cases, the local part of the job will use
multiple CPUs. Users have to specify the number of allocated CPUs and amount of memory
with
--localcores=# --localmem=#
to cellranger-dna. - cellranger-dna may attempt to start more processes or open more files than the default limits on our compute nodes allow. If you encounter errors or strange results, you may have to raise these limits. See below for more deails.
- Reference data can be found in /fdb/cellranger-dna
- Test data can be found in
$CELLRANGER_DNA_TEST_DATA
Allocate an interactive session and run the program. Sample session:
Copy the bcl format test data and run the demux pipeline
[user@biowulf]$ sinteractive --cpus-per-task=6 --mem=35g salloc.exe: Pending job allocation 46116226 salloc.exe: job 46116226 queued and waiting for resources salloc.exe: job 46116226 has been allocated resources salloc.exe: Granted job allocation 46116226 salloc.exe: Waiting for resource configuration salloc.exe: Nodes cn3144 are ready for job [user@cn3144 ~]$ module load cellranger-dna [user@cn3144 ~]$ cp $CELLRANGER_DNA_TEST_DATA/* . [user@cn3144 ~]$ tar -xzf cellranger-dna-tiny-bcl-1.0.0.tar.gz [user@cn3144 ~]$ cellranger-dna mkfastq --id=tiny-bcl \ --run=cellranger-dna-tiny-bcl-1.0.0 \ --samplesheet=cellranger-dna-tiny-bcl-samplesheet-1.0.0.csv \ --localcores=$SLURM_CPUS_PER_TASK \ --localmem=34 cellranger-dna mkfastq (1.0.0) Copyright (c) 2018 10x Genomics, Inc. All rights reserved. ------------------------------------------------------------------------------- Martian Runtime - '1.0.0-v3.0.0' Serving UI at http://cn3124:33386?auth=TmrcT1r4nSvCdkma9qcqMPOBZTnNXORcOET2gZhFFvE Running preflight checks (please wait)... Checking run folder... Checking RunInfo.xml... Checking system environment... Checking barcode whitelist... Checking read specification... Checking samplesheet specs... Checking for dual index flowcell... 2019-03-20 11:04:03 [runtime] (ready) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.PREPARE_SAMPLESHEET 2019-03-20 11:04:03 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.PREPARE_SAMPLESHEET.fork0.chnk0.main 2019-03-20 11:04:06 [runtime] (chunks_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.PREPARE_SAMPLESHEET 2019-03-20 11:04:06 [runtime] (ready) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET 2019-03-20 11:04:06 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET.fork0.split 2019-03-20 11:04:09 [runtime] (split_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET 2019-03-20 11:04:09 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET.fork0.chnk0.main 2019-03-20 11:04:39 [runtime] (chunks_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET 2019-03-20 11:04:39 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET.fork0.join 2019-03-20 11:04:42 [runtime] (join_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.BCL2FASTQ_WITH_SAMPLESHEET 2019-03-20 11:04:42 [runtime] (ready) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MAKE_QC_SUMMARY 2019-03-20 11:04:42 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MAKE_QC_SUMMARY.fork0.split 2019-03-20 11:04:45 [runtime] (split_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MAKE_QC_SUMMARY 2019-03-20 11:04:45 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MAKE_QC_SUMMARY.fork0.join 2019-03-20 11:04:48 [runtime] (join_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MAKE_QC_SUMMARY 2019-03-20 11:04:49 [runtime] (ready) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE 2019-03-20 11:04:49 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE.fork0.split 2019-03-20 11:04:52 [runtime] (split_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE 2019-03-20 11:04:52 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE.fork0.chnk0.main 2019-03-20 11:04:58 [runtime] (chunks_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE 2019-03-20 11:04:58 [runtime] (run:local) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE.fork0.join 2019-03-20 11:05:01 [runtime] (join_complete) ID.tiny-bcl.MAKE_FASTQS_CS.MAKE_FASTQS.MERGE_FASTQS_BY_LANE_SAMPLE Outputs: - Run QC metrics: null - FASTQ output folder: /data/teacher/tiny-bcl/outs/fastq_path - Interop output folder: /data/teacher/tiny-bcl/outs/interop_path - Input samplesheet: /data/teacher/tiny-bcl/outs/input_samplesheet.csv Waiting 6 seconds for UI to do final refresh. Pipestance completed successfully! Saving pipestance info to tiny-bcl/tiny-bcl.mri.tgz
Note that it is necessary to specify
--localcores
and --localmem
.
cellranger-dna may start an unreasonable number of processes or open too many files. If you encounter errors that include
... self.pid = os.fork() OSError: [Errno 11] Resource temporarily unavailable
or see unexpected results despite specifying --localcores
and
--localmem
, you may have to raise the limit on the number of
processes and/or open files allowed in your batch script:
[user@cn3144 ~]$ ulimit -u 10240 -n 16384 [user@cn3144 ~]$ cellranger-dna mkfastq --id=tiny-bcl \ --run=cellranger-dna-tiny-bcl-1.0.0 \ --samplesheet=cellranger-dna-tiny-bcl-samplesheet-1.0.0.csv \ --localcores=$SLURM_CPUS_PER_TASK \ --localmem=34
The same job could also be run in cluster mode where pipeline tasks are submitted as batch jobs. This can be done by setting jobmode to slurm and limiting the max. number of concurrent jobs:
[user@cn3144 ~]$ cellranger-dna --id=tiny-bcl \ --run=cellranger-dna-tiny-bcl-1.0.0 \ --samplesheet=cellranger-dna-tiny-bcl-samplesheet-1.0.0.csv \ --localcores=$SLURM_CPUS_PER_TASK \ --localmem=34 \ --jobmode=slurm --maxjobs=10
Don't forget to close the interactive session when done
[user@cn3144 ~]$ exit salloc.exe: Relinquishing job allocation 46116226 [user@biowulf ~]$
Though in the case of this small example this actually results in a longer overall runtime. Even when running in cluster mode, please run the main pipeline in an sinteractive session or as a batch job itself.
Create a batch input file (e.g. cellranger-dna.sh), which uses the input file 'cellranger-dna.in'. For example:
#! /bin/bash module load cellranger-dna || exit 1 ## uncomment the following line if encountering 'resource unavailable' errors ## despite using --localcores and --localmem # ulimit -u 4096 cellranger-dna mkfastq --id=tiny-bcl --run=cellranger-dna-tiny-bcl-1.0.0 \ --samplesheet=cellranger-dna-tiny-bcl-samplesheet-1.0.0.csv \ --localcores=$SLURM_CPUS_PER_TASK \ --localmem=34
Again, please remember to include --localcores
and --localmem
.
Submit this job using the Slurm sbatch command.
sbatch --cpus-per-task=12 --mem=35g cellranger-dna.sh
Create a swarmfile (e.g. cellranger-dna.swarm). For example:
cellranger-dna mkfastq --run=./run1 --localcores=$SLURM_CPUS_PER_TASK --localmem=34 cellranger-dna mkfastq --run=./run2 --localcores=$SLURM_CPUS_PER_TASK --localmem=34 cellranger-dna mkfastq --run=./run3 --localcores=$SLURM_CPUS_PER_TASK --localmem=34
Submit this job using the swarm command.
swarm -f cellranger-dna.swarm -g 35 -t 12 --module cellranger-dnawhere
-g # | Number of Gigabytes of memory required for each process (1 line in the swarm command file) |
-t # | Number of threads/CPUs required for each process (1 line in the swarm command file). |
--module cellranger-dna | Loads the cellranger-dna module for each subjob in the swarm |