예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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