<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def coupling_efficiency(mode_solver, fibre_mfd,
                        fibre_offset_x=0, fibre_offset_y=0,
                        n_eff_fibre=1.441):
    '''
    Finds the coupling efficiency between a solved
    fundamental mode and a fibre of given MFD.

    Args:
        mode_solver (_ModeSolver): Mode solver that
            has found a fundamental mode.
        fibre_mfd (float): The mode-field diameter
            (MFD) of the fibre.
        fibre_offset_x (float): Offset the fibre
            from the centre position of the window
            in x. Default is 0 (no offset).
        fibre_offset_y (float): Offset the fibre
            from the centre position of the window
            in y. Default is 0 (no offset).
        n_eff_fibre (float): The effective index
            of the fibre mode.  Default is 1.441.

    Returns:
        float: The power coupling efficiency.
    '''
    etas = []

    gaus = _make_gaussian(mode_solver._structure.xc, mode_solver._structure.yc,
                          fibre_mfd, fibre_offset_x, fibre_offset_y)

    for mode, n_eff in zip(mode_solver.modes, mode_solver.n_effs):
        o = abs(_overlap(mode, gaus))
        t = abs(transmission(n_eff, n_eff_fibre))
        eta = o * t
        etas.append(eta)

    return etas