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