args['trimRead2'] = os.path.join(args['fastqSampleDir'], args['name'] + '_trim_R2.fastq.gz') args['trimLog'] = os.path.join(args['fastqSampleDir'], args['name'] + '_trim.log') args['qcLog'] = os.path.join(args['fastqSampleDir'], args['name'] + '_qc.log') # Generate commands to process single-end FASTQ files if args['--singleend']: # Create trim command trimReadsCommand = fastqTrim.cutadaptTrim(readIn=args['read1'], readOut=args['trimRead1'], path=paths['cutadapt'], length=args['--minlength'], quality=args['--trimqual']) # Create QC command fastqcCommand = fastqQC.fastQC(inFile=args['trimRead1'], outDir=args['fastqSampleDir'], path=paths['fastqc']) # Empty read2 file args['trimRead2'] = None # Generate commands to process paired-end FASTQ files else: # Create trim command trimReadsCommand = fastqTrim.cutadaptTrimPaired(read1In=args['read1'], read2In=args['read2'], read1Out=args['trimRead1'], read2Out=args['trimRead2'], path=paths['cutadapt'], length=args['--minlength'], quality=args['--trimqual']) # Generate QC command read1Fastqc = fastqQC.fastQC(inFile=args['trimRead1'],
args['qcLog'] = os.path.join(args['fastqSampleDir'], args['name'] + '_qc.log') # Generate commands to process single-end FASTQ files if args['--singleend']: # Create trim command trimReadsCommand = fastqTrim.cutadaptTrim( readIn = args['read1'], readOut = args['trimRead1'], path = paths['cutadapt'], length = args['--minlength'], quality = args['--trimqual'] ) # Create QC command fastqcCommand = fastqQC.fastQC( inFile = args['trimRead1'], outDir = args['fastqSampleDir'], path = paths['fastqc'] ) # Empty read2 file args['trimRead2'] = None # Generate commands to process paired-end FASTQ files else: # Create trim command trimReadsCommand = fastqTrim.cutadaptTrimPaired( read1In = args['read1'], read2In = args['read2'], read1Out = args['trimRead1'], read2Out = args['trimRead2'], path = paths['cutadapt'], length = args['--minlength'], quality = args['--trimqual']
############################################################################### ## Generate commands to perform fastqc ############################################################################### # Generate log file name args['qcLog'] = os.path.join(args['fastqSampleDir'], args['name'] + '_fastqc.log') # Create fastqc command fastqcCommand = [] for fastq in (args['trimRead1'], args['trimRead2']): if fastq is None: continue fastqcCommand.append( fastqQC.fastQC( inFile = fastq, outDir = args['fastqSampleDir'], path = pmDict[('fastqc', 'path')] ) ) fastqcCommand = '; '.join(fastqcCommand) # Submit FASTQC commands fastqcJobID = slurmJobs.add( command = fastqcCommand, stdout = args['qcLog'], stderr = args['qcLog'], depend = [trimReadsJobID], modules = pmDict[('fastqc', 'modules')] ) ############################################################################### ## Generate RSEM Transcript alignment command
read2Out=trim2, quality=0, adapter=args['--trim'], length=25, path=pmDict[('cutadapt', 'path')]) trimJobID = slurmJobs.add(trimCommand, processors=1, memory=6, stdout=logFile, stderr=logFile, modules=pmDict[('cutadapt', 'modules')]) trimJobList.append(trimJobID) # Create fastqc command qcLog = args['<logprefix>'] + '.fastqc{}.log'.format(count) qcCommand = fastqQC.fastQC(inFile=trim1, outDir=args['<logfolder>'], path=pmDict[('fastqc', 'path')]) if trim2: qcCommand += ' && {}'.format( fastqQC.fastQC(inFile=trim2, outDir=args['<logfolder>'], path=pmDict[('fastqc', 'path')])) qcJobID = slurmJobs.add(qcCommand, processors=1, memory=6, stdout=qcLog, stderr=qcLog, modules=pmDict[('fastqc', 'modules')], depend=[trimJobID]) qcJobList.append(qcJobID) # Switch input file names
moabJobs = moab.moabJobs() # Create trim command and add to job dictionary trimCommand = fastqTrim.cutadaptTrimPaired(read1In=args['read1'], read2In=args['read2'], read1Out=args['trmRd1'], read2Out=args['trmRd2'], path=paths['cutadapt'], length=25, quality=20, adapter='CTGTCTCTTATACACATCT') trimCommandID = moabJobs.add(trimCommand, stdout=args['trmLog'], stderr=args['trmLog']) # Generate QC commands read1Fastqc = fastqQC.fastQC(inFile=args['trmRd1'], outDir=args['smpFsq'], path=paths['fastqc']) read2Fastqc = fastqQC.fastQC(inFile=args['trmRd2'], outDir=args['smpFsq'], path=paths['fastqc']) # Combine FASTQ QC command and add to job dictionary fastqcCommand = '%s && %s' % (read1Fastqc, read2Fastqc) fastqcCommandID = moabJobs.add(fastqcCommand, stdout=args['fqcLog'], stderr=args['fqcLog'], dependency=[trimCommandID]) # Generate command to perform alignment and add to job dictionary alignCommand = fastqAlign.bowtie2Align(index=args['<bwt2index>'], outFile=args['alnBam'], read1=args['read1'], read2=args['read2'],