def add_complements(marker_exp):
    """Adds columns representing gene complement to a gene expression matrix.

    Gene complements are represented simplistically: gene expression values for
    a given gene X are multiplied by -1 and become a new column, labeled X_negation.
    "High" expression values of X become "low" values of X_negation, and vice versa,
    where discrete expression corresponds to a "high" value, and discrete
    non-expression to a "low" value.

    marker_exp should have cell row labels, gene column labels, gene expression
    float values.

    :param marker_exp: gene expression DataFrame whose rows are cell
        identifiers, columns are gene identifiers, and values are float values
        representing gene expression.

    :returns: A DataFrame of same format as marker_exp, but with a new column
              added for each existing column label, representing the column
              label gene's complement.

    :rtype: pandas.DataFrame
    """
    for gene in marker_exp.columns:
        marker_exp[gene + '_negation'] = -marker_exp[gene]
    """
    for gene in marker_exp.columns:
        marker_exp[gene + '_c'] = max(marker_exp[gene]) - marker_exp[gene]
    """
    return marker_exp
