def score(data_row,
          positives,
          negatives,
          strategy = "+"):

    """
    -- DESCRIPTION --
    Implementations of the scoring functions described in the thesis in /docs.
    This function is designed to be applied row-wise to a pandas dataframe. For
    example usage refer to the scoring workflow in /workflows.
      PARAMS:
        - data_row (pandas row): row of pandas dataframe
        - positives (list of strings/keys): list of positive interactions
        - negatives (list of strings/keys): list of negative interactions
        - strategy (string): one of "+", "++", "+-", "++--"
            strategy/scoring function to be used
            DEFAULT: "+"
      RETURNS:
        - score (int)
    """

    score = 0
    # strategy 1
    if strategy == "+":
        for interaction in positives:
            if data_row[interaction] > 0:
                score = score + 1
    # strategy 2
    elif strategy == "++":
        for interaction in positives:
            score = score + data_row[interaction]
    # strategy 3
    elif strategy == "+-":
        for interaction in positives:
            if data_row[interaction] > 0:
                score = score + 1
        for interaction in negatives:
            if data_row[interaction] > 0:
                score = score - 1
    # strategy 4
    elif strategy == "++--":
        for interaction in positives:
            score = score + data_row[interaction]
        for interaction in negatives:
            score = score - data_row[interaction]
    else:
        pass

    return score