def _bowtie_for_innerdist(start, fastq_file, pair_file, ref_file, out_base, out_dir, config, remove_workdir=False): work_dir = os.path.join(out_dir, "innerdist_estimate") if os.path.exists(work_dir): shutil.rmtree(work_dir) safe_makedir(work_dir) extra_args = ["-s", str(start), "-u", "250000"] out_sam = bowtie.align(fastq_file, pair_file, ref_file, out_base, work_dir, config, extra_args) dists = [] with closing(pysam.Samfile(out_sam)) as work_sam: for read in work_sam: if not read.is_unmapped and read.is_read1: dists.append(abs(read.isize) - 2 * read.rlen) return dists
def _estimate_paired_innerdist(fastq_file, pair_file, ref_file, out_base, out_dir, config): """Use Bowtie to estimate the inner distance of paired reads. """ work_dir = os.path.join(out_dir, "innerdist_estimate") safe_makedir(work_dir) extra_args = ["-s", "1000000", "-u", "250000"] out_sam = bowtie.align(fastq_file, pair_file, ref_file, out_base, work_dir, config, extra_args) dists = [] with closing(pysam.Samfile(out_sam)) as work_sam: for read in work_sam: if not read.is_unmapped and read.is_read1: dists.append(abs(read.isize) - 2 * read.rlen) return int(round(numpy.mean(dists))), int(round(numpy.std(dists)))