get the parameter identifiability as a pandas dataframe

        Parameters
        ----------
        singular_value : int
            the singular spectrum truncation point. Defaults to minimum of
            non-zero-weighted observations and adjustable parameters
        precondition : bool
            flag to use the preconditioned hessian (xtqt + sigma_theta^-1).
            Default is False

        Returns
        -------
        pandas.DataFrame : pandas.DataFrame
            A pandas dataframe of the V_1**2 Matrix with the
            identifiability in the column labeled "ident"

def get_identifiability_dataframe(self,singular_value=None,precondition=False):
        """get the parameter identifiability as a pandas dataframe

        Parameters
        ----------
        singular_value : int
            the singular spectrum truncation point. Defaults to minimum of
            non-zero-weighted observations and adjustable parameters
        precondition : bool
            flag to use the preconditioned hessian (xtqt + sigma_theta^-1).
            Default is False

        Returns
        -------
        pandas.DataFrame : pandas.DataFrame
            A pandas dataframe of the V_1**2 Matrix with the
            identifiability in the column labeled "ident"

        """
        if singular_value is None:
            singular_value = int(min(self.pst.nnz_obs, self.pst.npar_adj))
        #v1_df = self.qhalfx.v[:, :singular_value].to_dataframe() ** 2
        xtqx = self.xtqx
        if precondition:
            xtqx = xtqx + self.parcov.inv
        #v1_df = self.xtqx.v[:, :singular_value].to_dataframe() ** 2
        v1_df = xtqx.v[:, :singular_value].to_dataframe() ** 2
        v1_df["ident"] = v1_df.sum(axis=1)
        return v1_df