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)
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
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