Calculates the expression of all rows in the sample_frame relative to
    each of the ref_targets. Used in rank_targets.

    :param DataFrame sample_frame: A sample data frame.
    :param iterable ref_targets: A sequence of targets from the Target column of
        the sample frame.
    :param string ref_sample: The name of the sample to which expression should
        be referenced.
    :return: a DataFrame of relative expression; rows represent rows of the
        sample_frame and columns represent each of the ref_targets.
    :rtype: DataFrame

def collect_expression(sample_frame, ref_targets, ref_sample):
    """Calculates the expression of all rows in the sample_frame relative to
    each of the ref_targets. Used in rank_targets.

    :param DataFrame sample_frame: A sample data frame.
    :param iterable ref_targets: A sequence of targets from the Target column of
        the sample frame.
    :param string ref_sample: The name of the sample to which expression should
        be referenced.
    :return: a DataFrame of relative expression; rows represent rows of the
        sample_frame and columns represent each of the ref_targets.
    :rtype: DataFrame
    """
    by_gene = {'Sample': sample_frame['Sample'], 'Target': sample_frame['Target']}
    for target in ref_targets:
        by_gene[target] = expression_ddcq(sample_frame, target, ref_sample)
    return pd.DataFrame(by_gene)