def pickup_density_matrix(self, runtype="rks"):
        """
        密度行列を各フラグメントに割り当てる
        """
        if self.is_finished_pickup_density_matrix:
            logger.info(
                "{header} pickup density matrix has done.".format(header=self.header)
            )
            return

        self.cd_work_dir("pickup density matrix")

        # post-SCF
        self._grouping_fragments()
        self._switch_fragments()

        dens_mat_path = self.pdfparam.get_density_matrix_path(runtype=runtype)
        logger.info(
            "{header} reference density matrix: {path}".format(
                header=self.header, path=dens_mat_path
            )
        )

        global_dim = 0
        for frg_name, frg in self.fragments():
            dim = frg.get_number_of_AOs()
            if dim > 0:
                frg_dens_mat_path = "Ppq.{}.{}.mat".format(runtype, frg_name)
                logger.info(
                    "{header} select [{start}:{end}] for {fragment}".format(
                        header=self.header,
                        fragment=frg_name,
                        start=global_dim,
                        end=global_dim + dim - 1,
                    )
                )

                # フラグメント対応部分を切り出す
                pdf.run_pdf(
                    [
                        self._cmds["mat-select"],
                        "-t",
                        global_dim,
                        "-l",
                        global_dim,
                        "-b",
                        global_dim + dim - 1,
                        "-r",
                        global_dim + dim - 1,
                        dens_mat_path,
                        frg_dens_mat_path,
                    ]
                )

                # select された行列を対称行列に変換
                pdf.run_pdf(
                    [self._cmds["mat-symmetrize"], frg_dens_mat_path, frg_dens_mat_path]
                )
                logger.debug(
                    "{header} density matrix for {fragment} was saved as {path}".format(
                        header=self.header, fragment=frg_name, path=frg_dens_mat_path
                    )
                )

                is_loadable = pdf.SymmetricMatrix.is_loadable(frg_dens_mat_path)
                assert is_loadable == True
                (row, col) = pdf.SymmetricMatrix.get_size(frg_dens_mat_path)
                assert row == dim
                assert row == col

                # 対称行列パスをフラグメントに登録
                frg.set_density_matrix(frg_dens_mat_path)

                global_dim += dim

        logger.is_finished_pickup_density_matrix = True
        self.save()
        self.restore_cwd()