<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fit_heptad_register(crangles):
 """Attempts to fit a heptad repeat to a set of Crick angles. Parameters crangles: [float] A list of average Crick angles for the coiled coil. Returns ------- fit_data: [(float, float, float)] Sorted list of fits for each heptad position. """

    crangles = [x if x > 0 else 360 + x for x in crangles]
    hept_p = [x * (360.0 / 7.0) + ((360.0 / 7.0) / 2.0) for x in range(7)]
    ideal_crangs = [
        hept_p[0],
        hept_p[2],
        hept_p[4],
        hept_p[6],
        hept_p[1],
        hept_p[3],
        hept_p[5]
    ]
    full_hept = len(crangles) // 7
    ideal_crang_list = ideal_crangs * (full_hept + 2)  # This is dirty, too long but trimmed with zip
    fitting = []
    for i in range(7):
        ang_pairs = zip(crangles, ideal_crang_list[i:])
        ang_diffs = [abs(y - x) for x, y in ang_pairs]
        fitting.append((i, numpy.mean(ang_diffs), numpy.std(ang_diffs)))
    return sorted(fitting, key=lambda x: x[1])