This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Rsubread align maximum nthreads

Hi Experts, I am using Rsubread align using following comand-

align  (index="my_index",
           readfile1 = "SRR123456_1.fastq" ,readfile2= "SRR123456_2.fastq", 
           type="rna",input_format = "FASTQ",
           minFragLength=35,maxFragLength=151,useAnnotation="TRUE", 
           nthreads=64,
           annot.ext = "my_annotation.gtf.gz",
           isGTF = "TRUE", 
           sortReadsByCoordinates = "TRUE", output_format = "BAM")

here i have asigned 64 threads but in console, i see only 40 threads, I dont know why ? can you guys please explain. All i want to have fast alignment using all my threads. The cpu has - 12 cores which goes to 24 threads, but i was playing around nthreads parameter of align and came up this is the max number that it allows, again i dont know why/how ?

    ==========     _____ _    _ ____  _____  ______          _____  
    =====         / ____| |  | |  _ \|  __ \|  ____|   /\   |  __ \ 
      =====      | (___ | |  | | |_) | |__) | |__     /  \  | |  | |
        ====      \___ \| |  | |  _ <|  _  /|  __|   / /\ \ | |  | |
          ====    ____) | |__| | |_) | | \ \| |____ / ____ \| |__| |
    ==========   |_____/ \____/|____/|_|  \_\______/_/    \_\_____/
   Rsubread 2.6.4

//================================= setting ==================================\\
||                                                                            ||
|| Function      : Read alignment (RNA-Seq)                                   ||
|| Input file 1  : SRR123456_1.fastq                                          ||
|| Input file 2  : SRR123456_2.fastq                                          ||
|| Output file   : SRR123456_1.fastq.subread.BAM (BAM), Sorted                ||
|| Index name    : my_index                                                   ||
||                                                                            ||
||                    ------------------------------------                    ||
||                                                                            ||
||                               Threads : 40                                 ||
||                          Phred offset : 33                                 ||
||               # of extracted subreads : 10                                 ||
||                        Min read1 vote : 3                                  ||
||                        Min read2 vote : 1                                  ||
||                     Max fragment size : 151                                ||
||                     Min fragment size : 35                                 ||
||                        Max mismatches : 3                                  ||
||                      Max indel length : 5                                  ||
||            Report multi-mapping reads : yes                                ||
|| Max alignments per multi-mapping read : 1                                  ||
||                           Annotations : GCF_000000000.1_ASM0000v1_geno ... ||
||                                                                            ||
\\============================================================================//
nthreads align rsubread

Gordon Smyth (one of the authors of Subread package) participates here and will confirm if subread is hardcoded to a max thread limit of 40. There may be a reason for that.

1 answer

From the source code of Rsubread v2.8.1 (available from Bioconductor), line 65 of subread.h

#define MAX_THREADS 40

Log in to answer this question.