code: def backbone_bond_lengths(self):
          
          bond_lengths = dict(
              n_ca=[distance(r['N'], r['CA'])
                    for r in self.get_monomers(ligands=False)],
              ca_c=[distance(r['CA'], r['C'])
                    for r in self.get_monomers(ligands=False)],
              c_o=[distance(r['C'], r['O'])
                   for r in self.get_monomers(ligands=False)],
              c_n=[distance(r1['C'], r2['N']) for r1, r2 in [
                  (self[i], self[i + 1]) for i in range(len(self) - 1)]],
          )
          return bond_lengths
docs: Dictionary containing backbone bond lengths as lists of floats.
  
          Returns
          -------
          bond_lengths : dict
              Keys are `n_ca`, `ca_c`, `c_o` and `c_n`, referring to the
              N-CA, CA-C, C=O and C-N bonds respectively. Values are
              lists of floats : the bond lengths in Angstroms.
              The lists of n_ca, ca_c and c_o are of length k for
              a Polypeptide containing k Residues. The list of c_n bonds
              is of length k-1 for a Polypeptide containing k Residues
              (C-N formed between successive `Residue` pairs).