def _setup_pdf(self):
        logger.info("{header} setup ProteinDF condition".format(header=self.header))

        for frg_name, frg in self.fragments():
            frg.set_basisset(self.pdfparam)
        self.pdfparam.molecule = self.frame_molecule

        # num_of_electrons
        # calc from the molecule data
        num_of_electrons = self.frame_molecule.sum_of_atomic_number()
        logger.info(
            "{header} the number of electrons = {elec}".format(
                header=self.header, elec=num_of_electrons
            )
        )
        if self.charge != 0:
            logger.info("specify the charge => {}".format(self.charge))
            num_of_electrons -= self.charge  # 電子(-)数と電荷(+)の正負が逆なことに注意
            self.pdfparam.num_of_electrons = num_of_electrons
            logger.info(
                "{header} update the number of electrons => {elec}".format(
                    header=self.header, elec=self.pdfparam.num_of_electrons
                )
            )
        if self.pdfparam.num_of_electrons % 2 != 0:
            logger.warning(
                "{header} the number of electrons is not even.".format(
                    header=self.header
                )
            )