rna-seq pipeline runs perfectly except RSEQC read_...
# rnaseq
m
rna-seq pipeline runs perfectly except RSEQC read_duplication.py has an absurd error. it says it can't find a bam.bai index file but the index clearly exists in the results/star_salmon directory where the BAM file is. exit 137 means out of memory, but i have allocated 120GB of mem for a single ordinary RNA-seq. could RSEQC be exploding memory because this sample happens to be very duplicated? is there a way to prevent this from happening?
Copy code
Caused by:
  Process `NFCORE_RNASEQ:RNASEQ:BAM_RSEQC:RSEQC_READDUPLICATION (tumor_rnaseq)` terminated with an error exit status (137)
Command executed:

  read_duplication.py \
      -i tumor_rnaseq.markdup.sorted.bam \
      -o tumor_rnaseq \
  
  
  cat <<-END_VERSIONS > versions.yml
  "NFCORE_RNASEQ:RNASEQ:BAM_RSEQC:RSEQC_READDUPLICATION":
      rseqc: $(read_duplication.py --version | sed -e "s/read_duplication.py //g")
  END_VERSIONS

Command exit status:
  137

Command output:
  (empty)

Command error:
  [E::idx_find_and_load] Could not retrieve index file for 'tumor_rnaseq.markdup.sorted.bam'
  .command.sh: line 5:    62 Killed                  read_duplication.py -i tumor_rnaseq.markdup.sorted.bam -o sl_mm_tumor_rn
aseq

Work dir:
  /x/rna-seq/work/88/f72abf62b05eea6b870deeb818f743
t
I don't know about RSeQC, but high duplicates (especially if concentrated on one or a few loci, like with high rRNA) can cause problems for many tools, including STAR and DupRadar. I think your basic choices are 1) find more memory (and ideally make a config file increasing the allocation for the failing process), or 2) live without the RSeQC results, at least for the more problematic samples (QC is important, but there are other tools, and it does not influence the creation of the actual results, like counts tables, etc.). For 2) there may be a
--skip_*
parameter (too lazy to look), but my preference would be to run it wherever it can and live with failure for those samples where it can't. To do that, make a config file for the process (using
withName:
) and set
errorStrategy = 'ignore'
.