Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
    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)
Beispiel #5
0
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
Beispiel #6
0
            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)