Processes a records into a `Monomer`.

        Parameters
        ----------
        monomer_info : (set, OrderedDict)
            Labels and data for a monomer.
        parent : ampal.Polymer
            `Polymer` used to assign `ampal_parent` on created
            `Monomer`.
        mon_cls : `Monomer class or subclass`, optional
            A `Monomer` class can be defined explicitly.

def proc_monomer(self, monomer_info, parent, mon_cls=False):
        """Processes a records into a `Monomer`.

        Parameters
        ----------
        monomer_info : (set, OrderedDict)
            Labels and data for a monomer.
        parent : ampal.Polymer
            `Polymer` used to assign `ampal_parent` on created
            `Monomer`.
        mon_cls : `Monomer class or subclass`, optional
            A `Monomer` class can be defined explicitly.
        """
        monomer_labels, monomer_data = monomer_info
        if len(monomer_labels) > 1:
            raise ValueError(
                'Malformed PDB, single monomer id with '
                'multiple labels. {}'.format(monomer_labels))
        else:
            monomer_label = list(monomer_labels)[0]
        if mon_cls:
            monomer_class = mon_cls
            het = True
        elif monomer_label[0] == 'ATOM':
            if monomer_label[2] in standard_amino_acids.values():
                monomer_class = Residue
            else:
                monomer_class = Nucleotide
            het = False
        else:
            raise ValueError('Unknown Monomer type.')
        monomer = monomer_class(
            atoms=None, mol_code=monomer_label[2], monomer_id=monomer_label[1],
            insertion_code=monomer_label[3], is_hetero=het, ampal_parent=parent
        )
        monomer.states = self.gen_states(monomer_data.values(), monomer)
        monomer._active_state = sorted(monomer.states.keys())[0]
        return monomer