def run_statements(self, stmnts, **kwargs): stmnts = [x for x in stmnts if x] filename, main_statement, post_statement = P.join_statements( stmnts, infile=None) stmnt = " ; ".join([x for x in [main_statement, post_statement] if x]) job_threads1, job_threads2 = 1, 1 if "--num_threads" in stmnt: try: job_threads1 = max([ int(x) for x in re.search("--num_threads\s*(\d+)", stmnt).groups() ]) except AttributeError: pass if "--num_cpu_threads_per_data" in stmnt: try: job_threads2 = max([ int(x) for x in re.search( "--num_cpu_threads_per_data_thread\s*(\d+)", stmnt).groups() ]) except AttributeError: pass job_threads = max(job_threads1, job_threads2) return P.run(stmnt, **kwargs)
def pre_process(self, infile, outfile, params): statements = [] infile = IOTools.snip(infile, ".bam") tmpdir = P.get_parameters_as_namedtuple().tmpdir outprefix = os.path.basename(os.path.dirname(outfile)) if params.copy_bam: statements.append("cp @[email protected] @[email protected]; " "cp @[email protected] @[email protected]") if params.split_bam: statements.append("daisy bam2bam-split-reads " "-i @[email protected] " "-o - " "{params.split_bam} " "--log={outfile}_split_bam.log " "2> {outfile}_split_bam.err " "> @[email protected]; ".format(**locals())) if params.bam2bam: statements.append("daisy bam2bam " "--stdin=@[email protected] " "{params.bam2bam} " "--log={outfile}_bam2bam.log " "2> {outfile}_bam2bam.err " "> @[email protected]; ".format(**locals())) if params.region: statements.append( "samtools view -b @[email protected] {} > @[email protected]".format( params.region)) if params.shift_quality: statements.append("samtools view -h @[email protected] " "| perl -lane " "'if(/^@/) {{print; next;}} " "@qual=split(//, $F[10]); " "$_=chr(ord($_)+{}) for (@qual); " "$F[10]=join(\"\",@qual); " "print join(\"\\t\", @F)' " "| samtools view -bS > @[email protected]".format( params.shift_quality)) if is_true(params.remove_chr): # also substitute chrM to MT. statements.append("samtools view -h @[email protected] " "| awk -v OFS='\\t' '" "$1 == \"@SQ\" " "{{ gsub(\"chrM\", \"chrMT\", $2); " " gsub(\"chr\", \"\", $2); print; next }} " "{{ gsub(\"chrM\", \"chrMT\", $3); " " gsub(\"chr\", \"\", $3); print; next}} '" "| samtools view -bS - " "2> {outfile}_remove_chr.log " "> @[email protected]; ".format(**locals())) if not statements: return infile + ".bam", "", "" filename, build_statement, cleanup_statement = P.join_statements( statements, infile) filename += ".bam" build_statement += ( "; samtools index {filename} >& {outfile}.index.log".format( **locals())) return filename, build_statement, cleanup_statement