docs: def from_structure(cls, original, filter_residues):
          """
          Loads structure as a protein, exposing
          protein-specific methods.
          """
          P = cls(original.id)
          P.full_id = original.full_id
          
          for child in original.child_dict.values():
              copycat = deepcopy(child)
              P.add(copycat)
          
          # Discriminate non-residues (is_aa function)
          remove_list = []
          if filter_residues:
              for model in P:
                  for chain in model:
                      for residue in chain:
                          if residue.get_id()[0] != ' ' or not is_aa(residue):
                              remove_list.append(residue)
              
              for residue in remove_list:
                  residue.parent.detach_child(residue.id)
              
              for chain in P.get_chains(): # Remove empty chains
                  if not len(chain.child_list):
                      model.detach_child(chain.id)
                      
          P.header = deepcopy(original.header)
          P.xtra = deepcopy(original.xtra)
          
          return P