def exec_deseq(self): """Execute the **Wedring**'s differential expression stage. :raises: :class:WedringError """ if not self._qt: wedr_report("Calculating differential expression with DESeq.") outfile = path.join(self._o, "diffexpr.txt") errfile = path.join(self._ld, "diffexpr.log") de_cmd_line = "Rscript --vanilla %s %s %s %s %s" % (wedr_which("diffExprStage.R"), self.wedring_diffexpr_parse_options(), self._cnt_table, self._cnd, outfile) de = BioSoft(de_cmd_line, errfile=errfile) if not self._qt: wedr_report("Command line:\n %s" % de.command) de.run() if 0 != de.return_code != -1: raise WedringError(141, "%s exitted with status %d. See log file '%s' for more details." % (de.program_name, de.return_code, de.errfile)) wedr_clean(de.errfile) # TODO Add verification of the DESeq's output with wedr_check_path() # \_ table (OK), graphics wedr_check_path(outfile) if not self._qt: wedr_report("DESeq - Done!")
def run(self): """Execute *bowtie-build*. :raises: :class:WedringError """ if not self.quiet: wedr_report("[%s] Building Bowtie BW index '%s'." % (self._out_pref, self.index)) self.parse_bb_cmd_line() if not self.quiet: wedr_report("[%s] Command line:\n %s" % (self._out_pref, self._bb_cmd)) wedr_prepare_directory(self.out_dir) wedr_prepare_directory(self.log_dir) outfile = path.join(self.log_dir, self._out_pref + "_build.log") bb = BioSoft(command=self._bb_cmd, outfile=outfile) bb.run() if 0 != bb.return_code != -1: raise WedringError(141, "[%s] %s exitted with status %d. See log file '%s' for more details." % (self._out_pref, bb.program_name, bb.return_code, bb.outfile)) wedr_clean(outfile) if not self.quiet: wedr_report("[%s] BW index build - Done!." % self._out_pref)
def exec_samtools(self): """Executor of the SAMtools part of the pipeline. :raises: :class:WedringError """ if self.mapper == "bowtie": if not self.quiet: wedr_report("[%s] Converting SAM file to BAM file." % self._out_pref) sam_in_pref = path.splitext(self.aln_file)[0] bam_out = sam_in_pref + ".bam" errfile = path.join(self.log_dir, self._out_pref + "_view.log") st = BioSoft(command="samtools view -bS -o %s %s.sam" % (bam_out, self._mapper_out), errfile=errfile) if not self.quiet: wedr_report("[%s] Command line:\n %s" % (self._out_pref, st.command)) st.run() if 0 != st.return_code != -1: raise WedringError(141, "[%s] %s exitted with status %d. See log file '%s' for more details." % (self._out_pref, st.program_name, st.return_code, st.errfile)) wedr_clean(st.errfile) wedr_clean(self.aln_file, force=True) self.aln_file = bam_out wedr_check_path(self.aln_file) if not self.quiet: wedr_report("[%s] Sorting BAM file." % self._out_pref) errfile = path.join(self.log_dir, self._out_pref + "_sort.log") st = BioSoft(command = "samtools sort %s %s" % (bam_out, sam_in_pref), errfile =errfile) if not self.quiet: wedr_report("[%s] Command line:\n %s" % (self._out_pref, st.command)) st.run() if 0 != st.return_code != -1: raise WedringError(141, "[%s] %s exitted with status %d. See log file '%s' for more details." % (self._out_pref, st.program_name, st.return_code, st.errfile)) wedr_clean(st.errfile) wedr_check_path(self.aln_file) if not self.quiet: wedr_report("[%s] Indexing BAM file." % self._out_pref) errfile = path.join(self.log_dir, self._out_pref + "_index.log") st = BioSoft(command="samtools index %s" % self.aln_file, errfile=errfile) if not self.quiet: wedr_report("[%s] Command line:\n %s" % (self._out_pref, st.command)) st.run() if 0 != st.return_code != -1: raise WedringError(141, "[%s] %s exitted with status %d. See log file '%s' for more details." % (self._out_pref, st.program_name, st.return_code, st.errfile)) wedr_clean(st.errfile) wedr_check_path(self.aln_file + ".bai")
def exec_bedtools(self): """Executor of the BEDTools part of the pipeline. :raises: :class:WedringError """ cov_out = self.aln_file.replace(".bam", ".cov") errfile = path.join(self.log_dir, self._out_pref + "_coverage.log") bt = BioSoft(command="bedtools coverage -s -abam %s -b %s" % (self.aln_file, self.annot_file), outfile=cov_out, errfile=errfile) if not self.quiet: wedr_report("[%s] Command line:\n %s" % (self._out_pref, bt.command)) bt.run() if 0 != bt.return_code != -1: raise WedringError(141, "[%s] %s exitted with status %d. See log file '%s' for more details." % (self._out_pref, bt.program_name, bt.return_code, bt.errfile)) wedr_clean(bt.errfile) if wedr_check_path(cov_out): self.cov_file = cov_out
def exec_mapping(self): """Executor of the mapping part of the pipeline. :raises: :class:WedringError """ if not self.quiet: wedr_report("[%s] Mapping reads against reference genome." % self._out_pref) self.parse_mapper_cmd_line() if not self.quiet: wedr_report("[%s] Command line:\n %s" % (self._out_pref, self._mapper_cmd)) errfile = path.join(self.log_dir, self._out_pref + "_mapping.log") mp = BioSoft(command=self._mapper_cmd, errfile=errfile) mp.run() if 0 != mp.return_code != -1: raise WedringError(141, "[%s] %s exitted with status %d. See log file '%s' for more details." % (self._out_pref, mp.program_name, mp.return_code, mp.errfile)) wedr_clean(mp.errfile) if not self.quiet: wedr_report("[%s] Mapping - Done!." % self._out_pref)