def _merge_hla_fastq_inputs(data): """Merge HLA inputs from a split initial alignment. """ hla_key = ["hla", "fastq"] hla_sample_files = [ x for x in (tz.get_in(hla_key, data) or []) if x and x != "None" ] merged_hlas = None if hla_sample_files: out_files = collections.defaultdict(list) for hla_file in utils.flatten(hla_sample_files): rehla = re.search(r".hla.(?P<hlatype>[\w-]+).fq", hla_file) if rehla: hlatype = rehla.group("hlatype") out_files[hlatype].append(hla_file) if len(out_files) > 0: hla_outdir = utils.safe_makedir( os.path.join(dd.get_work_dir(data), "align", dd.get_sample_name(data), "hla")) merged_hlas = [] for hlatype, files in out_files.items(): out_file = os.path.join( hla_outdir, "%s-%s.fq" % (dd.get_sample_name(data), hlatype)) optitype.combine_hla_fqs([(hlatype, f) for f in files], out_file, data) merged_hlas.append(out_file) data = tz.update_in(data, hla_key, lambda x: merged_hlas) return data
def _merge_hla_fastq_inputs(data): """Merge HLA inputs from a split initial alignment. """ hla_key = ["hla", "fastq"] hla_sample_files = [x for x in tz.get_in(hla_key, data, []) if x and x != "None"] if hla_sample_files: out_files = collections.defaultdict(list) for hla_files in hla_sample_files: for hla_file in hla_files: rehla = re.search(".hla.(?P<hlatype>[\w-]+).fq", hla_file) if rehla: hlatype = rehla.group("hlatype") out_files[hlatype].append(hla_file) if len(out_files) > 0: hla_outdir = utils.safe_makedir(os.path.join(dd.get_work_dir(data), "align", dd.get_sample_name(data), "hla")) merged_hlas = [] for hlatype, files in out_files.items(): out_file = os.path.join(hla_outdir, "%s-%s.fq" % (dd.get_sample_name(data), hlatype)) optitype.combine_hla_fqs([(hlatype, f) for f in files], out_file, data) merged_hlas.append(out_file) data = tz.update_in(data, hla_key, lambda x: merged_hlas) else: data = tz.update_in(data, hla_key, lambda x: None) return data
def _merge_hla_fastq_inputs(data): """Merge HLA inputs from a split initial alignment. """ hla_key = ["hla", "fastq"] hla_dirs = tz.get_in(hla_key, data) hla_outdir = None if hla_dirs: hla_files = collections.defaultdict(list) for hla_dir in hla_dirs: if hla_dir and hla_dir != "None": for hla_file in sorted(list(glob.glob(os.path.join(hla_dir, ".*.fq")))): hlatype = re.search(".hla.(?P<hlatype>[\w-]+).fq", hla_file) hla_files[hlatype].append(hla_file) if len(hla_files) > 0: hla_outdir = os.path.join(dd.get_work_dir(data), "align", dd.get_sample_name(data), "hla") for hlatype, files in hla_files: out_file = os.path.join(hla_outdir, "%s-%s.fq" % (dd.get_sample_name(data), hlatype)) optitype.combine_hla_fqs(files, out_file, data) data = tz.update_in(data, hla_key, lambda x: hla_outdir) return data
def _merge_hla_fastq_inputs(data): """Merge HLA inputs from a split initial alignment. """ hla_key = ["hla", "fastq"] hla_dirs = tz.get_in(hla_key, data) hla_outdir = None if hla_dirs: if not isinstance(hla_dirs, (list, tuple)): hla_dirs = [hla_dirs] hla_files = collections.defaultdict(list) for hla_dir in hla_dirs: if hla_dir and hla_dir != "None": for hla_file in sorted(list(glob.glob(os.path.join(hla_dir, ".*.fq")))): hlatype = re.search(".hla.(?P<hlatype>[\w-]+).fq", hla_file) hla_files[hlatype].append(hla_file) if len(hla_files) > 0: hla_outdir = os.path.join(dd.get_work_dir(data), "align", dd.get_sample_name(data), "hla") for hlatype, files in hla_files: out_file = os.path.join(hla_outdir, "%s-%s.fq" % (dd.get_sample_name(data), hlatype)) optitype.combine_hla_fqs(files, out_file, data) data = tz.update_in(data, hla_key, lambda x: hla_outdir) return data