def describe_features(self, traj):
        """Return a list of dictionaries describing the dihderal features.

        Parameters
        ----------
        traj : mdtraj.Trajectory
            The trajectory to describe

        Returns
        -------
        feature_descs : list of dict
            Dictionary describing each feature with the following information
            about the atoms participating in each dihedral
                - resnames: unique names of residues
                - atominds: the four atom indicies
                - resseqs: unique residue sequence ids (not necessarily
                  0-indexed)
                - resids: unique residue ids (0-indexed)
                - featurizer: Alpha Angle
                - featuregroup: the type of dihedral angle and whether sin or
                  cos has been applied.
        """
        feature_descs = []
        # fill in the atom indices using just the first frame
        self.partial_transform(traj[0])
        top = traj.topology
        if self.atom_indices is None:
            raise ValueError("Cannot describe features for "
                             "trajectories with "
                              "fewer than 4 alpha carbon"
                              "using AlphaAngleFeaturizer.")

        aind_tuples = self.atom_indices

        zippy = zippy_maker(aind_tuples, top)

        if self.sincos:
            zippy = itertools.product(["AlphaAngle"], ["N/A"], ['cos', 'sin'], zippy)
        else:
            zippy = itertools.product(["AlphaAngle"], ["N/A"], ['nosincos'], zippy)

        feature_descs.extend(dict_maker(zippy))

        return feature_descs