Beispiel #1
0
def regions_worker(worker_id, configuration, regions_chuncks, regions_dict,
                   msg_dict, errors_dict):
    try:

        args = {}
        if "debug" in configuration:
            args["debug"] = configuration["debug"]

        args["sam_read_config"] = configuration["sam_read_config"]
        windowsize = configuration["window_size"]

        chromosome = configuration["chromosome"]
        ref_filename = configuration["reference_file"]['filename']

        tstart = time.perf_counter()
        for rid in regions_chuncks.keys():
            worker_chunck = regions_chuncks[rid][worker_id]

            args["start_idx"] = worker_chunck[0]
            args["end_idx"] = worker_chunck[1]
            args["windowsize"] = windowsize

            wga_windows = []
            no_wga_windows = []

            bam_filename = configuration['wga_file']['filename']
            wga_windows = extract_windows(chromosome=chromosome,
                                          ref_filename=ref_filename,
                                          bam_filename=bam_filename,
                                          **args)

            bam_filename = configuration['no_wga_file']['filename']
            no_wga_windows = extract_windows(chromosome=chromosome,
                                             ref_filename=ref_filename,
                                             bam_filename=bam_filename,
                                             **args)

            regions_dict[rid][worker_id] = {
                "wga_windows": wga_windows,
                "no_wga_windows": no_wga_windows
            }
        tend = time.perf_counter()
        msg = ("Process {0} finished in {1} secs").format(
            worker_id, tend - tstart)
        msg_dict[worker_id] = msg
    except Exception as e:
        msg = "An exception occured in worker {0}. Exception message {1}".format(
            worker_id, str(e))
        errors_dict[worker_id] = msg
        return
    def make_no_wga_windows(self, chromosome, ref_filename, test_filename,
                            **kwargs):

        args = {
            "start_idx": self._start,
            "end_idx": self._end,
            "windowsize": self._w_size
        }

        if "quality_theshold" in kwargs:
            args["quality_theshold"] = kwargs["quality_theshold"]

        if "debug" in kwargs:
            args["debug"] = kwargs["debug"]

        windows = extract_windows(chromosome=chromosome,
                                  ref_filename=ref_filename,
                                  test_filename=test_filename,
                                  **args)

        print("{0} Start Window: Start/End idx {1}".format(
            INFO, windows[0].get_start_end_pos()))
        print("{0} End Window: Start/End idx {1}".format(
            INFO, windows[-1].get_start_end_pos()))
        self._windows[WindowType.NO_WGA] = windows
    def make_no_wga_windows(self, chromosome,
                            ref_filename,
                            bam_filename, **kwargs):

        args = {"start_idx": self._start,
                "end_idx": self._end,
                "windowsize": self._w_size}

        if "debug" in kwargs:
            args["debug"] = kwargs["debug"]

        args["sam_read_config"] = kwargs["sam_read_config"]

        windows = extract_windows(chromosome=chromosome,
                                  ref_filename=ref_filename,
                                  bam_filename=bam_filename,
                                  **args)

        print("{0} Region Start Window "
              "Coords: Start/End idx {1}".format(INFO, windows[0].start_end_pos))
        print("{0} Region End Window "
              "Coords: Start/End idx {1}".format(INFO, windows[-1].start_end_pos))
        self._windows[WindowType.NO_WGA] = windows