<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def calc_scores_for_node(G, node, depth_limit=22, number_of_recommendations=None, impact_mode=10):
 """Calculate the score of multiple records."""

    n, w, dep, _ = dfs_edges(G, node, depth_limit, "Record")
    count_total_ways = len(n)
    # print "Number of paths {}".format(len(n))
    if impact_mode == 0:
        impact_div = 12
    elif impact_mode == 1:
        impact_div = 1000
    elif impact_mode == 2:
        impact_div = 100
    elif impact_mode == 10:
        impact_div = count_total_ways
    elif impact_mode == 11:
        impact_div = count_total_ways/2

    d_ = {'Nodes': n, 'Scores': w, 'Depth': dep}
    d = pd.DataFrame(data=d_)
    del n, w, dep, d_
    n, w, dep = None, None, None
    gc.collect()

    nodes = array('I')
    weight_high = array('f')
    weight_new = array('f')
    ways = array('I')
    nodes_with_weight = d.groupby('Nodes')

    del d
    gc.collect()
    # print "Number nodes {}".format(len(nodes_with_weight))
    for node, end_nodes in nodes_with_weight:
        nodes.append(node)
        new_score, highest_score, number_of_paths = \
            calc_weight_of_multiple_paths(end_nodes, impact_div)
        weight_high.append(highest_score)
        weight_new.append(new_score)
        ways.append(number_of_paths)

    new_weights_d = {'Node': nodes, 'Score_Highest': weight_high,
                     'Score': weight_new, 'Paths': ways}
    new_weights = pd.DataFrame(data=new_weights_d)
    del new_weights_d, nodes, weight_high, weight_new, ways
    gc.collect()
    # Numpy sort by score
    new_weights = new_weights.sort_values(by='Score', ascending=False)
    new_weights = new_weights[:number_of_recommendations]

    return new_weights