def evaluate_mzml(mzml_file, picked_peaks_file, half_isolation_window): boxes = load_picked_boxes(picked_peaks_file) mz_file = MZMLFile(mzml_file) scans2boxes, boxes2scans = map_boxes_to_scans( mz_file, boxes, half_isolation_window=half_isolation_window) coverage = len(boxes2scans) return coverage
def run_coverage_evaluation(box_file, mzml_file, half_isolation_window): boxes = load_picked_boxes(box_file) mz_file = MZMLFile(mzml_file) scans2boxes, boxes2scans = map_boxes_to_scans( mz_file, boxes, half_isolation_window=half_isolation_window) coverage = len(boxes2scans) / len(boxes) return coverage
def load_xcms_boxes(box_file): boxes = load_picked_boxes(box_file) for box in boxes: box.rt_in_seconds /= 60. box.rt_range_in_seconds = [r / 60. for r in box.rt_range_in_seconds] box.rt /= 60. box.rt_range = [r / 60. for r in box.rt_range] return boxes
def add_picked_peaks(self, mzml_file, peak_file, sample_name, picking_method='mzmine', sample_type=None, half_isolation_window=0, allow_last_overlap=False, rt_shifts=None, mz_shifts=None): """ TODO: add docstring comment Adds picked peak information to the aligner :param mzml_file: ??? :param peak_file: ??? :param sample_name: ??? :param picking_method: ??? :param sample_type: ??? :param half_isolation_window: ??? :param allow_last_overlap: ??? :param rt_shifts: ??? :param mz_shifts: ??? """ self.sample_names.append(sample_name) self.sample_types.append(sample_type) these_peaks = [] frag_intensities = [] # load boxes if picking_method == 'mzmine': temp_boxes = load_picked_boxes(peak_file) elif picking_method == 'peakonly': temp_boxes = load_peakonly_boxes(peak_file) # not tested elif picking_method == 'xcms': temp_boxes = load_xcms_boxes(peak_file) # not tested else: sys.exit('Method not supported') temp_boxes = update_picked_boxes(temp_boxes, rt_shifts, mz_shifts) self.list_of_boxes.append(temp_boxes) # Searching in boxes mzml = MZMLFile(mzml_file) scans2boxes, boxes2scans = map_boxes_to_scans( mzml, temp_boxes, half_isolation_window=half_isolation_window, allow_last_overlap=allow_last_overlap) precursor_intensities, scores = get_precursor_intensities( boxes2scans, temp_boxes, 'max') for i, box in enumerate(temp_boxes): source_id = sample_name + '_' + str(i) peak_mz = box.mz peak_rt = box.rt_in_seconds these_peaks.append( Peak(peak_mz, peak_rt, box.height, sample_name, source_id)) frag_intensities.append(precursor_intensities[i]) # do alignment, adding the peaks and boxes, and recalculating # max frag intensity self._align(these_peaks, temp_boxes, frag_intensities, sample_name)
def extract_boxes(seed_file, out_dir, mzmine_command, xml_file): """ Extract peak picked boxes using MzMine2 peak picking :param seed_file: the seed file in mzML format, should be a DDA file (containing MS1 and MS2 scans) :param mzmine_command: path to MzMine2 batch file :param xml_file: path to MzMine2 XML config file :return: a list of boxes """ # construct the path to the resulting peak picked CSV seed_picked_peaks_csv = get_peak_picked_csv(seed_file) logger.info('Peak picking, results will be in %s' % seed_picked_peaks_csv) # run peak picking using MzMine2 pick_peaks([seed_file], xml_template=xml_file, output_dir=out_dir, mzmine_command=mzmine_command) # the peak picked csv must exist at this point assert Path(seed_picked_peaks_csv).is_file() boxes = load_picked_boxes(seed_picked_peaks_csv) logger.info('Loaded %d boxes from the seed file' % len(boxes)) return boxes
print("File exists") else: print("File does not exist, please specify an mzml file") sys.exit(0) else: mzml_file_name = args.mzml_file print() print() print("Loading: {}".format(mzml_file_name)) mzml_file = MZMLFile(mzml_file_name) print() print() print("Loading: {}".format(args.box_file)) boxes = load_picked_boxes(args.box_file) print("Loaded {} boxes".format(len(boxes))) print() print() print("Adding ROIs to boxes") add_rois_to_boxes(boxes, mzml_file) print() print() print("Making edges") edges = make_edges(boxes, scan_start_times, scan_levels, args.min_ms1_intensity) print("{} edges made".format(len(edges))) scan_names, box_names, _ = zip(*edges)