<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def valid_backbone_bond_angles(self, atol=20):
 """True if all backbone bond angles are within atol degrees of their expected values. Notes ----- Ideal bond angles taken from [1]. References .. [1] Schulz, G. E, and R. Heiner Schirmer. Principles Of Protein Structure. New York: Springer-Verlag, 1979. Parameters atol : float, optional Tolerance value in degrees for the absolute deviation away from ideal backbone bond angles. """

        bond_angles = self.backbone_bond_angles
        omegas = [x[0] for x in measure_torsion_angles(self)]
        trans = ['trans' if (omega is None) or (
            abs(omega) >= 90) else 'cis' for omega in omegas]
        ideal_n_ca_c = [ideal_backbone_bond_angles[x]['n_ca_c'] for x in trans]
        ideal_ca_c_o = [ideal_backbone_bond_angles[trans[i + 1]]
                        ['ca_c_o'] for i in range(len(trans) - 1)]
        ideal_ca_c_o.append(ideal_backbone_bond_angles['trans']['ca_c_o'])
        ideal_ca_c_n = [ideal_backbone_bond_angles[x]['ca_c_n']
                        for x in trans[1:]]
        ideal_c_n_ca = [ideal_backbone_bond_angles[x]['c_n_ca']
                        for x in trans[1:]]
        a1 = numpy.allclose(bond_angles['n_ca_c'], [ideal_n_ca_c], atol=atol)
        a2 = numpy.allclose(bond_angles['ca_c_o'], [ideal_ca_c_o], atol=atol)
        a3 = numpy.allclose(bond_angles['ca_c_n'], [ideal_ca_c_n], atol=atol)
        a4 = numpy.allclose(bond_angles['c_n_ca'], [ideal_c_n_ca], atol=atol)
        return all([a1, a2, a3, a4])