<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def backbone(self):
 """Generates a new `Assembly` containing only the backbone atoms. Notes ----- Metadata is not currently preserved from the parent object. Sequence data is retained, but only the main chain atoms are retained. Returns ------- bb_assembly : ampal.Protein `Assembly` containing only the backbone atoms of the original `Assembly`. """

        bb_molecules = [
            p.backbone for p in self._molecules if hasattr(p, 'backbone')]
        bb_assembly = Assembly(bb_molecules, assembly_id=self.id)
        return bb_assembly