Пример #1
0
 def _update_grid(self):
     self.grid.boxes = self.grid.init_boxes(self.grid.rtboxes,
                                            self.grid.mzboxes)
     roi_aligner = RoiAligner(rt_tolerance=self.rt_tolerance)
     for inj_num, inj in enumerate(self.observed_rois):
         fn = self.drift_models[inj_num].get_estimator(inj_num)
         rt_shifts = [-fn(roi, inj_num)[0] for roi in inj]
         roi_aligner.add_sample(self.observed_rois,
                                self.grid.sample_number,
                                rt_shifts=rt_shifts)
     boxes = roi_aligner.get_boxes(
         method=self.box_method)  # TODO might need to add intensity here
     for box in boxes:
         self.grid.register_box(box)
Пример #2
0
def top_n_box_experiment(datasets,
                         base_chemicals,
                         rt_range,
                         boxes_params,
                         dataset_group_list,
                         isolation_width,
                         mz_tol,
                         min_ms1_intensity,
                         min_roi_intensity,
                         min_roi_length,
                         N,
                         rt_tol,
                         ionisation_mode=POSITIVE):
    env_list = []
    aligner = RoiAligner()
    boxes = None
    boxes_intensity = None
    for i in range(len(datasets)):
        mass_spec = IndependentMassSpectrometer(ionisation_mode, datasets[i])
        controller = TopNBoxRoiController(ionisation_mode,
                                          isolation_width,
                                          mz_tol,
                                          min_ms1_intensity,
                                          min_roi_intensity,
                                          min_roi_length,
                                          boxes_params=boxes_params,
                                          boxes=boxes,
                                          boxes_intensity=boxes_intensity,
                                          N=N,
                                          rt_tol=rt_tol)
        env = Environment(mass_spec,
                          controller,
                          rt_range[0],
                          rt_range[1],
                          progress_bar=True)
        env.run()
        env_list.append(env)
        rois = env.controller.live_roi + env.controller.dead_roi
        aligner.add_sample(rois, 'sample_' + str(i), dataset_group_list[i])
        boxes = aligner.get_boxes()
        boxes_intensity = aligner.get_max_frag_intensities()
    final_evaluation = evaluate_multiple_simulated_env(
        env_list, base_chemicals=base_chemicals)
    return env_list, final_evaluation
Пример #3
0
def box_controller_experiment_evaluation(datasets,
                                         group_list,
                                         min_rt,
                                         max_rt,
                                         N,
                                         isolation_window,
                                         mz_tol,
                                         rt_tol,
                                         min_ms1_intensity,
                                         min_roi_intensity,
                                         min_roi_length,
                                         boxes_params,
                                         base_chemicals=None,
                                         mzmine_files=None,
                                         rt_tolerance=100,
                                         experiment_dir=None,
                                         progress_bar=False):
    if base_chemicals is not None or mzmine_files is not None:
        env_list = []
        mzml_files = []
        source_files = ['sample_' + str(i) for i in range(len(datasets))]
        boxes = []
        boxes_intensity = []
        aligner = RoiAligner()
        for i in range(len(datasets)):
            mass_spec = IndependentMassSpectrometer(POSITIVE, datasets[i])
            controller = TopNBoxRoiController(POSITIVE,
                                              isolation_window,
                                              mz_tol,
                                              min_ms1_intensity,
                                              min_roi_intensity,
                                              min_roi_length,
                                              boxes_params=boxes_params,
                                              boxes=boxes,
                                              boxes_intensity=boxes_intensity,
                                              N=N,
                                              rt_tol=rt_tol)
            env = Environment(mass_spec,
                              controller,
                              min_rt,
                              max_rt,
                              progress_bar=progress_bar)
            env.run()
            if progress_bar is False:
                print('Processed dataset ' + str(i))
            env_list.append(env)
            rois = env.controller.live_roi + env.controller.dead_roi
            aligner.add_sample(rois, 'sample_' + str(i), group_list[i])
            boxes = aligner.get_boxes()
            boxes_intensity = aligner.get_max_frag_intensities()
            if base_chemicals is None:
                file_link = os.path.join(experiment_dir,
                                         source_files[i] + '.mzml')
                mzml_files.append(file_link)
                env.write_mzML(experiment_dir, source_files[i] + '.mzml')
        if base_chemicals is not None:
            evaluation = evaluate_multiple_simulated_env(
                env_list, base_chemicals=base_chemicals)
        else:
            roi_aligner = RoiAligner(rt_tolerance=rt_tolerance)
            for i in range(len(mzml_files)):
                roi_aligner.add_picked_peaks(mzml_files[i], mzmine_files[i],
                                             source_files[i], 'mzmine')
            evaluation = evaluate_multi_peak_roi_aligner(
                roi_aligner, source_files)
        return env_list, evaluation
    else:
        return None, None