예제 #1
0
파일: manager.py 프로젝트: rcovre/Wedring
    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!")
예제 #2
0
    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)
예제 #3
0
파일: mapstage.py 프로젝트: rcovre/Wedring
    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")
예제 #4
0
파일: mapstage.py 프로젝트: rcovre/Wedring
    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
예제 #5
0
파일: mapstage.py 프로젝트: rcovre/Wedring
    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)